import { CarFront, Laptop, Monitor } from 'lucide-react' import type { LucideIcon } from 'lucide-react' import type React from 'react' import { PlatformOptionCard, RunningPlatformCard } from './PlatformCards' import PlatformFilterTabs, { type PlatformFilter } from './PlatformFilterTabs' import type { PlatformOption } from './types' const PLATFORM_ICONS: Record = { laptop: Laptop, monitor: Monitor, car: CarFront } type PlatformSelectionPanelProps = { mode: 'select' | 'settings' runningPlatforms: PlatformOption[] filteredPlatforms: PlatformOption[] filter: PlatformFilter counts: Record workspaceWeekTitle: string platformLoading: boolean isPlatformUnavailable: (platform: PlatformOption) => boolean getPlatformDotClass: (platform: PlatformOption) => string onFilterChange: (filter: PlatformFilter) => void onRunningOpen: (platform: PlatformOption) => void onRunningClose: (platform: PlatformOption) => void onPlatformAction: (platform: PlatformOption) => void onOpenSettings: (platform: PlatformOption) => void } export default function PlatformSelectionPanel({ mode, runningPlatforms, filteredPlatforms, filter, counts, workspaceWeekTitle, platformLoading, isPlatformUnavailable, getPlatformDotClass, onFilterChange, onRunningOpen, onRunningClose, onPlatformAction, onOpenSettings }: PlatformSelectionPanelProps): React.JSX.Element { return (
{runningPlatforms.length > 0 && (

실행중인 플랫폼

{runningPlatforms.map((platform) => { const Icon = PLATFORM_ICONS[platform.iconKey] ?? Monitor return ( onRunningOpen(platform)} onClose={() => onRunningClose(platform)} /> ) })}
)} {runningPlatforms.length > 0 && (
)}
{filteredPlatforms.length ? filteredPlatforms.map((platform) => { const { id, status, action, state, iconKey } = platform const Icon = PLATFORM_ICONS[iconKey] ?? Monitor const locked = state === 'locked' const unavailable = isPlatformUnavailable(platform) const actionDisabled = locked || unavailable const runningInSelectionList = runningPlatforms.some((runningPlatform) => runningPlatform.id === platform.id) const displayStatus = unavailable && !status.includes('연결 끊김') && !status.includes('연결 불가') ? '연결 끊김' : status const hasControl = platform.control?.status === 'ACTIVE' const primaryAction = hasControl ? '연결' : action const platformActionDisabled = runningInSelectionList || actionDisabled return ( { if (runningInSelectionList) return onPlatformAction(platform) }} onSettings={() => onOpenSettings(platform)} /> ) }) : (
사용 가능한 플랫폼 데이터가 없습니다.

강의에 배정된 플랫폼을 불러오지 못했거나 아직 등록된 데이터가 없습니다.

)}
) }