amalia/21-mei-26 #52

Merged
amaliadwiy merged 10 commits from amalia/21-mei-26 into join 2026-05-21 17:25:19 +08:00
14 changed files with 67 additions and 64 deletions

View File

@@ -92,8 +92,8 @@ android {
applicationId 'mobiledarmasaba.app'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 16
versionName "2.1.0"
versionCode 17
versionName "2.2.0"
}
signingConfigs {
debug {

View File

@@ -4,7 +4,7 @@ export default {
expo: {
name: "Desa+",
slug: "mobile-darmasaba",
version: "2.1.0", // Versi aplikasi (App Store)
version: "2.2.0", // Versi aplikasi (App Store)
jsEngine: "jsc",
orientation: "portrait",
icon: "./assets/images/logo-icon-small.png",
@@ -14,7 +14,7 @@ export default {
ios: {
supportsTablet: true,
bundleIdentifier: "mobiledarmasaba.app",
buildNumber: "9",
buildNumber: "10",
infoPlist: {
ITSAppUsesNonExemptEncryption: false,
CFBundleDisplayName: "Desa+"
@@ -23,7 +23,7 @@ export default {
},
android: {
package: "mobiledarmasaba.app",
versionCode: 16,
versionCode: 17,
adaptiveIcon: {
foregroundImage: "./assets/images/logo-icon-small.png",
backgroundColor: "#ffffff"

View File

@@ -10,7 +10,7 @@ type Props = {
onError?: (val:boolean) => void
}
export default function ImageUser({ src, size, border, onError }: Props) {
export default function ImageUser({ src, size, border = true, onError }: Props) {
const [error, setError] = useState(false)
const { colors } = useTheme()
return (

View File

@@ -4,7 +4,7 @@ const AnnouncementStyles = StyleSheet.create({
// list (index.tsx)
announcementListContainer: { padding: 15, paddingBottom: 0 },
announcementListInner: { marginTop: 10 },
announcementListCard: { borderRadius: 10, borderWidth: 1, padding: 12 },
announcementListCard: { borderRadius: 8, borderWidth: 1, padding: 12 },
announcementListCardHeader: { marginBottom: 6 },
announcementListTitleRow: { flex: 1, gap: 8, marginRight: 8, flexDirection: 'row', alignItems: 'center' },
announcementListIconBox: { width: 28, height: 28, borderRadius: 8, alignItems: 'center', justifyContent: 'center' },
@@ -18,11 +18,11 @@ const AnnouncementStyles = StyleSheet.create({
// detail ([id].tsx)
announcementDetailContainer: { padding: 15, paddingBottom: 50, gap: 12 },
announcementDetailCard: { borderRadius: 10 },
announcementDetailCard: { borderRadius: 8 },
announcementDetailSkeletonGap: { gap: 8 },
announcementDetailSkeletonIconRow: { gap: 10, marginBottom: 2 },
announcementDetailTitleRow: { gap: 10, marginBottom: 10 },
announcementDetailIconBox: { width: 38, height: 38, borderRadius: 10 },
announcementDetailIconBox: { width: 38, height: 38, borderRadius: 8 },
announcementDetailTitleText: { fontSize: 17, lineHeight: 24, flex: 1 },
announcementDetailSectionLabelRow: { marginBottom: 8, gap: 6 },
announcementDetailFileCardPadding: { padding: 10 },
@@ -33,7 +33,7 @@ const AnnouncementStyles = StyleSheet.create({
announcementDetailGroupSeparator: { marginTop: 12, paddingTop: 12, borderTopWidth: 1 },
announcementDetailGroupLabel: { marginBottom: 6 },
announcementDetailDivisionRow: { gap: 8, paddingVertical: 6 },
announcementDetailDivisionIconCircle: { width: 26, height: 26, borderRadius: 13, alignItems: 'center', justifyContent: 'center' },
announcementDetailDivisionIconCircle: { width: 26, height: 26, borderRadius: 100, alignItems: 'center', justifyContent: 'center' },
});
export default AnnouncementStyles;

View File

@@ -2,7 +2,7 @@ import { StyleSheet } from "react-native";
const ApprovalStyles = StyleSheet.create({
approvalBadge: { borderRadius: 20, paddingHorizontal: 10, paddingVertical: 3, alignSelf: 'flex-start' },
approvalItem: { borderWidth: 1, borderRadius: 10, padding: 12, marginBottom: 10 },
approvalItem: { borderWidth: 1, borderRadius: 8, padding: 12, marginBottom: 10 },
approvalItemHeader: { justifyContent: 'space-between', marginBottom: 8 },
approvalIconMr: { marginRight: 6 },
approvalNoteBox: { borderRadius: 8, padding: 8, marginTop: 4 },

View File

@@ -1,12 +1,15 @@
import { StyleSheet } from "react-native";
const BorderStyles = StyleSheet.create({
round05: { borderRadius: 5 },
round04: { borderRadius: 4 },
round05: { borderRadius: 8 },
round08: { borderRadius: 8 },
round10: { borderRadius: 10 },
round12: { borderRadius: 12 },
round15: { borderRadius: 15 },
round20: { borderRadius: 20 },
round30: { borderRadius: 30 },
roundFull: { borderRadius: 100 },
borderRight: { borderRightWidth: 1, borderRightColor: '#d6d8f6' },
borderLeft: { borderLeftWidth: 1, borderLeftColor: '#d6d8f6' },
borderBottom: { borderBottomWidth: 1, borderBottomColor: '#d6d8f6' },

View File

@@ -2,7 +2,7 @@ import { StyleSheet } from "react-native";
const ButtonStyles = StyleSheet.create({
btnIconHeader: { padding: 3 },
btnFiturMenu: { padding: 13, borderRadius: 15, borderWidth: 1 },
btnFiturMenu: { padding: 13, borderRadius: 20, borderWidth: 1 },
btnRound: {
backgroundColor: '#1F3C88',
borderWidth: 0,
@@ -37,8 +37,8 @@ const ButtonStyles = StyleSheet.create({
padding: 5,
borderWidth: 1,
},
labelStatus: { paddingHorizontal: 15, paddingVertical: 4, borderRadius: 10 },
labelStatusSmall: { paddingHorizontal: 10, paddingVertical: 3, borderRadius: 10 },
labelStatus: { paddingHorizontal: 15, paddingVertical: 4, borderRadius: 20 },
labelStatusSmall: { paddingHorizontal: 10, paddingVertical: 3, borderRadius: 20 },
});
export default ButtonStyles;

View File

@@ -4,7 +4,7 @@ const CardStyles = StyleSheet.create({
wrapPaper: {
padding: 10,
backgroundColor: 'white',
borderRadius: 5,
borderRadius: 8,
shadowColor: '#171717',
shadowOffset: { width: 0, height: 0 },
shadowOpacity: 0.1,
@@ -31,7 +31,7 @@ const CardStyles = StyleSheet.create({
shadowOpacity: 0.1,
shadowRadius: 5,
elevation: 2,
borderRadius: 5,
borderRadius: 8,
marginBottom: 15,
},
wrapGridCaraousel: {
@@ -42,7 +42,7 @@ const CardStyles = StyleSheet.create({
shadowOpacity: 0.1,
shadowRadius: 5,
elevation: 2,
borderRadius: 5,
borderRadius: 8,
marginLeft: 5,
display: 'flex',
},
@@ -57,27 +57,27 @@ const CardStyles = StyleSheet.create({
paddingVertical: 25,
paddingHorizontal: 20,
alignItems: 'center',
borderTopStartRadius: 5,
borderTopEndRadius: 5,
borderTopStartRadius: 8,
borderTopEndRadius: 8,
},
contentPaperGrid: {
height: 125,
borderBottomEndRadius: 5,
borderBottomStartRadius: 5,
borderBottomEndRadius: 8,
borderBottomStartRadius: 8,
paddingHorizontal: 20,
justifyContent: 'space-evenly',
},
contentPaperGrid2: {
height: 100,
borderBottomEndRadius: 5,
borderBottomStartRadius: 5,
borderBottomEndRadius: 8,
borderBottomStartRadius: 8,
paddingHorizontal: 20,
paddingVertical: 15,
justifyContent: 'flex-start',
},
wrapGridItem: {
borderWidth: 1,
borderRadius: 5,
borderRadius: 8,
padding: 10,
flexDirection: 'row',
alignItems: 'center',
@@ -88,13 +88,13 @@ const CardStyles = StyleSheet.create({
flexDirection: 'row',
alignItems: 'center',
backgroundColor: 'transparent',
borderRadius: 10,
borderRadius: 8,
borderWidth: 1,
paddingHorizontal: 12,
paddingVertical: 10,
gap: 12,
},
sectionCard: { borderRadius: 12, padding: 16, borderWidth: 1 },
sectionCard: { borderRadius: 8, padding: 16, borderWidth: 1 },
sectionHeader: { flexDirection: 'row', alignItems: 'center', marginBottom: 12 },
sectionHeaderRow: {
flexDirection: 'row',
@@ -110,12 +110,12 @@ const CardStyles = StyleSheet.create({
justifyContent: 'center',
},
sectionActionRow: { flexDirection: 'row', alignItems: 'center', gap: 10 },
sectionBadge: { borderRadius: 10, paddingHorizontal: 8, paddingVertical: 2 },
sectionBadge: { borderRadius: 20, paddingHorizontal: 8, paddingVertical: 2 },
wrapBar: { height: 20, backgroundColor: '#ccc', borderRadius: 10, margin: 0, width: '100%' },
contentBar: { height: 20, backgroundColor: '#3B82F6', borderRadius: 10 },
toastContainer: {
backgroundColor: 'white',
borderRadius: 10,
borderRadius: 8,
padding: 10,
width: '90%',
borderWidth: 1,
@@ -135,7 +135,7 @@ const CardStyles = StyleSheet.create({
loadingBox: {
paddingVertical: 15,
paddingHorizontal: 40,
borderRadius: 5,
borderRadius: 8,
alignItems: 'center',
gap: 10,
},
@@ -143,16 +143,16 @@ const CardStyles = StyleSheet.create({
flex: 1,
justifyContent: "center",
marginHorizontal: 15,
borderRadius: 15,
borderRadius: 8,
backgroundColor: '#19345E',
display: 'flex',
width: '92%',
resizeMode: 'stretch',
overflow: 'hidden',
},
wrapItemDiscussion: { padding: 15, borderRadius: 5, borderBottomWidth: 1 },
wrapItemDiscussion: { padding: 15, borderRadius: 8, borderBottomWidth: 1 },
wrapItemBorderBottom: { padding: 10, borderBottomWidth: 1 },
wrapItemBorderAll: { padding: 10, borderWidth: 1, borderRadius: 5, marginBottom: 5 },
wrapItemBorderAll: { padding: 10, borderWidth: 1, borderRadius: 8, marginBottom: 5 },
wrapItemBorderNone: { padding: 10, marginBottom: 5 },
});

View File

@@ -5,14 +5,14 @@ const ComponentStyles = StyleSheet.create({
userProfileExtraSmall: { width: 35, height: 35, borderRadius: 100 },
userProfileSmall: { width: 48, height: 48, borderRadius: 100 },
userProfileBig: { width: 100, height: 100, borderRadius: 100 },
imgListBanner: { width: 100, height: 50, borderRadius: 5 },
imgListBanner: { width: 100, height: 50, borderRadius: 8 },
iconContent: { padding: 10, borderRadius: 100, backgroundColor: '#E5E7EB' },
// chip
chip: {
paddingVertical: 5,
paddingHorizontal: 15,
borderRadius: 5,
borderRadius: 20,
borderWidth: 1,
borderColor: "transparent",
marginRight: 10,
@@ -26,14 +26,14 @@ const ComponentStyles = StyleSheet.create({
top: -6,
left: -6,
backgroundColor: "#384288",
borderRadius: 10,
borderRadius: 8,
padding: 2,
},
// badge & progress
badgeCol: { alignItems: 'center', gap: 6 },
progressBadge: { borderRadius: 10, paddingHorizontal: 12, paddingVertical: 5, borderWidth: 1, alignItems: 'center' },
taskCountBadge: { borderRadius: 6, paddingHorizontal: 7, paddingVertical: 2 },
progressBadge: { borderRadius: 8, paddingHorizontal: 12, paddingVertical: 5, borderWidth: 1, alignItems: 'center' },
taskCountBadge: { borderRadius: 8, paddingHorizontal: 7, paddingVertical: 2 },
positionBadge: { borderRadius: 20, paddingHorizontal: 8, paddingVertical: 3 },
textProgressPercent: { fontSize: 22, fontWeight: 'bold', lineHeight: 28 },
progressTrack: { height: 8, borderRadius: 4, overflow: 'hidden' },
@@ -41,11 +41,11 @@ const ComponentStyles = StyleSheet.create({
reportContent: { borderLeftWidth: 3, paddingLeft: 12 },
expandBtn: { flexDirection: 'row', alignItems: 'center', alignSelf: 'flex-start', marginTop: 8, gap: 4 },
fileGrid: { flexDirection: 'row', flexWrap: 'wrap', gap: 8 },
fileCard: { width: '48%', borderRadius: 10, borderWidth: 1, padding: 12, flexDirection: 'row', alignItems: 'center', gap: 10 },
fileCard: { width: '48%', borderRadius: 8, borderWidth: 1, padding: 12, flexDirection: 'row', alignItems: 'center', gap: 10 },
// calendar
signDate: { width: 20, height: 2, borderRadius: 3, marginTop: 3 },
selectedDate: { backgroundColor: '#238be6', borderRadius: 5 },
signDate: { width: 20, height: 2, borderRadius: 4, marginTop: 3 },
selectedDate: { backgroundColor: '#238be6', borderRadius: 4 },
selectRangeDate: { backgroundColor: '#228be61f' },
calendarDotRow: { flexDirection: 'row', gap: 2, height: 6, marginTop: 1 },
calendarDot: { width: 5, height: 5, borderRadius: 3 },
@@ -55,7 +55,7 @@ const ComponentStyles = StyleSheet.create({
villageEventBadge: { paddingHorizontal: 6, paddingVertical: 2, borderRadius: 4, marginRight: 6 },
// event item
itemEvent: { padding: 10, borderRadius: 10, flexDirection: 'row', alignContent: 'stretch', marginBottom: 10 },
itemEvent: { padding: 10, borderRadius: 8, flexDirection: 'row', alignContent: 'stretch', marginBottom: 10 },
dividerEvent: { width: 7, borderRadius: 5, marginRight: 10 },
// member
@@ -75,16 +75,16 @@ const ComponentStyles = StyleSheet.create({
memberInfoContent: { flex: 1, marginLeft: 10 },
// discussion
discussionCard: { borderRadius: 10, borderWidth: 1, padding: 14 },
discussionIconCircle: { width: 40, height: 40, borderRadius: 20, alignItems: 'center', justifyContent: 'center', flexShrink: 0 },
discussionIconCircleLg: { width: 44, height: 44, borderRadius: 22, alignItems: 'center', justifyContent: 'center' },
discussionCard: { borderRadius: 8, borderWidth: 1, padding: 14 },
discussionIconCircle: { width: 40, height: 40, borderRadius: 100, alignItems: 'center', justifyContent: 'center', flexShrink: 0 },
discussionIconCircleLg: { width: 44, height: 44, borderRadius: 100, alignItems: 'center', justifyContent: 'center' },
discussionStatusPill: { alignSelf: 'flex-start', marginTop: 3, paddingHorizontal: 8, paddingVertical: 2, borderRadius: 20, borderWidth: 1 },
discussionStatusText: { fontSize: 11, fontWeight: '600' },
discussionCardIndent: { marginLeft: 50 },
discussionSeparator: { height: 8 },
discussionCommentText: { fontSize: 12, marginLeft: 5 },
discussionDateText: { fontSize: 11 },
discussionCommentCard: { borderRadius: 10, borderWidth: 1, padding: 12, marginBottom: 8, flexDirection: 'row' },
discussionCommentCard: { borderRadius: 8, borderWidth: 1, padding: 12, marginBottom: 8, flexDirection: 'row' },
discussionEditedText: { fontSize: 10, fontStyle: 'italic' },
discussionHeaderPadding: { paddingTop: 12 },
discussionListPadding: { paddingTop: 8 },
@@ -98,7 +98,7 @@ const ComponentStyles = StyleSheet.create({
position: 'absolute',
left: 24,
right: 24,
borderRadius: 16,
borderRadius: 8,
padding: 20,
shadowColor: '#000',
shadowOffset: { width: 0, height: 4 },

View File

@@ -2,7 +2,7 @@ import { StyleSheet } from "react-native";
const InputStyles = StyleSheet.create({
inputRoundForm: {
borderRadius: 5,
borderRadius: 12,
borderColor: '#d6d8f6',
borderWidth: 1,
paddingVertical: 10,
@@ -25,7 +25,7 @@ const InputStyles = StyleSheet.create({
lineHeight: 45,
fontSize: 24,
borderWidth: 1,
borderRadius: 15,
borderRadius: 12,
borderColor: 'gray',
textAlign: 'center',
},

View File

@@ -6,31 +6,31 @@ const ModalStyles = StyleSheet.create({
width: '100%',
paddingBottom: 20,
backgroundColor: 'white',
borderTopRightRadius: 18,
borderTopLeftRadius: 18,
borderTopRightRadius: 20,
borderTopLeftRadius: 20,
position: 'absolute',
bottom: 0,
},
modalContentNew: {
width: '100%',
backgroundColor: 'white',
borderTopRightRadius: 18,
borderTopLeftRadius: 18,
borderTopRightRadius: 20,
borderTopLeftRadius: 20,
paddingTop: 5,
paddingBottom: 5,
paddingHorizontal: 20,
},
modalFloatContent: {
backgroundColor: 'white',
borderRadius: 18,
borderRadius: 20,
paddingTop: 5,
paddingBottom: 10,
paddingHorizontal: 20,
},
titleContainer: {
backgroundColor: 'white',
borderTopRightRadius: 10,
borderTopLeftRadius: 10,
borderTopRightRadius: 20,
borderTopLeftRadius: 20,
paddingHorizontal: 20,
flexDirection: 'row',
alignItems: 'center',
@@ -65,7 +65,7 @@ const ModalStyles = StyleSheet.create({
},
modalConfirmContainer: {
width: '80%',
borderRadius: 14,
borderRadius: 8,
overflow: 'hidden',
elevation: 2,
shadowColor: '#000',
@@ -92,7 +92,7 @@ const ModalStyles = StyleSheet.create({
position: 'absolute',
width: 300,
height: 300,
borderRadius: 150,
borderRadius: 100,
backgroundColor: 'rgba(255, 255, 255, 0.05)',
top: -50,
right: -50,

View File

@@ -8,7 +8,7 @@ const NotificationStyles = StyleSheet.create({
notifItemRow: {
flexDirection: 'row',
alignItems: 'center',
borderRadius: 10,
borderRadius: 8,
borderWidth: 1,
paddingHorizontal: 12,
paddingVertical: 10,
@@ -17,7 +17,7 @@ const NotificationStyles = StyleSheet.create({
notifIconContainer: {
width: 42,
height: 42,
borderRadius: 21,
borderRadius: 100,
alignItems: 'center',
justifyContent: 'center',
flexShrink: 0,

View File

@@ -394,7 +394,7 @@
);
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = mobiledarmasaba.app;
PRODUCT_NAME = Desa;
PRODUCT_NAME = "Desa";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Desa/Desa-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -429,7 +429,7 @@
);
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = mobiledarmasaba.app;
PRODUCT_NAME = Desa;
PRODUCT_NAME = "Desa";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Desa/Desa-Bridging-Header.h";
SWIFT_VERSION = 5.0;

View File

@@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>2.1.0</string>
<string>2.2.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -39,7 +39,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>9</string>
<string>10</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSMinimumSystemVersion</key>