/** * Project properties section. Tappable rows for Status / Priority / Lead. * Each row opens a picker sheet via the corresponding `onPress*` callback. * * Layout mirrors iOS Settings rows: label on left, current value on right * with a disclosure chevron, full-width separator below each row. Tapping * anywhere on the row triggers the picker. * * Lead supports both member and agent (Project.lead_type), resolved via * useActorLookup so it shares the same lookup with my-issues + issue detail. */ import { Pressable, View } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import type { Project } from "@multica/core/types"; import { Text } from "@/components/ui/text"; import { ActorAvatar } from "@/components/ui/actor-avatar"; import { ProjectStatusIcon } from "@/components/ui/project-status-icon"; import { ProjectPriorityIcon } from "@/components/ui/project-priority-icon"; import { projectPriorityLabel, projectStatusLabel, } from "@/lib/project-status"; import { useActorLookup } from "@/data/use-actor-name"; import { useColorScheme } from "@/lib/use-color-scheme"; import { THEME } from "@/lib/theme"; interface Props { project: Project; onPressStatus: () => void; onPressPriority: () => void; onPressLead: () => void; } export function ProjectPropertiesSection({ project, onPressStatus, onPressPriority, onPressLead, }: Props) { const { getName } = useActorLookup(); const leadName = project.lead_type && project.lead_id ? getName(project.lead_type, project.lead_id) : null; return ( } right={ {projectStatusLabel(project.status)} } /> } right={ {projectPriorityLabel(project.priority)} } /> ) : ( ) } right={ {leadName ?? "Unassigned"} } /> ); } function Row({ label, onPress, left, right, }: { label: string; onPress: () => void; left: React.ReactNode; right: React.ReactNode; }) { return ( {label} {left} {right} ); } function Separator() { return ; } function Chevron() { const { colorScheme } = useColorScheme(); return ( ); } function PlaceholderAvatar() { return ( ); }