import React from "react"; import { Box, Card, Flex, Heading, IconButton, Link, Spacer, Text, VStack, HStack, } from "@chakra-ui/react"; import { LuLink } from "react-icons/lu"; import { Room } from "../../../api"; import { RoomActionsMenu } from "./RoomActionsMenu"; interface RoomCardsProps { rooms: Room[]; linkCopied: string; onCopyUrl: (roomName: string) => void; onEdit: (roomId: string, roomData: any) => void; onDelete: (roomId: string) => void; } const getRoomModeDisplay = (mode: string): string => { switch (mode) { case "normal": return "2-4 people"; case "group": return "2-200 people"; default: return mode; } }; const getRecordingDisplay = (type: string, trigger: string): string => { if (type === "none") return "-"; if (type === "local") return "Local"; if (type === "cloud") { switch (trigger) { case "none": return "Cloud"; case "prompt": return "Cloud (Prompt)"; case "automatic-2nd-participant": return "Cloud (Auto)"; default: return `Cloud`; } } return type; }; export function RoomCards({ rooms, linkCopied, onCopyUrl, onEdit, onDelete, }: RoomCardsProps) { return ( {rooms.map((room) => ( {room.name} {linkCopied === room.name ? ( Copied! ) : ( onCopyUrl(room.name)} mr={2} size="sm" variant="ghost" > )} {room.zulip_auto_post && ( Zulip: {room.zulip_stream && room.zulip_topic ? `${room.zulip_stream} > ${room.zulip_topic}` : room.zulip_stream || "Enabled"} )} Size: {getRoomModeDisplay(room.room_mode)} Recording: {getRecordingDisplay( room.recording_type, room.recording_trigger, )} ))} ); }