/**
* 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 (
);
}