import { useLingui } from "@lingui/react/macro"; import type { BotSection, Space } from "@rakazo/contracts"; import { Button } from "@rakazo/ui-web"; import { ChevronDown, Folder, GripVertical, Lock, MoreHorizontal } from "lucide-react"; import type { RefObject } from "react"; import { ProjectDragGrip } from "../../components/SortableGroup"; import type { ContextMenuPosition } from "../BotContextMenu"; export type SidebarGroupHeaderGroup = { key: string; title: string | null; sectionId: string | null; spaceId: string; spaceName: string; canDeleteSpace: boolean; emptySpaceId: string | undefined; showLock: boolean; }; export type SpaceMenuRequest = { id: string; position: ContextMenuPosition }; export type SectionMenuRequest = { section: BotSection; spaceId: string; position: ContextMenuPosition; }; /** * Collapsible title of a sidebar group. Project groups add a drag grip, show a lock for other * spaces and select an empty space instead of opening it. */ export function SidebarGroupHeader({ variant, group, collapsed, activeSpaceId, botSections, spaces, onOpenEmptySpace, onToggle, sectionMenuAnchor, onSectionMenu, spaceMenuAnchor, onSpaceMenu, }: { variant: "conversation" | "project"; group: SidebarGroupHeaderGroup; collapsed: boolean; activeSpaceId: string | undefined; botSections: BotSection[]; spaces: Space[]; onOpenEmptySpace: (spaceId: string) => void; onToggle: (key: string) => void; sectionMenuAnchor: RefObject; onSectionMenu: (menu: SectionMenuRequest) => void; spaceMenuAnchor: RefObject; onSpaceMenu: (menu: SpaceMenuRequest) => void; }) { const { t } = useLingui(); const project = variant === "project"; return (
{project ? ( // Drag grip — positioned to the left of the title text ) : null} {group.canDeleteSpace ? ( ) : null}
); }