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}
);
}