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

Function ToolGroupRow

packages/react/src/components/tool-tree.tsx:631–689  ·  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

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

Callers

nothing calls this directly

Calls 3

cnFunction · 0.90
rowIndentFunction · 0.85
highlightMatchFunction · 0.85

Tested by

no test coverage detected