;
currentDocumentId?: string;
entry: ProjectDocuments;
expanded: boolean;
onCreateDocument: (project: Api.NavigationProject) => void;
onLoadMore: (entry: ProjectDocuments) => void;
onOpenDocument: (documentId: string) => void;
onRenameDocument: (channel: Api.Channel) => void;
onToggle: () => void;
},
) {
let { documents, project } = entry;
let { channels } = documents;
let label = project.repository?.name ?? project.repositoryName;
let canEdit = canEditProject(project);
let creating = creatingProjectIds.has(project.repositoryId);
return (
{project.available && canEdit && (
)}
{expanded && documents.status === "unavailable" && (
Access unavailable
)}
{expanded && documents.status === "error" && (
{documents.message}
)}
{expanded && documents.status === "loading" && channels.length === 0 && (
Loading documentsā¦
)}
{expanded && channels.length > 0 && (
)}
{expanded && documents.status === "loading" && channels.length > 0 && (
Loading moreā¦
)}
{expanded && documents.status === "ready" && documents.nextCursor && (
)}
);
}
export function ProjectSidebar(
{
accountMenu,
canCreateDocument,
creatingNewDocument,
creatingProjectIds,
currentDocumentId,
onAccount,
onAddProject,
onCollapse,
onCreateDocument,
onLoadMore,
onNewDocument,
onOpenDocument,
onRenameDocument,
onSearch,
projects,
user,
}: {
accountMenu?: ReactNode;
canCreateDocument: boolean;
creatingNewDocument: boolean;
creatingProjectIds: ReadonlySet;
currentDocumentId?: string;
onAccount: () => void;
onAddProject: () => void;
onCollapse: () => void;
onCreateDocument: (project: Api.NavigationProject) => void;
onLoadMore: (entry: ProjectDocuments) => void;
onNewDocument: () => void;
onOpenDocument: (documentId: string) => void;
onRenameDocument: (channel: Api.Channel) => void;
onSearch: () => void;
projects: ProjectDocuments[];
user: Api.User;
},
) {
let [collapsedProjectIds, setCollapsedProjectIds] = useState>(
() => new Set(),
);
return (
);
}
export function ProjectSidebarExpandButton(
{
buttonRef,
onExpand,
}: {
buttonRef?: RefObject;
onExpand: () => void;
},
) {
return (
);
}