import type { StoryTreeNodeView } from '../state/viewModel'; interface StoryTreeProps { nodes: StoryTreeNodeView[]; selectedId: string | null; onSelect: (id: string) => void; } interface StoryTreeNodeProps { node: StoryTreeNodeView; depth: number; selectedId: string | null; onSelect: (id: string) => void; } function StoryTreeNode({ node, depth, selectedId, onSelect }: StoryTreeNodeProps) { const isSelected = node.id === selectedId; let labelClasses = 'w-full cursor-pointer rounded px-2 py-1 text-left text-sm transition-colors duration-150'; if (isSelected) { labelClasses += ' bg-amber-500/15 border border-amber-500/40 text-amber-200'; } else if (node.active) { labelClasses += ' text-amber-400 hover:bg-slate-800/60 border border-transparent'; } else if (!node.seen) { labelClasses += ' text-slate-600 hover:bg-slate-800/40 border border-transparent'; } else { labelClasses += ' text-slate-300 hover:bg-slate-800/60 border border-transparent'; } return (
No story branches yet…