import { Pressable, Text, View } from "react-native"; import { CircleCheckBig, CircleDot, Pencil, Trash2, Users, } from "lucide-react-native"; import { cn } from "@/lib/utils"; import { BottomSheet } from "@/components/BottomSheet"; export type StreamActionId = | "toggle-status" | "rename" | "members" | "delete-particle"; interface StreamActionsSheetProps { open: boolean; onClose: () => void; onSelect: (action: StreamActionId) => void; streamStatus: "open" | "closed"; isCreator: boolean; /** True when the *current* particle is one this user can soft-delete. */ canDeleteParticle: boolean; } export function StreamActionsSheet({ open, onClose, onSelect, streamStatus, isCreator, canDeleteParticle, }: StreamActionsSheetProps) { const choose = (id: StreamActionId) => { onClose(); onSelect(id); }; return ( ) : ( ) } label={ streamStatus === "open" ? "Close stream" : "Reopen stream" } onPress={() => choose("toggle-status")} /> } label="Members" onPress={() => choose("members")} /> {isCreator ? ( } label="Rename stream" onPress={() => choose("rename")} /> ) : null} {canDeleteParticle ? ( } label="Delete particle" tone="destructive" onPress={() => choose("delete-particle")} /> ) : null} Cancel ); } function ActionRow({ icon, label, onPress, tone = "default", }: { icon: React.ReactNode; label: string; onPress: () => void; tone?: "default" | "destructive"; }) { return ( {icon} {label} ); }