Files
DDD1542 2f398ae0b3 chore: 제어모드 IDE 작업 + v2/legacy 레지스트리 컴포넌트 폐기
- 제어모드 IDE: ControlCardPanel, control/ide/* (Canvas/LeftRail/RightRail/PanZoomStage/V3RuleNode 등), schemas, lib/api/control
- 레지스트리 정리: aggregation-widget, status-count, section-card/paper, table-list(legacy/v2), tabs-widget 폐기 → table/_shared/ 로 통합
- InvLegacyButtonConfigPanel cp 마이그레이션
- canonical data view cleanup 후속 노트
2026-05-19 21:31:03 +09:00

49 lines
1.6 KiB
TypeScript

'use client';
/**
* StatusBar — v3 V3StatusBar 미러
* 좌측: Workflow icon + 룰 이름 + dirty + 노드/연결 카운트
* 중간: 진행 dot (pulse) + 라텐시
* 우측: 최근 실행 시간
*
* 실 데이터 없는 필드는 '—' fallback (시안 mock 글자 박지 않음)
*/
import { Workflow } from 'lucide-react';
import { useControlMode } from '../hooks/useControlMode';
interface StatusBarProps {
selectedCard: Record<string, any>;
}
export function StatusBar({ selectedCard }: StatusBarProps) {
void selectedCard;
const mode = useControlMode((s) => s.mode);
const ruleNodes = useControlMode((s) => s.ruleNodes);
const ruleConnections = useControlMode((s) => s.ruleConnections);
const activeRuleId = useControlMode((s) => s.activeRuleId);
// 룰 이름 — store 에 룰 메타 없으면 '—' (룰 메타 API 연결 후 채워짐)
const ruleName = activeRuleId ?? '—';
return (
<div className="ctrl-ide-statusbar">
<span className="ctrl-status-rule">
<Workflow size={11} style={{ color: 'rgb(var(--v5-primary-rgb))' }} />
{ruleName}
<span className="ctrl-status-ver">v0</span>
</span>
<span><b>NODES</b> <code>{ruleNodes.length}</code></span>
<span><b>EDGES</b> <code>{ruleConnections.length}</code></span>
<span><b>MODE</b> <code>{mode.toUpperCase()}</code></span>
<div style={{ flex: 1 }} />
<span className="ctrl-status-pulse" title="live" />
<span><b> </b> <code></code></span>
<span><b></b> <code>ms</code></span>
</div>
);
}