'use client'; // Mira 首頁(Profile / KM Hub) // SDD: polaris/mira/.agents/specs/mira-app/design.md §5.2 // 這頁是 leo 的 KM 首頁,列出所有同層子頁的入口 // 河道 / Wiki 是同層子頁,不是父子關係 import Link from 'next/link'; import './mira.css'; type Entry = { href: string; emoji: string; title: string; desc: string; status?: 'live' | 'wip' | 'planned'; }; const ENTRIES: Entry[] = [ { href: '/mira/feed', emoji: '🌊', title: '河道', desc: '時間軸式貼文流,所有 source 進來的內容都在這', status: 'live', }, { href: '/mira/wiki', emoji: '📚', title: 'Wiki', desc: 'leo 的個人觀點累積(Karpathy LLM Wiki 風格)', status: 'live', }, { href: '/mira/plan', emoji: '📋', title: '計劃', desc: 'Task 列表 + 狀態切換 + workflow 觸發', status: 'planned', }, { href: '/mira/dissent', emoji: '⚔️', title: '異見牆', desc: 'Triplet 列表(含 ai-idea / 矛盾標記)', status: 'planned', }, ]; export default function MiraHubPage() { return (

🦔 Mira

leo 的個人 KM 系統

{ENTRIES.map((e) => ( ))}
); } function EntryCard({ entry }: { entry: Entry }) { const isClickable = entry.status === 'live'; const card = (
{ if (isClickable) e.currentTarget.style.borderColor = '#444'; }} onMouseLeave={(e) => { if (isClickable) e.currentTarget.style.borderColor = '#2a2a2a'; }} >
{entry.emoji} {entry.title} {entry.status === 'planned' && ( 未實作 )}
{entry.desc}
); return isClickable ? ( {card} ) : ( card ); }