Compare commits

..

2 Commits

Author SHA1 Message Date
4df0a44ac9 upd: redesign 2026-02-12 17:52:19 +08:00
8012f7f322 redesign aplikasi
Deskripsi:
- update tema mode light dan dark pada fitur banner, lembaga desa, jabatan, anggota, dan diskusi umum
2026-02-11 17:04:57 +08:00
77 changed files with 252 additions and 218 deletions

View File

@@ -328,7 +328,7 @@ export default function DetailAnnouncement() {
accessibilityLabel="Download or share image"
disabled={loadingOpen}
>
<Text style={{ color: loadingOpen ? 'gray' : 'white', fontSize: 22 }}></Text>
<Text style={{ color: loadingOpen ? 'gray' : 'white', fontSize: 26 }}></Text>
</Pressable>
</View>
)}

View File

@@ -205,15 +205,16 @@ export default function CreateAnnouncement() {
{
fileForm.length > 0
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.icon + '20' }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
{
fileForm.map((item, index) => (
<BorderBottomItem
key={index}
borderType={fileForm.length > 1 ? "bottom" : "none"}
borderType={fileForm.length - 1 == index ? "none" : "bottom"}
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name}
bgColor="transparent"
titleWeight="normal"
onPress={() => { setIndexDelFile(index); setModalFile(true) }}
/>
@@ -232,7 +233,7 @@ export default function CreateAnnouncement() {
{
divisionMember.length > 0
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, { borderColor: colors.icon + '20' }]}>
{
divisionMember.map((item: { name: any; Division: any }, index: any) => {
return (
@@ -270,7 +271,7 @@ export default function CreateAnnouncement() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -258,7 +258,7 @@ export default function EditAnnouncement() {
{
(fileForm.length > 0 || dataFile.filter((val) => !val.delete).length > 0)
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.icon + '20' }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
{
dataFile.filter((val) => !val.delete).map((item, index) => (
@@ -268,6 +268,7 @@ export default function EditAnnouncement() {
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name + '.' + item.extension}
titleWeight="normal"
bgColor="transparent"
onPress={() => { setIndexDelFile({ id: item.id, cat: "oldFile" }); setModalFile(true) }}
/>
))
@@ -280,6 +281,7 @@ export default function EditAnnouncement() {
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name}
titleWeight="normal"
bgColor="transparent"
onPress={() => { setIndexDelFile({ id: index, cat: "newFile" }); setModalFile(true) }}
/>
))
@@ -295,7 +297,7 @@ export default function EditAnnouncement() {
{
dataMember.length > 0
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, { borderColor: colors.icon + '20' }]}>
{
dataMember.map((item: { name: any; Division: any }, index: any) => {
return (
@@ -334,7 +336,7 @@ export default function EditAnnouncement() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile.id, indexDelFile.cat) }}
/>

View File

@@ -110,9 +110,10 @@ export default function Announcement() {
key={index}
onPress={() => { router.push(`/announcement/${item.id}`) }}
borderType="bottom"
bgColor="transparent"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialIcons name="campaign" size={25} color={'#384288'} />
<View style={[Styles.iconContent]}>
<MaterialIcons name="campaign" size={25} color={'black'} />
</View>
}
title={item.title}

View File

@@ -163,7 +163,7 @@ export default function BannerList() {
</View>
:
<View style={[Styles.p15, Styles.mb100]}>
<Text style={[Styles.textDefault, Styles.cGray, { textAlign: 'center' }]}>Tidak ada data</Text>
<Text style={[Styles.textDefault, { textAlign: 'center' }]}>Tidak ada data</Text>
</View>
}
@@ -192,7 +192,7 @@ export default function BannerList() {
}}
/>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setModal(false)

View File

@@ -261,8 +261,8 @@ export default function DetailDiscussionGeneral() {
descEllipsize={false}
borderType="bottom"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialIcons name="chat" size={25} color={'#384288'} />
<View style={[Styles.iconContent]}>
<MaterialIcons name="chat" size={25} color={'black'} />
</View>
}
title={data?.title}
@@ -276,13 +276,13 @@ export default function DetailDiscussionGeneral() {
desc={data?.desc}
leftBottomInfo={
<View style={[Styles.rowItemsCenter]}>
<Ionicons name="chatbox-ellipses-outline" size={18} color="grey" style={Styles.mr05} />
<Text style={[Styles.textInformation, Styles.cGray, Styles.mb05]}>{dataKomentar.length} Komentar</Text>
<Ionicons name="chatbox-ellipses-outline" size={18} color={colors.dimmed} style={Styles.mr05} />
<Text style={[Styles.textInformation, { color: colors.dimmed }, Styles.mb05]}>{dataKomentar.length} Komentar</Text>
</View>
}
rightBottomInfo={
<View style={[Styles.rowItemsCenter]}>
<Text style={[Styles.textInformation, Styles.cGray, Styles.mb05]}>{data?.createdAt}</Text>
<Text style={[Styles.textInformation, { color: colors.dimmed }, Styles.mb05]}>{data?.createdAt}</Text>
</View>
}
/>
@@ -310,6 +310,7 @@ export default function DetailDiscussionGeneral() {
desc={item.comment}
rightBottomInfo={item.isEdited ? "Edited" : ""}
descEllipsize={detailMore.includes(item.id) ? false : true}
bgColor="transparent"
onPress={() => {
setDetailMore((prev: any) => {
if (prev.includes(item.id)) {
@@ -336,7 +337,7 @@ export default function DetailDiscussionGeneral() {
<View style={[
Styles.contentItemCenter,
Styles.w100,
{ backgroundColor: colors.card },
{ backgroundColor: colors.background },
viewEdit && Styles.borderTop
]}>
{
@@ -356,7 +357,6 @@ export default function DetailDiscussionGeneral() {
type="default"
round
placeholder="Kirim Komentar"
bg="white"
onChange={(val: string) => setSelectKomentar({ ...selectKomentar, comment: val })}
value={selectKomentar.comment}
multiline
@@ -370,7 +370,7 @@ export default function DetailDiscussionGeneral() {
Platform.OS == 'android' && Styles.mb12,
]}
>
<MaterialIcons name="send" size={25} style={(loadingSendKomentar || selectKomentar.comment == '' || regexOnlySpacesOrEnter.test(selectKomentar.comment) || data?.status === 2 || !data?.isActive || (!memberDiscussion && (entityUser.role == "user" || entityUser.role == "coadmin"))) ? Styles.cGray : Styles.cDefault} />
<MaterialIcons name="send" size={25} style={(loadingSendKomentar || selectKomentar.comment == '' || regexOnlySpacesOrEnter.test(selectKomentar.comment) || data?.status === 2 || !data?.isActive || (!memberDiscussion && (entityUser.role == "user" || entityUser.role == "coadmin"))) ? {color:colors.dimmed} : {color:colors.tint}} />
</Pressable>
}
/>
@@ -383,7 +383,6 @@ export default function DetailDiscussionGeneral() {
type="default"
round
placeholder="Kirim Komentar"
bg="white"
onChange={setKomentar}
value={komentar}
multiline
@@ -397,7 +396,7 @@ export default function DetailDiscussionGeneral() {
Platform.OS == 'android' && Styles.mb12,
]}
>
<MaterialIcons name="send" size={25} style={(loadingSendKomentar || komentar == '' || regexOnlySpacesOrEnter.test(komentar) || data?.status === 2 || !data?.isActive || (!memberDiscussion && (entityUser.role == "user" || entityUser.role == "coadmin"))) ? Styles.cGray : Styles.cDefault} />
<MaterialIcons name="send" size={25} style={(loadingSendKomentar || komentar == '' || regexOnlySpacesOrEnter.test(komentar) || data?.status === 2 || !data?.isActive || (!memberDiscussion && (entityUser.role == "user" || entityUser.role == "coadmin"))) ? {color: colors.dimmed} : {color:colors.tint}} />
</Pressable>
}
/>
@@ -423,7 +422,7 @@ export default function DetailDiscussionGeneral() {
onPress={() => { handleViewEditKomentar() }}
/>
<MenuItemRow
icon={<MaterialIcons name="delete" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
AlertKonfirmasi({

View File

@@ -149,7 +149,7 @@ export default function AddMemberDiscussionDetail() {
</View>
:
<Text style={[Styles.textDefault, Styles.cGray, Styles.pv05, { textAlign: 'center' }]}>Tidak ada member yang dipilih</Text>
<Text style={[Styles.textDefault, Styles.pv05, { textAlign: 'center', color: colors.dimmed }]}>Tidak ada member yang dipilih</Text>
}
<ScrollView
showsVerticalScrollIndicator={false}
@@ -162,7 +162,7 @@ export default function AddMemberDiscussionDetail() {
return (
<Pressable
key={index}
style={[Styles.itemSelectModal]}
style={[Styles.itemSelectModal, { borderColor: colors.icon + '20' }]}
onPress={() => {
!found && onChoose(item.id, item.name, item.img)
}}
@@ -172,7 +172,7 @@ export default function AddMemberDiscussionDetail() {
<View style={[Styles.ml10]}>
<Text style={[Styles.textDefault]}>{item.name}</Text>
{
found && <Text style={[Styles.textInformation, Styles.cGray]}>sudah menjadi anggota</Text>
found && <Text style={[Styles.textInformation, {color: colors.dimmed}]}>sudah menjadi anggota</Text>
}
</View>
</View>

View File

@@ -253,15 +253,16 @@ export default function CreateDiscussionGeneral() {
{
fileForm.length > 0
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10, { borderColor: colors.icon }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.icon + '20' }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
{
fileForm.map((item, index) => (
<BorderBottomItem
key={index}
borderType={fileForm.length > 1 ? "bottom" : "none"}
borderType={fileForm.length - 1 == index ? "none" : "bottom"}
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name}
bgColor="transparent"
titleWeight="normal"
onPress={() => { setIndexDelFile(index); setModalFile(true) }}
/>
@@ -296,17 +297,18 @@ export default function CreateDiscussionGeneral() {
<Text>Total {entitiesMember.length} Anggota</Text>
</View>
<View style={[Styles.borderAll, Styles.round10, Styles.p10, { borderColor: colors.icon }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, { borderColor: colors.icon + '20' }]}>
{
entitiesMember.map((item: { img: any; name: any; }, index: any) => {
return (
<BorderBottomItem
key={index}
borderType="bottom"
borderType={entitiesMember.length - 1 == index ? "none" : "bottom"}
icon={
<ImageUser src={`${ConstEnv.url_storage}/files/${item.img}`} size="sm" />
<ImageUser src={`${ConstEnv.url_storage}/files/${item.img}`} size="xs" />
}
title={item.name}
bgColor="transparent"
/>
)
})
@@ -332,7 +334,7 @@ export default function CreateDiscussionGeneral() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -229,8 +229,8 @@ export default function EditDiscussionGeneral() {
{
(fileForm.length > 0 || dataFile.filter((val) => !val.delete).length > 0)
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10, { borderColor: colors.icon }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.icon + '20' }]}>
<Text style={[Styles.textDefault]}>File</Text>
{
dataFile.filter((val) => !val.delete).map((item, index) => (
<BorderBottomItem
@@ -239,6 +239,7 @@ export default function EditDiscussionGeneral() {
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name + '.' + item.extension}
titleWeight="normal"
bgColor="transparent"
onPress={() => { setIndexDelFile({ id: item.id, cat: "oldFile" }); setModalFile(true) }}
/>
))
@@ -251,6 +252,7 @@ export default function EditDiscussionGeneral() {
icon={<MaterialCommunityIcons name="file-outline" size={25} color={colors.text} />}
title={item.name}
titleWeight="normal"
bgColor="transparent"
onPress={() => { setIndexDelFile({ id: index, cat: "newFile" }); setModalFile(true) }}
/>
))
@@ -263,7 +265,7 @@ export default function EditDiscussionGeneral() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile.id, indexDelFile.cat) }}
/>

View File

@@ -148,12 +148,13 @@ export default function Discussion() {
renderItem={({ item, index }: { item: Props, index: number }) => {
return (
<BorderBottomItem
bgColor="transparent"
key={index}
onPress={() => { router.push(`/discussion/${item.id}`) }}
borderType="bottom"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialIcons name="chat" size={25} color={'#384288'} />
<View style={[Styles.iconContent]}>
<MaterialIcons name="chat" size={25} color={'black'} />
</View>
}
title={item.title}
@@ -164,8 +165,8 @@ export default function Discussion() {
desc={item.desc.replace(/<[^>]*>?/gm, ' ').replace(/\r?\n|\r/g, ' ')}
leftBottomInfo={
<View style={[Styles.rowItemsCenter]}>
<Ionicons name="chatbox-ellipses-outline" size={18} color="grey" style={Styles.mr05} />
<Text style={[Styles.textInformation, Styles.cGray, Styles.mb05]}>Diskusikan</Text>
<Ionicons name="chatbox-ellipses-outline" size={18} color={colors.dimmed} style={Styles.mr05} />
<Text style={[Styles.textInformation, {color: colors.dimmed}, Styles.mb05]}>Diskusikan</Text>
</View>
}
rightBottomInfo={`${item.total_komentar} Komentar`}

View File

@@ -156,7 +156,7 @@ export default function CreateCalendarAddMember() {
return (
<Pressable
key={index}
style={[Styles.itemSelectModal]}
style={[Styles.itemSelectModal, {borderColor: colors.icon + '20'}]}
onPress={() => { onChoose(item.idUser, item.name, item.img) }}
>
<View style={[Styles.rowItemsCenter, Styles.w70]}>

View File

@@ -1,7 +1,6 @@
import InputSearch from "@/components/inputSearch";
import Skeleton from "@/components/skeleton";
import Text from "@/components/Text";
import { ColorsStatus } from "@/constants/ColorsStatus";
import Styles from "@/constants/Styles";
import { apiGetCalendarHistory } from "@/lib/api";
import { useAuthSession } from "@/providers/AuthProvider";
@@ -70,7 +69,7 @@ export default function CalendarHistory() {
<View>
<InputSearch onChange={(val) => setSearch(val)} />
</View>
<View style={[{ flex: 2, }]}>
<View style={[{ flex: 2 }, Styles.mt10]}>
{
loading ?
arrSkeleton.map((item, index) => (
@@ -83,7 +82,7 @@ export default function CalendarHistory() {
getItem={getItem}
renderItem={({ item, index }: { item: Props, index: number }) => {
return (
<View key={index} style={[{ flexDirection: 'row' }, Styles.mv05, activeTheme === 'dark' ? { backgroundColor: colors.card } : ColorsStatus.lightGreen, Styles.p10, Styles.round10, { borderBottomWidth: 1, borderColor: colors.background }]}>
<View key={index} style={[{ flexDirection: 'row' }, Styles.mb05, Styles.borderAll, { backgroundColor: colors.card }, Styles.p10, Styles.round05, { borderColor: colors.icon + '20' }]}>
<View style={[Styles.mr10, Styles.ph05]}>
<Text style={[Styles.textSubtitle]}>{String(item.dateStart)}</Text>
<Text style={[Styles.textDefault, { textAlign: 'center' }]}>{item.year}</Text>

View File

@@ -186,7 +186,7 @@ export default function DiscussionDivisionEdit() {
{
(fileForm.length > 0 || dataFile.filter((val) => !val.delete).length > 0)
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10, { borderColor: colors.background, backgroundColor: colors.card }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.background, backgroundColor: colors.card }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
{
dataFile.filter((val) => !val.delete).map((item, index) => (
@@ -221,7 +221,7 @@ export default function DiscussionDivisionEdit() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile.id, indexDelFile.cat) }}
/>

View File

@@ -297,7 +297,7 @@ export default function DiscussionDetail() {
showBack={true}
onPressLeft={() => router.back()}
right={
(entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision || isCreator ?
((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision || isCreator) ?
<HeaderRightDiscussionDetail
id={detail}
status={data?.status}
@@ -538,7 +538,7 @@ export default function DiscussionDetail() {
onPress={() => { handleViewEditKomentar() }}
/>
<MenuItemRow
icon={<MaterialIcons name="delete" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
AlertKonfirmasi({

View File

@@ -135,7 +135,7 @@ export default function CreateDiscussionDivision() {
{
fileForm.length > 0
&&
<View style={[Styles.borderAll, Styles.round10, Styles.p10, Styles.mb10, { borderColor: colors.background, backgroundColor: colors.card }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, Styles.mb10, { borderColor: colors.background, backgroundColor: colors.card }]}>
<Text style={[Styles.textDefaultSemiBold]}>File</Text>
{
fileForm.map((item, index) => (
@@ -157,7 +157,7 @@ export default function CreateDiscussionDivision() {
<DrawerBottom animation="slide" isVisible={isModalFile} setVisible={setModalFile} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -382,7 +382,7 @@ export default function DocumentDivision() {
showBack={(selectedFiles.length > 0 || dariSelectAll) ? false : true}
left={
<ButtonHeader
item={<MaterialIcons name="close" size={20} color="white" />}
item={<MaterialIcons name="close" size={25} color="white" />}
onPress={() => {
handleBatal();
}}
@@ -395,7 +395,7 @@ export default function DocumentDivision() {
selectedFiles.length > 0 || dariSelectAll ? (
<ButtonHeader
item={
<MaterialIcons name="checklist-rtl" size={20} color="white" />
<MaterialIcons name="checklist-rtl" size={25} color="white" />
}
onPress={() => {
handleSelectAll();
@@ -495,7 +495,7 @@ export default function DocumentDivision() {
</View>
</ScrollView>
{(selectedFiles.length > 0 || dariSelectAll) && (
<View style={[ColorsStatus.primary, Styles.bottomMenuSelectDocument]}>
<View style={[Styles.bottomMenuSelectDocument, { backgroundColor: colors.header }]}>
<View style={[Styles.rowItemsCenter, { justifyContent: "center" }]}>
<MenuItemRow
icon={

View File

@@ -199,7 +199,7 @@ export default function TaskDivisionAddFile() {
<DrawerBottom animation="slide" isVisible={isModal} setVisible={setModal} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -198,7 +198,7 @@ export default function CreateTaskDivision() {
<Text>Total {entitiesMember.length} Anggota</Text>
</View>
<View style={[Styles.borderAll, Styles.round10, Styles.p10, { backgroundColor: colors.card, borderColor: colors.background }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, { backgroundColor: colors.card, borderColor: colors.background }]}>
{entitiesMember.map(
(item: { img: any; name: any }, index: any) => {
return (
@@ -226,7 +226,7 @@ export default function CreateTaskDivision() {
<DrawerBottom animation="slide" isVisible={isModal} setVisible={setModal} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -13,8 +13,8 @@ import { ConstEnv } from "@/constants/ConstEnv"
import Styles from "@/constants/Styles"
import { apiDeleteMemberDivision, apiGetDivisionOneDetail, apiGetDivisionOneFeature, apiUpdateStatusAdminDivision } from "@/lib/api"
import { useAuthSession } from "@/providers/AuthProvider"
import { Feather, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"
import { useTheme } from "@/providers/ThemeProvider"
import { Feather, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"
import { router, Stack, useLocalSearchParams } from "expo-router"
import { useEffect, useState } from "react"
import { Pressable, RefreshControl, SafeAreaView, ScrollView, View } from "react-native"
@@ -199,7 +199,7 @@ export default function InformationDivision() {
}
<View style={[Styles.mb15]}>
<Text style={[Styles.textDefaultSemiBold, Styles.mb05]}>Deskripsi Divisi</Text>
<View style={[Styles.wrapPaper, { backgroundColor: colors.card, borderColor: colors.background }]}>
<View style={[Styles.wrapPaper, Styles.noShadow, { backgroundColor: colors.card, borderWidth: 1, borderColor: colors.icon + '20' }]}>
{loading ?
arrSkeleton.map((item, index) => {
return (
@@ -213,7 +213,7 @@ export default function InformationDivision() {
</View>
<View style={[Styles.mb15]}>
<Text style={[Styles.textDefault, Styles.mv05]}>{dataMember.length} Anggota</Text>
<View style={[Styles.wrapPaper, { backgroundColor: colors.card, borderColor: colors.background }]}>
<View style={[Styles.wrapPaper, Styles.noShadow, { backgroundColor: colors.card, borderWidth: 1, borderColor: colors.icon + '20' }]}>
{
((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision) &&
dataDetail?.isActive && (
@@ -221,8 +221,8 @@ export default function InformationDivision() {
onPress={() => { router.push(`/division/${id}/add-member`) }}
borderType="none"
icon={
<View style={[Styles.iconContent, ColorsStatus.gray]}>
<Feather name="user-plus" size={25} color={colors.primary} />
<View style={[Styles.iconContent]}>
<Feather name="user-plus" size={25} color={'black'} />
</View>
}
title="Tambah Anggota"
@@ -262,8 +262,8 @@ export default function InformationDivision() {
<View>
<Pressable style={[Styles.wrapItemBorderBottom]} onPress={() => { handleMemberAdmin() }}>
<View style={[Styles.rowItemsCenter]}>
<View style={[Styles.iconContent, ColorsStatus.info]}>
<MaterialIcons name="verified-user" size={25} color={colors.primary} />
<View style={[Styles.iconContent]}>
<MaterialIcons name="verified-user" size={25} color={'black'} />
</View>
<View style={[Styles.rowSpaceBetween, { width: '88%' }]}>
<View style={[Styles.ml10]}>

View File

@@ -7,7 +7,6 @@ import Skeleton from "@/components/skeleton";
import SkeletonTwoItem from "@/components/skeletonTwoItem";
import Text from "@/components/Text";
import WrapTab from "@/components/wrapTab";
import { ColorsStatus } from "@/constants/ColorsStatus";
import Styles from "@/constants/Styles";
import { apiGetDivision } from "@/lib/api";
import { useAuthSession } from "@/providers/AuthProvider";
@@ -16,8 +15,7 @@ import {
AntDesign,
Feather,
Ionicons,
MaterialCommunityIcons,
MaterialIcons,
MaterialCommunityIcons
} from "@expo/vector-icons";
import { router, useLocalSearchParams } from "expo-router";
import { useEffect, useState } from "react";
@@ -236,10 +234,10 @@ export default function ListDivision() {
key={index}
onPress={() => { router.push(`/division/${item.id}`) }}
borderType="bottom"
bgColor={colors.card}
bgColor="transparent"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialIcons name="group" size={25} color={colors.primary} />
<View style={[Styles.iconContent]}>
<Feather name="users" size={25} color={'black'} />
</View>
}
title={item.name}

View File

@@ -38,7 +38,7 @@ export default function Feature() {
{
(entityUser.role == "supadmin" || entityUser.role == "developer") &&
<>
<ButtonFiturMenu icon={<Feather name="layers" size={30} color={colors.icon} />} text="Lembaga Desa" onPress={() => { router.push('/group') }} />
<ButtonFiturMenu icon={<Ionicons name="bookmarks-outline" size={30} color={colors.icon} />} text="Lembaga Desa" onPress={() => { router.push('/group') }} />
{/* <ButtonFiturMenu icon={<Ionicons name="color-palette-sharp" size={30} color={colors.icon} />} text="Tema" onPress={() => { }} /> */}
<ButtonFiturMenu icon={<Ionicons name="images-outline" size={30} color={colors.icon} />} text="Banner" onPress={() => { router.push('/banner') }} />
</>

View File

@@ -15,7 +15,7 @@ import { apiDeleteGroup, apiEditGroup, apiGetGroup } from "@/lib/api";
import { setUpdateGroup } from "@/lib/groupSlice";
import { useAuthSession } from "@/providers/AuthProvider";
import { useTheme } from "@/providers/ThemeProvider";
import { AntDesign, Feather, MaterialCommunityIcons } from "@expo/vector-icons";
import { AntDesign, Feather, Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
import { useEffect, useState } from "react";
import { RefreshControl, View, VirtualizedList } from "react-native";
import Toast from "react-native-toast-message";
@@ -176,8 +176,8 @@ export default function Index() {
}}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialCommunityIcons name="office-building-outline" size={25} color={'#384288'} />
<View style={[Styles.iconContent]}>
<Ionicons name="bookmark-outline" size={25} color={'black'} />
</View>
}
title={item.name}
@@ -236,7 +236,7 @@ export default function Index() {
label="Lembaga Desa"
value={titleChoose}
error={error.title}
bg={colors.card}
bg={"transparent"}
errorText="Lembaga Desa tidak boleh kosong & minimal 3 karakter"
onChange={(val) => { validationForm(val, 'title') }} />
</View>

View File

@@ -200,8 +200,8 @@ export default function Index() {
}}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialCommunityIcons name="account-tie" size={25} color={'#384288'} />
<View style={[Styles.iconContent]}>
<MaterialCommunityIcons name="account-tie-outline" size={25} color={'black'} />
</View>
}
title={item.name}
@@ -259,7 +259,7 @@ export default function Index() {
placeholder="Nama Jabatan"
required
label="Jabatan"
bg={colors.card}
bg={"transparent"}
value={chooseData.name}
onChange={(val) => { validationForm(val) }}
error={error.name}

View File

@@ -190,7 +190,7 @@ export default function ProjectAddFile() {
<DrawerBottom animation="slide" isVisible={isModal} setVisible={setModal} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -322,7 +322,7 @@ export default function CreateProject() {
<Text>Total {entitiesMember.length} Anggota</Text>
</View>
<View style={[Styles.borderAll, Styles.round10, Styles.p10, { borderColor: colors.icon, backgroundColor: colors.card }]}>
<View style={[Styles.borderAll, Styles.round05, Styles.p10, { borderColor: colors.icon, backgroundColor: colors.card }]}>
{entitiesMember.map(
(item: { img: any; name: any }, index: any) => {
return (
@@ -348,7 +348,7 @@ export default function CreateProject() {
<DrawerBottom animation="slide" isVisible={isModal} setVisible={setModal} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => { deleteFile(indexDelFile) }}
/>

View File

@@ -56,7 +56,7 @@ export default function HeaderRightAnnouncementDetail({ id }: Props) {
}}
/>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setVisible(false)

View File

@@ -23,7 +23,7 @@ export default function HeaderRightAnnouncementList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Pengumuman"
onPress={() => {
setVisible(false)

View File

@@ -17,7 +17,7 @@ export default function HeaderRightBannerList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={() => setVisible(false)} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Banner"
onPress={() => {
setVisible(false)

View File

@@ -39,13 +39,13 @@ export default function BorderBottomItem({ title, subtitle, icon, desc, onPress,
onPressOut={() => setIsTap(false)}
style={({ pressed }) => [
borderType == 'bottom'
? [Styles.wrapItemBorderBottom, { borderBottomColor: colors.icon }]
? [Styles.wrapItemBorderBottom, { borderBottomColor: colors.icon + '20' }]
: borderType == 'all'
? [Styles.wrapItemBorderAll, { borderColor: colors.icon }]
? [Styles.wrapItemBorderAll, { borderColor: colors.icon + '20' }]
: Styles.wrapItemBorderNone,
{ backgroundColor: bgColor },
bgColor == "transparent" ? { backgroundColor: 'transparent' } : { backgroundColor: colors.card },
// efek warna saat ditekan (sementara)
isTap && colorPress && ColorsStatus.pressedGray,
isTap && colorPress && { backgroundColor: colors.icon + '20' },
]}
>
<View style={[Styles.rowItemsCenter]}>
@@ -56,14 +56,14 @@ export default function BorderBottomItem({ title, subtitle, icon, desc, onPress,
{
subtitle &&
typeof subtitle == "string"
? <Text style={[Styles.textMediumNormal, { lineHeight: 15, color: textColorFix }]}>{subtitle}</Text>
? <Text style={[Styles.textMediumNormal, { lineHeight: 15, color: colors.dimmed }]}>{subtitle}</Text>
: <View style={{ alignItems: 'flex-start' }}>
{subtitle}
</View>
}
</View>
{
rightTopInfo && <Text style={[Styles.textInformation, Styles.mt05, { color: textColorFix }]}>{rightTopInfo}</Text>
rightTopInfo && <Text style={[Styles.textInformation, Styles.mt05, { color: colors.dimmed }]}>{rightTopInfo}</Text>
}
</View>
@@ -75,13 +75,13 @@ export default function BorderBottomItem({ title, subtitle, icon, desc, onPress,
<View style={[rightBottomInfo && !leftBottomInfo ? Styles.rowSpaceBetweenReverse : Styles.rowSpaceBetween, Styles.mt05]}>
{
typeof leftBottomInfo == 'string' ?
<Text style={[Styles.textInformation, Styles.cGray]}>{leftBottomInfo}</Text>
<Text style={[Styles.textInformation, { color: colors.dimmed }]}>{leftBottomInfo}</Text>
:
leftBottomInfo
}
{
typeof rightBottomInfo == 'string' ?
<Text style={[Styles.textInformation, Styles.cGray]}>{rightBottomInfo}</Text>
<Text style={[Styles.textInformation, {color: colors.dimmed }]}>{rightBottomInfo}</Text>
:
rightBottomInfo
}

View File

@@ -117,9 +117,9 @@ export default function BorderBottomItem2({ title, subtitle, icon, desc, onPress
onPressOut={() => setIsTap(false)}
style={({ pressed }) => [
borderType == 'bottom'
? [Styles.wrapItemBorderBottom, { borderBottomColor: colors.icon }]
? [Styles.wrapItemBorderBottom, { borderBottomColor: colors.icon + '20' }]
: borderType == 'all'
? [Styles.wrapItemBorderAll, { borderColor: colors.icon }]
? [Styles.wrapItemBorderAll, { borderColor: colors.icon + '20' }]
: Styles.wrapItemBorderNone,
bgColor && bgColor == 'white' && { backgroundColor: colors.card },
// efek warna saat ditekan (sementara)
@@ -153,7 +153,7 @@ export default function BorderBottomItem2({ title, subtitle, icon, desc, onPress
{dataFile.map((item, index) => (
<Pressable
key={index}
style={[Styles.rowItemsCenter, Styles.borderAll, Styles.round10, Styles.ph05, Styles.pv03, Styles.mr05, { borderColor: colors.icon }]}
style={[Styles.rowItemsCenter, Styles.borderAll, Styles.round05, Styles.ph05, Styles.pv03, Styles.mr05, { borderColor: colors.icon }]}
onPress={() => {
isImageFile(item.extension) ?
handleChooseFile(item)
@@ -164,7 +164,7 @@ export default function BorderBottomItem2({ title, subtitle, icon, desc, onPress
name={isImageFile(item.extension) ? "file-image-outline" : "file-document-outline"}
size={18}
color={colors.icon} />
<Text style={[Styles.textInformation, Styles.cGray]}>{item.name}.{item.extension}</Text>
<Text style={[Styles.textInformation]}>{item.name}.{item.extension}</Text>
</Pressable>
))}
</ScrollView>
@@ -215,7 +215,7 @@ export default function BorderBottomItem2({ title, subtitle, icon, desc, onPress
accessibilityLabel="Download or share image"
disabled={loadingOpen}
>
<Text style={{ color: loadingOpen ? 'gray' : 'white', fontSize: 22 }}></Text>
<Text style={{ color: loadingOpen ? 'gray' : 'white', fontSize: 26 }}></Text>
</Pressable>
</View>
)}

View File

@@ -9,7 +9,7 @@ export default function ButtonMenuHeader({ onPress }: Props) {
return (
<>
<ButtonHeader
item={<Feather name="menu" size={20} color="white" />}
item={<Feather name="menu" size={25} color="white" />}
onPress={() => onPress()}
/>
</>

View File

@@ -12,7 +12,7 @@ export default function ButtonSaveHeader({ category, onPress, disable }: Props)
return (
<>
<ButtonHeader
item={<Feather name="check" size={20} color={disable ? "grey" : "white"} />}
item={<Feather name="check" size={25} color={disable ? "grey" : "white"} />}
onPress={() => {
if (!disable) {
AlertKonfirmasi({

View File

@@ -22,7 +22,7 @@ export default function ButtonSelect({ value, onPress, round, error, errorText }
Styles.inputRoundFormRight,
round && Styles.round30,
Styles.pv10,
{ borderColor: colors.icon, backgroundColor: colors.card },
{ borderColor: colors.icon + '20', backgroundColor: colors.input },
error && { borderColor: "red" }
]}>
<Feather name="arrow-right-circle" size={20} color={colors.text} />

View File

@@ -51,7 +51,7 @@ export default function HeaderRightCalendarDetail({ id, idReminder }: Props) {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<MaterialIcons name="groups" color={colors.text} size={25} />}
icon={<MaterialCommunityIcons name="account-group-outline" color={colors.text} size={25} />}
title="Tambah Anggota"
onPress={() => {
setVisible(false)
@@ -67,7 +67,7 @@ export default function HeaderRightCalendarDetail({ id, idReminder }: Props) {
}}
/>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setVisible(false)

View File

@@ -49,7 +49,7 @@ export default function HeaderRightCalendarList() {
<></>
) : (
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Acara"
onPress={() => {
setVisible(false)

View File

@@ -21,7 +21,7 @@ export default function ItemHistoryEvent({ data }: { data: Props }) {
{
data.length > 0 ? (
data.map((item, index) => (
<View key={index} style={[{ flexDirection: 'row' }, Styles.mv05, activeTheme === 'dark' ? { backgroundColor: colors.card } : ColorsStatus.lightGreen, Styles.p10, Styles.round10, { borderBottomWidth: 1, borderColor: colors.background }]}>
<View key={index} style={[{ flexDirection: 'row' }, Styles.mv05, activeTheme === 'dark' ? { backgroundColor: colors.card } : ColorsStatus.lightGreen, Styles.p10, Styles.round05, { borderBottomWidth: 1, borderColor: colors.background }]}>
<View style={[Styles.mr10, Styles.ph05]}>
<Text style={[Styles.textSubtitle]}>{String(item.dateStart)}</Text>
<Text style={[Styles.textDefault, { textAlign: 'center' }]}>{item.year}</Text>

View File

@@ -47,7 +47,7 @@ export default function HeaderRightDiscussionList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Diskusi"
onPress={() => {
setVisible(false)

View File

@@ -61,7 +61,7 @@ export default function HeaderRightDiscussionGeneralDetail({ id, active, status
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<MaterialIcons name="groups" color={colors.text} size={25} />}
icon={<MaterialCommunityIcons name="account-group-outline" color={colors.text} size={25} />}
title="Anggota"
onPress={() => {
setVisible(false)

View File

@@ -25,7 +25,7 @@ export default function HeaderDiscussionGeneral() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Diskusi"
onPress={() => {
setVisible(false)

View File

@@ -1,13 +1,13 @@
import Styles from "@/constants/Styles";
import { apiGetDivisionOneFeature } from "@/lib/api";
import { useAuthSession } from "@/providers/AuthProvider";
import { useTheme } from "@/providers/ThemeProvider";
import { router, useLocalSearchParams } from "expo-router";
import { useEffect, useState } from "react";
import { View } from "react-native";
import Text from "../Text";
import DiscussionItem from "../discussionItem";
import Skeleton from "../skeleton";
import { useTheme } from "@/providers/ThemeProvider";
type Props = {
id: string;
@@ -54,8 +54,7 @@ export default function DiscussionDivisionDetail({ refreshing }: { refreshing: b
return (
<View style={[Styles.mb15]}>
<Text style={[Styles.textDefaultSemiBold, Styles.mv10]}>Diskusi</Text>
<View style={[Styles.wrapPaper, { backgroundColor: colors.card, borderColor: colors.background }]}>
<View style={[Styles.wrapPaper, { backgroundColor: colors.card, borderColor: colors.icon + '20' }, Styles.p0]}>
{
loading ?
<>

View File

@@ -112,8 +112,8 @@ export default function FileDivisionDetail({ refreshing }: { refreshing: boolean
data.map((item, index) => (
<Pressable style={[Styles.mr05, { width: '24%' }]} key={index} onPress={() => openFile(item)}>
<View style={{ alignItems: 'center' }}>
<View style={[Styles.wrapPaper, { alignItems: 'center' }]}>
<Feather name="file-text" size={50} color="black" style={Styles.mr05} />
<View style={[Styles.wrapPaper, { alignItems: 'center', backgroundColor: colors.card, borderWidth: 1, borderColor: colors.icon + '20' }]}>
<Feather name="file-text" size={50} color={colors.text} style={Styles.mr05} />
</View>
</View>
<View style={[Styles.contentItemCenter]}>

View File

@@ -2,7 +2,7 @@ import { ColorsStatus } from "@/constants/ColorsStatus"
import Styles from "@/constants/Styles"
import { apiGetDivisionOneFeature } from "@/lib/api"
import { useAuthSession } from "@/providers/AuthProvider"
import { AntDesign, MaterialIcons, SimpleLineIcons } from "@expo/vector-icons"
import { AntDesign, Feather, MaterialIcons, SimpleLineIcons } from "@expo/vector-icons"
import { router, useLocalSearchParams } from "expo-router"
import { useEffect, useState } from "react"
import { View } from "react-native"
@@ -56,13 +56,13 @@ export default function FiturDivisionDetail({ refreshing }: { refreshing: boolea
bgColor={colors.card}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<AntDesign name="filetext1" size={25} color={colors.primary} />
<View style={[Styles.p05]}>
<AntDesign name="filetext1" size={28} color={colors.text} />
</View>
}
title="Tugas"
subtitle={`${data.tugas} Tugas`}
width={28}
width={30}
onPress={() => { router.push(`/division/${id}/task?status=0`) }}
/>
@@ -70,13 +70,13 @@ export default function FiturDivisionDetail({ refreshing }: { refreshing: boolea
bgColor={colors.card}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<MaterialIcons name="attach-file" size={25} color={colors.primary} />
<View style={[Styles.p05]}>
<Feather name="paperclip" size={28} color={colors.text} />
</View>
}
title="Dokumen"
subtitle={`${data.dokumen} File`}
width={28}
width={30}
onPress={() => { router.push(`/division/${id}/document`) }}
/>
</View>
@@ -86,13 +86,13 @@ export default function FiturDivisionDetail({ refreshing }: { refreshing: boolea
bgColor={colors.card}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<SimpleLineIcons name="bubbles" size={25} color={colors.primary} />
<View style={[Styles.p05]}>
<SimpleLineIcons name="bubbles" size={28} color={colors.text} />
</View>
}
title="Diskusi"
subtitle={`${data.diskusi} Diskusi`}
width={28}
width={30}
onPress={() => { router.push(`/division/${id}/discussion?active=true`) }}
/>
@@ -100,13 +100,13 @@ export default function FiturDivisionDetail({ refreshing }: { refreshing: boolea
bgColor={colors.card}
borderType="all"
icon={
<View style={[Styles.iconContent, ColorsStatus.lightGreen]}>
<AntDesign name="calendar" size={25} color={colors.primary} />
<View style={[Styles.p05]}>
<AntDesign name="calendar" size={28} color={colors.text} />
</View>
}
title="Kalender"
subtitle={`${data.kalender} Acara`}
width={28}
width={30}
onPress={() => { router.push(`/division/${id}/calendar`) }}
/>
</View>

View File

@@ -25,7 +25,7 @@ export default function HeaderRightDivisionList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Divisi"
onPress={() => {
setVisible(false)

View File

@@ -1,13 +1,13 @@
import Styles from "@/constants/Styles";
import { apiGetDivisionOneFeature } from "@/lib/api";
import { useAuthSession } from "@/providers/AuthProvider";
import { useTheme } from "@/providers/ThemeProvider";
import { Feather } from "@expo/vector-icons";
import { router, useLocalSearchParams } from "expo-router";
import React, { useEffect, useState } from "react";
import { Dimensions, Pressable, View } from "react-native";
import { ICarouselInstance } from "react-native-reanimated-carousel";
import Skeleton from "../skeleton";
import { useTheme } from "@/providers/ThemeProvider";
import Text from "../Text";
type Props = {
@@ -59,11 +59,11 @@ export default function TaskDivisionDetail({ refreshing }: { refreshing: boolean
:
data.length > 0 ?
data.map((item, index) => (
<Pressable key={index} style={[Styles.wrapPaper, Styles.mb05, { backgroundColor: colors.card, borderColor: colors.background }]} onPress={() => { router.push(`/division/${id}/task/${item.idProject}`) }}>
<Pressable key={index} style={[Styles.wrapPaper, Styles.mb10, { backgroundColor: colors.card, borderWidth: 1, borderColor: colors.icon + '20' }]} onPress={() => { router.push(`/division/${id}/task/${item.idProject}`) }}>
<Text style={[Styles.textDefaultSemiBold]} numberOfLines={1} ellipsizeMode="tail">{item.title} - {item.projectTitle}</Text>
<View style={[Styles.rowItemsCenter, Styles.mt10]}>
<Feather name="clock" size={18} color={colors.text} style={Styles.mr05} />
<Text style={[Styles.textInformation]} numberOfLines={1} ellipsizeMode="tail">{item.dateStart} - {item.dateEnd}</Text>
<Feather name="clock" size={18} color={colors.dimmed} style={Styles.mr05} />
<Text style={[Styles.textInformation, { color: colors.dimmed }]} numberOfLines={1} ellipsizeMode="tail">{item.dateStart} - {item.dateEnd}</Text>
</View>
</Pressable>
))

View File

@@ -26,13 +26,13 @@ export default function ItemFile({ category, checked, dateTime, title, onChecked
?
<>
<Ionicons name="folder-open-sharp" color={'#f9cc40'} size={40} />
<MaterialCommunityIcons name="share" color={'gray'} size={25} style={[Styles.absoluteIcon]} />
<MaterialCommunityIcons name="share" color={colors.tint} size={25} style={[Styles.absoluteIcon]} />
</>
: category == 'file-shared'
?
<>
<Ionicons name="document-text-sharp" color={'#9fcff8'} size={40} />
<MaterialCommunityIcons name="share" color={'gray'} size={25} style={[Styles.absoluteIcon]} />
<MaterialCommunityIcons name="share" color={colors.tint} size={25} style={[Styles.absoluteIcon]} />
</>
:
category == 'folder'
@@ -47,8 +47,8 @@ export default function ItemFile({ category, checked, dateTime, title, onChecked
</Pressable>
<View style={[Styles.rowSpaceBetween, { flex: 1, alignItems: 'center' }]}>
<Pressable style={[Styles.ml10, { flex: 1 },]} onPress={onPress}>
<Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{title}</Text>
<Text style={[Styles.textInformation]}>{dateTime}</Text>
<Text style={[Styles.textDefault, { color: colors.text }]} numberOfLines={1} ellipsizeMode="tail">{title}</Text>
<Text style={[Styles.textInformation, { color: colors.dimmed }]}>{dateTime}</Text>
</Pressable>
{
!canChecked ? <></>

View File

@@ -94,6 +94,7 @@ export default function ModalSalinMove({ open, close, category, onConfirm, dataC
icon={<Ionicons name="folder-open-sharp" style={[found ? Styles.cGray : Styles.cFolder]} size={30} />}
title={item.name}
titleWeight="normal"
bgColor="transparent"
onPress={() => {
if (found) return;
setPath(item.id);
@@ -108,7 +109,7 @@ export default function ModalSalinMove({ open, close, category, onConfirm, dataC
<Text style={[Styles.textDefault, Styles.cGray, Styles.mt15, { textAlign: 'center' }]}>Tidak ada data</Text>
}
</View>
<View style={[Styles.rowOnly, Styles.mt15, Styles.absolute0, { backgroundColor: colors.background }]}>
<View style={[Styles.rowOnly, Styles.mt15, Styles.absolute0, { backgroundColor: colors.modalBackground }]}>
<ModalNewFolder path={path} onCreated={() => getData()} />
<Pressable style={[Styles.pv05, { width: '50%' }]} onPress={() => onConfirm(path)}>
<Text style={[Styles.textDefaultSemiBold, { textAlign: 'center' }]}>{category == 'copy' ? 'SALIN' : 'PINDAH'}</Text>

View File

@@ -45,9 +45,9 @@ export default function DrawerBottom({ isVisible, setVisible, title, children, a
behavior={Platform.OS === 'ios' ? 'padding' : undefined}
keyboardVerticalOffset={0}
>
<View style={[Styles.modalContentNew, { height: tinggiFix, backgroundColor: colors.background }]}>
<View style={[Styles.titleContainerNew, { borderBottomColor: colors.icon + '20' }]}>
<Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefault, Styles.w90]}>{title}</Text>
<View style={[Styles.modalContentNew, { height: tinggiFix, backgroundColor: colors.modalBackground }]}>
<View style={[Styles.titleContainerNew]}>
<Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefaultSemiBold, Styles.w90]}>{title}</Text>
<Pressable onPress={() => setVisible(false)}>
<MaterialIcons name="close" color={colors.text} size={22} />
</Pressable>
@@ -58,9 +58,9 @@ export default function DrawerBottom({ isVisible, setVisible, title, children, a
</View>
</KeyboardAvoidingView>
:
<View style={[Styles.modalContentNew, { height: tinggiFix, backgroundColor: colors.background }]}>
<View style={[Styles.titleContainerNew, { borderBottomColor: colors.icon + '20' }]}>
<Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefault, Styles.w90]}>{title}</Text>
<View style={[Styles.modalContentNew, { height: tinggiFix, backgroundColor: colors.modalBackground }]}>
<View style={[Styles.titleContainerNew]}>
<Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefaultSemiBold, Styles.w90]}>{title}</Text>
<Pressable onPress={() => setVisible(false)}>
<MaterialIcons name="close" color={colors.text} size={22} />
</Pressable>

View File

@@ -13,18 +13,25 @@ type Props = {
}
export default function EventItem({ category, title, user, jamAwal, jamAkhir, onPress }: Props) {
const { theme } = useTheme();
const { theme, colors } = useTheme();
const getBackgroundColor = (cat: 'purple' | 'orange') => {
if (theme === 'dark') {
return cat === 'orange' ? '#5A2D0C' : '#1F2255';
return cat === 'orange' ? '#547792' : '#1D546D';
}
return cat === 'orange' ? '#FED6C5' : '#D8D8F1';
return cat === 'orange' ? '#D6E6F2' : '#A9B5DF';
};
const getStickColor = (cat: 'purple' | 'orange') => {
if (theme === 'dark') {
return cat === 'orange' ? '#94B4C1' : '#5F9598';
}
return cat === 'orange' ? '#F5F5F5' : '#7886C7' ;
};
return (
<Pressable style={[Styles.itemEvent, { backgroundColor: getBackgroundColor(category) }]} onPress={onPress}>
<View style={[Styles.dividerEvent, { backgroundColor: category == 'orange' ? '#FB804C' : '#535FCA' }]} />
<View style={[Styles.dividerEvent, { backgroundColor: getStickColor(category) }]} />
<View style={[Styles.w90]}>
<Text>{jamAwal} - {jamAkhir}</Text>
<Text numberOfLines={1} ellipsizeMode="tail" style={[Styles.textDefaultSemiBold, Styles.mv05]}>{title}</Text>

View File

@@ -64,7 +64,7 @@ export default function HeaderRightGroupList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={() => setVisible(false)} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Lembaga"
onPress={() => {
setVisible(false);
@@ -88,7 +88,7 @@ export default function HeaderRightGroupList() {
placeholder="Nama Lembaga Desa"
required label="Lembaga Desa"
error={error.title}
bg={colors.card}
bg={"transparent"}
errorText="Lembaga Desa tidak boleh kosong & minimal 3 karakter"
onChange={(val) => { validationForm(val, 'title') }}
/>

View File

@@ -80,17 +80,17 @@ export function InputDate({ label, value, placeholder, onChange, info, disable,
<View style={[Styles.mb10]}>
{
label != undefined && (
<Text style={[Styles.mb05, error && Styles.cError]}>
<Text style={[Styles.mb05, error && { color: colors.error }]}>
{label}
{required && (<Text style={Styles.cError}>*</Text>)}
{required && (<Text style={{ color: colors.error }}>*</Text>)}
</Text>
)
}
<Pressable style={[Styles.inputRoundForm, disable && ColorsStatus.gray, error && { borderColor: "red" }, { backgroundColor: colors.card }]} onPress={() => setModal(true)} disabled={disable}>
<Text style={!value && [Styles.cGray]}>{value ? value : placeholder}</Text>
<Pressable style={[Styles.inputRoundForm, disable && ColorsStatus.gray, { borderColor: colors.icon + '20' }, error && { borderColor: colors.error }, { backgroundColor: colors.card }]} onPress={() => setModal(true)} disabled={disable}>
<Text style={!value && [{ color: colors.dimmed }]}>{value ? value : placeholder}</Text>
</Pressable>
{error && (<Text style={[Styles.textInformation, Styles.cError, Styles.mt05]}>{errorText}</Text>)}
{info != undefined && (<Text style={[Styles.textInformation, Styles.mt05, Styles.cGray]}>{info}</Text>)}
{error && (<Text style={[Styles.textInformation, { color: colors.error }, Styles.mt05]}>{errorText}</Text>)}
{info != undefined && (<Text style={[Styles.textInformation, Styles.mt05, { color: colors.icon }]}>{info}</Text>)}
</View>
{
Platform.OS === 'ios' ? (

View File

@@ -34,9 +34,9 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
<View style={[mb && Styles.mb10]}>
{
label != undefined && (
<Text style={[{ marginBottom: 5, textTransform: "capitalize", color: colors.text }, error && Styles.cError]}>
<Text style={[{ marginBottom: 5, textTransform: "capitalize", color: colors.text }, error && { color: colors.error }]}>
{label}
{required && (<Text style={Styles.cError}>*</Text>)}
{required && (<Text style={{ color: colors.error }}>*</Text>)}
</Text>
)
}
@@ -46,12 +46,9 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
multiline && { alignItems: 'flex-end' },
round && Styles.round30,
{
backgroundColor: bg
? (bg === 'white' ? (colors.background === '#151718' ? '#2d2e2f' : 'white') : bg)
: 'transparent',
borderColor: colors.icon
backgroundColor: bg=="transparent" ? "transparent" : colors.input,
},
error && { borderColor: "red" },
error ? { borderColor: colors.error } : { borderColor: colors.icon + '20' },
Platform.OS == 'ios' ? { paddingVertical: 10 } : { paddingVertical: 0, minHeight: 40 },
{ alignItems: 'center' },
multiline
@@ -65,7 +62,7 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
placeholder={placeholder}
keyboardType={type}
onChangeText={onChange}
placeholderTextColor={colors.icon}
placeholderTextColor={colors.dimmed}
multiline={multiline}
numberOfLines={3}
style={[
@@ -76,7 +73,7 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
]}
/>
</View>
{error && (<Text style={[Styles.textInformation, Styles.cError, Styles.mt05]}>{errorText}</Text>)}
{error && (<Text style={[Styles.textInformation, { color: colors.error }, Styles.mt05]}>{errorText}</Text>)}
{info != undefined && (<Text style={[Styles.textInformation, { color: colors.icon }, Styles.mt05]}>{info}</Text>)}
</View>
)
@@ -88,9 +85,9 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
<View style={[Styles.mb10]}>
{
label != undefined && (
<Text style={[Styles.mb05, error && Styles.cError, { color: colors.text }]}>
<Text style={[Styles.mb05, error && { color: colors.error }, { color: colors.text }]}>
{label}
{required && (<Text style={Styles.cError}>*</Text>)}
{required && (<Text style={{ color: colors.error }}>*</Text>)}
</Text>
)
}
@@ -102,19 +99,16 @@ export function InputForm({ label, value, placeholder, onChange, info, disable,
style={[
Styles.inputRoundForm,
Platform.OS == 'ios' ? { paddingVertical: 11 } : { paddingVertical: 6 },
error && { borderColor: "red" },
error ? { borderColor: colors.error } : { borderColor: colors.icon + '20' },
round && Styles.round30,
{
backgroundColor: bg
? (bg === 'white' ? (colors.background === '#151718' ? '#2d2e2f' : 'white') : bg)
: 'transparent',
borderColor: colors.icon
backgroundColor: bg=="transparent" ? "transparent" : colors.input,
},
{ color: colors.text },
multiline && { height: 150, textAlignVertical: 'top' }
]}
onChangeText={onChange}
placeholderTextColor={colors.icon}
placeholderTextColor={colors.dimmed}
multiline={multiline}
numberOfLines={multiline ? 5 : undefined}
/>

View File

@@ -1,16 +1,18 @@
import { useTheme } from "@/providers/ThemeProvider";
import { Feather } from "@expo/vector-icons";
import { InputForm } from "./inputForm";
export default function InputSearch({ onChange, width, value }: { onChange?: (val: string) => void, width?: number, value?: string }) {
export default function InputSearch({ onChange, width, value, bg }: { onChange?: (val: string) => void, width?: number, value?: string, bg?: string }) {
const { colors } = useTheme();
return (
<InputForm
type="default"
placeholder="Pencarian"
round
itemLeft={<Feather name="search" size={20} color="grey" />}
itemLeft={<Feather name="search" size={20} color={colors.dimmed} />}
onChange={onChange}
width={width}
bg="white"
bg={bg}
value={value}
mb={false}
/>

View File

@@ -17,14 +17,14 @@ export default function LabelStatus({ category, text, size, style }: Props) {
success: colors.success,
warning: colors.warning,
error: colors.error,
secondary: colors.dimmed,
secondary: 'gray',
}[category] || 'gray'; // Removed ColorsStatus[category]?.backgroundColor as ColorsStatus is removed
return (
<View style={[
size == "small" ? Styles.labelStatusSmall : Styles.labelStatus,
{ backgroundColor },
Styles.round10,
Styles.round05,
Styles.contentItemCenter,
style
]}>

View File

@@ -25,7 +25,7 @@ export default function HeaderMemberList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={() => setVisible(false)} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Anggota"
onPress={() => {
setVisible(false)

View File

@@ -2,6 +2,7 @@ import Styles from "@/constants/Styles"
import { apiGetGroup, apiGetTahunProject, apiGetTahunTask } from "@/lib/api"
import { setEntityFilterGroup } from "@/lib/filterSlice"
import { useAuthSession } from "@/providers/AuthProvider"
import { useTheme } from "@/providers/ThemeProvider"
import { router } from "expo-router"
import { useEffect, useState } from "react"
import { ScrollView, TouchableOpacity, View } from "react-native"
@@ -40,6 +41,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
const [chooseYear, setChooseYear] = useState(valueYear || '')
const [dataTahun, setDataTahun] = useState<{ id: string, name: string }[]>([])
const [passingData, setPassingData] = useState(dataPassing)
const { colors } = useTheme()
async function handleLoad() {
const hasil = await decryptToken(String(token?.current))
@@ -80,9 +82,9 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
key={index}
style={[
Styles.chip,
chooseGroup == item.id && Styles.chipSelected,
{ borderColor: colors.dimmed },
chooseGroup == item.id && { backgroundColor: colors.primary },
]}
activeOpacity={0.8}
onPress={() => { setChooseGroup(item.id) }}
>
{/* {chooseGroup == item.id && (
@@ -94,6 +96,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
<Text
style={[
Styles.chipText,
{ color: colors.text },
chooseGroup == item.id && Styles.chipTextSelected,
]}
>
@@ -113,7 +116,8 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
key={index}
style={[
Styles.chip,
chooseGroup == item.id && Styles.chipSelected,
{ borderColor: colors.dimmed },
chooseGroup == item.id && { backgroundColor: colors.primary },
]}
activeOpacity={0.8}
onPress={() => { setChooseGroup(item.id) }}
@@ -127,6 +131,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
<Text
style={[
Styles.chipText,
{ color: colors.text },
chooseGroup == item.id && Styles.chipTextSelected,
]}
>
@@ -155,7 +160,8 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
key={index}
style={[
Styles.chip,
chooseYear == item.id && Styles.chipSelected,
{ borderColor: colors.dimmed },
chooseGroup == item.id && { backgroundColor: colors.primary },
]}
activeOpacity={0.8}
onPress={() => { setChooseYear(item.id) }}
@@ -163,6 +169,7 @@ export default function ModalFilter({ open, close, page, category, valueGroup, v
<Text
style={[
Styles.chipText,
{ color: colors.text },
chooseYear == item.id && Styles.chipTextSelected,
]}
>

View File

@@ -35,10 +35,10 @@ export default function ModalFloat({ isVisible, setVisible, title, children, onS
{
!buttonHide && (
<View style={[Styles.rowItemsCenter, { justifyContent: 'flex-end' }]}>
<Pressable style={[Styles.ph15, Styles.pv05, Styles.round10, Styles.mr10]} onPress={() => { setVisible(false) }}>
<Pressable style={[Styles.ph15, Styles.pv05, Styles.round05, Styles.mr10]} onPress={() => { setVisible(false) }}>
<Text style={[Styles.textDefaultSemiBold]}>Batal</Text>
</Pressable>
<Pressable style={[Styles.ph15, Styles.pv05, Styles.round10]} onPress={onSubmit} disabled={disableSubmit}>
<Pressable style={[Styles.ph15, Styles.pv05, Styles.round05]} onPress={onSubmit} disabled={disableSubmit}>
<Text style={[Styles.textDefaultSemiBold, disableSubmit && Styles.cGray]}>Simpan</Text>
</Pressable>
</View>

View File

@@ -132,7 +132,7 @@ export default function ModalSelect({ open, close, title, category, idParent, on
{
category == 'member' &&
<>
<InputSearch onChange={setSearch} value={search} />
<InputSearch onChange={setSearch} value={search} bg={"transparent"} />
{
selectMember.length > 0
?

View File

@@ -163,7 +163,7 @@ export default function ModalSelectMultiple({ open, close, title, category, choo
<Text numberOfLines={1} style={[Styles.w80]}>{item.name}</Text>
{
selectedDivision.some((i: any) => i.id == item.id)
? <AntDesign name="check" size={18} color={colors.text} />
? <AntDesign name="check" size={17} color={colors.text} />
: <></>
}
</Pressable>
@@ -179,9 +179,9 @@ export default function ModalSelectMultiple({ open, close, title, category, choo
<Text style={[Styles.textMediumSemiBold]}>{item.name}</Text>
{
checked[item.id] && checked[item.id]?.length === item.Division?.length
? <AntDesign name="check" size={20} color={colors.text} />
? <AntDesign name="check" size={17} color={colors.text} />
: (checked[item.id] && checked[item.id]?.length > 0 && checked[item.id]?.length < item.Division?.length)
? <AntDesign name="minus" size={20} color={colors.text} />
? <AntDesign name="minus" size={17} color={colors.text} />
: <></>
}
</Pressable>

View File

@@ -23,7 +23,7 @@ export default function HeaderRightPositionList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Jabatan"
onPress={() => {
setVisible(false)

View File

@@ -97,6 +97,7 @@ export default function ModalFormCreatePosition({ onClose }: { onClose: () => vo
}}
error={error.idGroup}
errorText="Lembaga Desa harus diisi"
bg="transparent"
/>
}
<InputForm
@@ -106,7 +107,7 @@ export default function ModalFormCreatePosition({ onClose }: { onClose: () => vo
label="Jabatan"
onChange={(value) => { validationForm(value, 'name') }}
error={error.name}
bg={colors.card}
bg={"transparent"}
errorText="Nama jabatan harus diisi"
value={dataForm.name}
/>

View File

@@ -72,7 +72,7 @@ export default function HeaderRightProjectDetail({ id, status }: Props) {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu" height={35}>
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Tugas"
onPress={() => {
if (status == 3) return
@@ -119,7 +119,7 @@ export default function HeaderRightProjectDetail({ id, status }: Props) {
entityUser.role != "user" && entityUser.role != "coadmin" &&
<>
<MenuItemRow
icon={<MaterialIcons name="groups" color={colors.text} size={25} />}
icon={<MaterialCommunityIcons name="account-group-outline" color={colors.text} size={25} />}
title="Tambah Anggota"
onPress={() => {
if (status == 3) return
@@ -148,7 +148,7 @@ export default function HeaderRightProjectDetail({ id, status }: Props) {
status == 3
?
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setVisible(false)

View File

@@ -24,7 +24,7 @@ export default function HeaderRightProjectList() {
{
entityUser.role != "user" && entityUser.role != "coadmin" &&
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Kegiatan"
onPress={() => {
setVisible(false)

View File

@@ -179,7 +179,7 @@ export default function SectionFile({ status, member, refreshing }: { status: nu
!member && (entityUser.role == "user" || entityUser.role == "coadmin") ? <></>
:
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
disabled={status == 3}
onPress={() => {

View File

@@ -116,7 +116,7 @@ export default function SectionLink({ status, member, refreshing }: { status: nu
!member && (entityUser.role == "user" || entityUser.role == "coadmin") ? <></>
:
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
disabled={status == 3}
onPress={() => {

View File

@@ -60,7 +60,7 @@ export default function SectionListAddTask() {
>
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus Tugas"
onPress={() => { handleDelete() }}
/>

View File

@@ -211,7 +211,7 @@ export default function SectionTanggalTugasProject({ status, member, refreshing
</View>
<View style={[Styles.rowItemsCenter, Styles.mt15]}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus Tugas"
onPress={() => {
setModal(false)

View File

@@ -14,7 +14,7 @@ export default function SectionCancel({ text, title }: Props) {
const { colors } = useTheme();
return (
<View style={[Styles.p10, Styles.round10, Styles.mb15, { backgroundColor: colors.card }]}>
<View style={[Styles.p10, Styles.round05, Styles.mb15, { backgroundColor: colors.card }]}>
<View style={[Styles.rowItemsCenter]}>
<AntDesign name="warning" size={22} style={[Styles.mr10]} color={colors.text} />
<Text style={[Styles.textDefaultSemiBold]}>{title ? title : 'Kegiatan Dibatalkan'}</Text>

View File

@@ -25,9 +25,9 @@ export default function SelectForm({ label, value, placeholder, onPress, info, e
<View style={[Styles.mb10]}>
{
label != undefined && (
<Text style={[Styles.mb05, { textTransform: "capitalize" }, error && Styles.cError]}>
<Text style={[Styles.mb05, { textTransform: "capitalize" }, error && { color: colors.error }]}>
{label}
{required && (<Text style={Styles.cError}>*</Text>)}
{required && (<Text style={{ color: colors.error }}>*</Text>)}
</Text>
)
}
@@ -35,22 +35,22 @@ export default function SelectForm({ label, value, placeholder, onPress, info, e
<View style={[
Styles.inputRoundForm,
Styles.inputRoundFormRight,
error && { borderColor: "red" },
error ? { borderColor: colors.error } : { borderColor: colors.icon + '20' },
round && Styles.round30,
Styles.pv10,
{ backgroundColor: bg ? bg : 'transparent', borderColor: colors.icon }
{ backgroundColor: bg == 'transparent' ? 'transparent' : colors.input }
]}>
<Feather name="chevron-right" size={20} color={colors.icon} />
{
value ? (
<Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.w90]}>{value}</Text>
) : (
<Text numberOfLines={1} ellipsizeMode='tail' style={[{ color: colors.icon }, Styles.w90]}>{placeholder}</Text>
<Text numberOfLines={1} ellipsizeMode='tail' style={[{ color: colors.dimmed }, Styles.w90]}>{placeholder}</Text>
)
}
</View>
</Pressable >
{error && (<Text style={[Styles.textInformation, Styles.mt05, Styles.cError]}>{errorText}</Text>)
{error && (<Text style={[Styles.textInformation, Styles.mt05, { color: colors.error } ]}>{errorText}</Text>)
}
{info != undefined && (<Text style={[Styles.textInformation, Styles.mt05, { color: colors.icon }]}>{info}</Text>)}
</View >

View File

@@ -74,7 +74,7 @@ export default function HeaderRightTaskDetail({ id, division, status, isAdminDiv
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu" height={35}>
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Tugas"
onPress={() => {
if (status == 3) return
@@ -124,7 +124,7 @@ export default function HeaderRightTaskDetail({ id, division, status, isAdminDiv
&&
<>
<MenuItemRow
icon={<MaterialIcons name="groups" color={colors.text} size={25} />}
icon={<MaterialCommunityIcons name="account-group-outline" color={colors.text} size={25} />}
title="Tambah Anggota"
onPress={() => {
if (status == 3) return
@@ -154,7 +154,7 @@ export default function HeaderRightTaskDetail({ id, division, status, isAdminDiv
status == 3
?
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setVisible(false)

View File

@@ -51,10 +51,10 @@ export default function HeaderRightTaskList() {
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
{
(entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision
((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision)
&&
<MenuItemRow
icon={<AntDesign name="pluscircle" color={colors.text} size={25} />}
icon={<AntDesign name="pluscircleo" color={colors.text} size={25} />}
title="Tambah Tugas Divisi"
onPress={() => {
setVisible(false)

View File

@@ -170,7 +170,7 @@ export default function SectionFileTask({ refreshing, isMemberDivision }: { refr
(entityUser.role != "user" && entityUser.role != "coadmin") || isMemberDivision
?
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setModal(false)

View File

@@ -108,7 +108,7 @@ export default function SectionLinkTask({ refreshing, isMemberDivision }: { refr
(entityUser.role != "user" && entityUser.role != "coadmin") || isMemberDivision
?
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus"
onPress={() => {
setModal(false)

View File

@@ -170,7 +170,7 @@ export default function SectionMemberTask({ refreshing, isAdminDivision }: { ref
{
(entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision
((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision)
?
<MenuItemRow
icon={

View File

@@ -207,7 +207,7 @@ export default function SectionTanggalTugasTask({ refreshing, isMemberDivision }
?
<View style={[Styles.rowItemsCenter, Styles.mt15]}>
<MenuItemRow
icon={<Ionicons name="trash" color={colors.text} size={25} />}
icon={<Ionicons name="trash-outline" color={colors.text} size={25} />}
title="Hapus Tugas"
onPress={() => {
setModal(false)

View File

@@ -1,13 +1,15 @@
import Styles from "@/constants/Styles";
import { useTheme } from "@/providers/ThemeProvider";
import { View } from "react-native";
import Toast from "react-native-toast-message";
import Text from "./Text";
export default function ToastCustom({ position }: { position?: 'top' | 'bottom' }) {
const { colors } = useTheme()
return (
<Toast autoHide onPress={() => Toast.hide()} visibilityTime={1500} position={position || 'bottom'} config={{
small: ({ text1 }) => (
<View style={[Styles.toastContainer]}>
<View style={[Styles.toastContainer, { backgroundColor: colors.card, borderColor: colors.icon + '20' }]}>
<Text style={{ fontSize: 12 }}>{text1}</Text>
</View>
)

View File

@@ -13,10 +13,12 @@ export const Colors = {
tabActive: '#2563EB',
header: '#234881',
homeGradient: '#346CC4',
dimmed: '#6B7280',
dimmed: '#707887ff',
success: '#40C057',
warning: '#FBBF24',
error: '#F87171',
input:'#FFFFFF',
modalBackground: '#ffffff',
},
dark: {
text: '#ECEDEE',
@@ -33,5 +35,7 @@ export const Colors = {
success: '#1F6F43',
warning: '#D97706',
error: '#DC2626',
input:'#14243dff',
modalBackground: '#1a1a1aff',
},
};

View File

@@ -196,6 +196,9 @@ const Styles = StyleSheet.create({
pv20: {
paddingVertical: 20
},
p05: {
padding: 5
},
p15: {
padding: 15
},
@@ -319,7 +322,7 @@ const Styles = StyleSheet.create({
marginHorizontal: 10
},
inputRoundForm: {
borderRadius: 10,
borderRadius: 5,
borderColor: '#d6d8f6',
borderWidth: 1,
paddingVertical: 10,
@@ -398,8 +401,8 @@ const Styles = StyleSheet.create({
contentPaperGrid2: {
backgroundColor: 'white',
height: 100,
borderBottomEndRadius: 15,
borderBottomStartRadius: 15,
borderBottomEndRadius: 5,
borderBottomStartRadius: 5,
paddingHorizontal: 20,
paddingVertical: 15,
justifyContent: 'flex-start'
@@ -428,6 +431,13 @@ const Styles = StyleSheet.create({
shadowRadius: 4,
elevation: 5,
},
noShadow: {
shadowColor: 'transparent',
shadowOffset: { width: 0, height: 0 },
shadowOpacity: 0,
shadowRadius: 0,
elevation: 0,
},
contentItemCenter: {
justifyContent: 'center',
alignItems: 'center'
@@ -459,7 +469,7 @@ const Styles = StyleSheet.create({
padding: 10,
borderColor: '#d6d8f6',
borderWidth: 1,
borderRadius: 10,
borderRadius: 5,
marginBottom: 10
},
wrapItemBorderNone: {
@@ -489,6 +499,7 @@ const Styles = StyleSheet.create({
iconContent: {
padding: 10,
borderRadius: 100,
backgroundColor:'#E5E7EB'
},
wrapHeadViewMember: {
backgroundColor: '#19345E',
@@ -670,7 +681,7 @@ const Styles = StyleSheet.create({
paddingVertical: 5,
paddingHorizontal: 15,
borderRadius: 5,
backgroundColor: "#F3F4F6",
// backgroundColor: "#F3F4F6",
borderWidth: 1,
borderColor: "transparent",
marginRight: 10,
@@ -679,13 +690,14 @@ const Styles = StyleSheet.create({
chipSelected: {
backgroundColor: "#f2f6ffff",
borderColor: "#384288",
borderWidth: 1,
},
chipText: {
fontSize: 16,
color: "#222",
},
chipTextSelected: {
color: "#384288",
color: "white",
},
checkIcon: {
position: "absolute",