feat: redesign section progress, report, link, file, dan cancel pada project & division/task

- SectionProgress: progress bar animated, badge persentase, label status, task count
- SectionReport: header ikon, left accent border, TextExpandable dengan label Indonesia
- SectionLink: tap langsung buka URL, ikon per domain, long press untuk hapus
- SectionFile: icon container konsisten 30×30 di semua section
- SectionCancel: card subtle dengan warna error, konsisten dengan visual language baru
- TextExpandable: fix bug show/hide tidak muncul setelah content diupdate
- Tambah 14 style class baru di Styles.ts untuk menggantikan inline style
- Terapkan semua perubahan ke fitur division/task
- Fix menu "Edit Tugas" di sectionTanggalTugasTask yang terpotong karena overflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 16:22:52 +08:00
parent eccfe29387
commit b61cd51628
16 changed files with 736 additions and 510 deletions

View File

@@ -1,12 +1,11 @@
import { ColorsStatus } from "@/constants/ColorsStatus";
import Styles from "@/constants/Styles";
import { useTheme } from "@/providers/ThemeProvider";
import { AntDesign } from "@expo/vector-icons";
import Text from "./Text";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import { View } from "react-native";
import Text from "./Text";
type Props = {
text?: string,
text?: string
title?: string
}
@@ -14,18 +13,26 @@ export default function SectionCancel({ text, title }: Props) {
const { colors } = useTheme();
return (
<View style={[Styles.p10, Styles.round05, Styles.mb15, { backgroundColor: colors.error + '70' }]}>
<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 style={[
Styles.wrapPaper,
Styles.mb15,
Styles.sectionCard,
{ backgroundColor: colors.error + '12', borderColor: colors.error + '40' },
]}>
<View style={[Styles.sectionHeader, !text && { marginBottom: 0 }]}>
<View style={[Styles.sectionIconBox, Styles.mr10, { backgroundColor: colors.error + '20' }]}>
<MaterialCommunityIcons name="close-circle-outline" size={18} color={colors.error} />
</View>
<Text style={[Styles.textDefaultSemiBold, { color: colors.error }]}>
{title ?? 'Kegiatan Dibatalkan'}
</Text>
</View>
{
text && (
<View>
<Text style={[Styles.mt05]}>{text}</Text>
</View>
)
}
{text && (
<View style={[Styles.reportContent, { borderLeftColor: colors.error + '50' }]}>
<Text style={[Styles.textDefault, { color: colors.text }]}>{text}</Text>
</View>
)}
</View>
)
}
}