/** * [INPUT]: 依赖 extracted.css 的 .zzm-sort(表头排序键悬停/焦点) * [OUTPUT]: 对外提供 DataTable 组件——浅灰 mono 表头 + 可排序列 + 细线分行 + 窄屏只横向滚动的数据窗口 * [POS]: src/extracted 的数据模式,1:1 提炼自 edu AdmDesign「10 · 数据窗口」样张(后台邀请关系/激活码表格同款)。 * columns=[{key,label,fr,mono,accent,render}];sort={key,dir:'asc'|'desc'} 受控,onSort(key) 由调用方切换方向 * [PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md */ const ACCENT = 'var(--zzm-accent, #A6402F)' const MONO = "ui-monospace,'SF Mono',Menlo,monospace" export function DataTable({ columns = [], rows = [], sort, onSort, minWidth = 680, rowKey = (r, i) => i }) { const grid = columns.map((c) => `${c.fr ?? 1}fr`).join(' ') const arrow = (c) => (sort?.key === c.key ? (sort.dir === 'desc' ? '↓' : '↑') : '↕') return (