// fc-components.jsx — shared primitives, NodeCard, FcCanvas, ChartSidebar const { useState, useRef, useEffect, useMemo, useCallback } = React; const NODE_W = 230; const NODE_H_EST = 100; // ── Shared primitives ────────────────────────────────────────────────────── const fcInputStyle = { background: 'var(--bg)', border: '1px solid var(--border)', borderRadius: 8, padding: '7px 10px', color: 'var(--text)', fontSize: 12, width: '100%', outline: 'none', fontFamily: 'inherit', boxSizing: 'border-box', }; const fcSelectStyle = { ...fcInputStyle, cursor: 'pointer' }; const fcBtnStyle = { background: 'transparent', border: '1px solid var(--border)', borderRadius: 8, padding: '6px 12px', fontSize: 11, cursor: 'pointer', color: 'var(--text)', fontFamily: 'inherit', fontWeight: 500, transition: 'all 0.12s', }; function FcLabel({ children }) { return
{children}
; } function FcInput(props) { return ; } function FcTextarea(props) { return