diff --git a/src/browser/features/Memory/MemoryBrowser.tsx b/src/browser/features/Memory/MemoryBrowser.tsx
index e85aa56bf3..dba13f9bdc 100644
--- a/src/browser/features/Memory/MemoryBrowser.tsx
+++ b/src/browser/features/Memory/MemoryBrowser.tsx
@@ -319,6 +319,19 @@ function buildTree(files: MemoryFileInfo[]): TreeDir {
return root;
}
+/**
+ * Disclosure caret shared by the scope and directory rows: points down when
+ * expanded, right when collapsed. `className` is appended to the shared sizing
+ * classes so each row can add layout tweaks (e.g. `shrink-0`).
+ */
+function DisclosureChevron(props: { open: boolean; className?: string }) {
+ const Icon = props.open ? ChevronDown : ChevronRight;
+ const className = props.className
+ ? `text-muted h-3 w-3 ${props.className}`
+ : "text-muted h-3 w-3";
+ return ;
+}
+
/** Collapsible scope section, mirroring the GoalBoardSections shell. */
function ScopeSection(props: ScopeSectionProps) {
const [isOpen, setIsOpen] = useState(true);
@@ -330,11 +343,7 @@ function ScopeSection(props: ScopeSectionProps) {
aria-expanded={isOpen}
onClick={() => setIsOpen((prev) => !prev)}
>
- {isOpen ? (
-
- ) : (
-
- )}
+
{props.title}
({props.files.length})
@@ -393,11 +402,7 @@ function DirRow(props: TreeNodesProps) {
aria-expanded={isOpen}
onClick={() => setIsOpen((prev) => !prev)}
>
- {isOpen ? (
-
- ) : (
-
- )}
+
{isOpen ? (
) : (