MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / ToolGroupRow

Function ToolGroupRow

packages/react/src/components/tool-tree.tsx:643–701  ·  view source on GitHub ↗
(props: {
  path: string;
  segment: string;
  depth: number;
  count: number;
  open: boolean;
  onToggle: () => void;
  search: string;
  onSetPolicy?: (pattern: string, action: ToolPolicyAction) => void;
  onClearPolicy?: (pattern: string) => void;
  patternForDisplay: (displayPattern: string) => string;
  exactRule?: ToolPolicyAction;
})

Source from the content-addressed store, hash-verified

641}
642
643function ToolGroupRow(props: {
644 path: string;
645 segment: string;
646 depth: number;
647 count: number;
648 open: boolean;
649 onToggle: () => void;
650 search: string;
651 onSetPolicy?: (pattern: string, action: ToolPolicyAction) => void;
652 onClearPolicy?: (pattern: string) => void;
653 patternForDisplay: (displayPattern: string) => string;
654 exactRule?: ToolPolicyAction;
655}) {
656 const showActions = !!props.onSetPolicy;
657 return (
658 <div className="group/tt-row relative flex items-stretch hover:bg-accent/60">
659 <Button
660 variant="ghost"
661 aria-expanded={props.open}
662 onClick={props.onToggle}
663 className={cn(rowBaseClasses, "hover:bg-transparent")}
664 style={{
665 paddingLeft: rowIndent(props.depth),
666 paddingRight: showActions ? 36 : 12,
667 }}
668 >
669 <ChevronRightIcon
670 aria-hidden
671 className={cn(
672 "size-3.5 shrink-0 text-muted-foreground transition-transform duration-150",
673 props.open && "rotate-90",
674 )}
675 />
676 <span className="min-w-0 flex-1 truncate text-left font-mono text-xs text-foreground">
677 {highlightMatch(props.segment, props.search)}
678 </span>
679 <span className="shrink-0 tabular-nums text-xs text-muted-foreground">{props.count}</span>
680 </Button>
681 {showActions && (
682 <div
683 className={cn(
684 "absolute right-1.5 top-1/2 -translate-y-1/2 transition-opacity",
685 props.exactRule
686 ? "opacity-100"
687 : "opacity-0 group-hover/tt-row:opacity-100 focus-within:opacity-100",
688 )}
689 >
690 <PolicyActionMenu
691 pattern={props.patternForDisplay(`${props.path}.*`)}
692 current={props.exactRule}
693 onSet={props.onSetPolicy!}
694 onClear={props.onClearPolicy}
695 triggerLabel={`Set policy for ${props.path}.*`}
696 />
697 </div>
698 )}
699 </div>
700 );

Callers

nothing calls this directly

Calls 3

cnFunction · 0.90
rowIndentFunction · 0.85
highlightMatchFunction · 0.85

Tested by

no test coverage detected