{"$schema":"https:\/\/ui.particle.academy\/schema\/registry-item.json","name":"working-tree","type":"registry:ui","title":"WorkingTree","description":"Staged, unstaged, and untracked changes with stage\/unstage intents.","package":"fancy-git-ui","dependencies":["@particle-academy\/fancy-git"],"registryDependencies":[],"files":[{"path":"components\/fancy\/working-tree\/working-tree.tsx","content":"import type { WorkingTreeStatus } from \"@particle-academy\/fancy-git\";\n\nexport interface WorkingTreeProps {\n  value: WorkingTreeStatus;\n  selectedPaths?: string[];\n  onSelectedPathsChange?: (paths: string[]) => void;\n  onStage?: (paths: string[]) => void;\n  onUnstage?: (paths: string[]) => void;\n  pending?: boolean;\n  className?: string;\n}\n\nexport function WorkingTree({ value, selectedPaths = [], onSelectedPathsChange, onStage, onUnstage, pending, className }: WorkingTreeProps) {\n  const toggle = (path: string) => onSelectedPathsChange?.(selectedPaths.includes(path) ? selectedPaths.filter((item) => item !== path) : [...selectedPaths, path]);\n  return <section className={className} data-git-working-tree=\"\" aria-label=\"Working tree\">\n    <header><strong>{value.branch ?? \"Detached HEAD\"}<\/strong><span>{value.clean ? \"Clean\" : `${value.files.length} changes`}<\/span><\/header>\n    <ul>{value.files.map((file) => <li key={file.path} data-git-path={file.path}>\n      <label><input type=\"checkbox\" checked={selectedPaths.includes(file.path)} onChange={() => toggle(file.path)} \/> <code>{file.path}<\/code><\/label>\n      <span>{file.index ?? file.worktree}<\/span>\n    <\/li>)}<\/ul>\n    <footer>\n      <button type=\"button\" disabled={pending || selectedPaths.length === 0} onClick={() => onStage?.(selectedPaths)}>Stage<\/button>\n      <button type=\"button\" disabled={pending || selectedPaths.length === 0} onClick={() => onUnstage?.(selectedPaths)}>Unstage<\/button>\n    <\/footer>\n  <\/section>;\n}\n","type":"registry:ui","target":"components\/fancy\/working-tree\/working-tree.tsx"}]}