Skip to main content
Glama
index.tsx3.03 kB
import { User } from 'lucide-react'; import { Avatar } from '@/components/ui/avatar'; import { Button } from '@/components/ui/button'; import { SidebarMenuButton, SidebarMenuItem, useSidebar, } from '@/components/ui/sidebar-shadcn'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip'; import { cn } from '@/lib/utils'; import { PROJECT_COLOR_PALETTE, ProjectType, ProjectWithLimits, } from '@activepieces/shared'; import { ApProjectDisplay } from '../../ap-project-display'; type ProjectSideBarItemProps = { project: ProjectWithLimits; isCurrentProject: boolean; handleProjectSelect: (projectId: string) => void; }; const ProjectSideBarItem = ({ project, isCurrentProject, handleProjectSelect, }: ProjectSideBarItemProps) => { const { state } = useSidebar(); const projectAvatar = project.type === ProjectType.TEAM ? ( <Avatar className="size-6 flex items-center justify-center rounded-sm" style={{ backgroundColor: PROJECT_COLOR_PALETTE[project.icon.color].color, color: PROJECT_COLOR_PALETTE[project.icon.color].textColor, }} > {project.displayName.charAt(0).toUpperCase()} </Avatar> ) : ( <User className="size-5 flex items-center justify-center" /> ); return ( <SidebarMenuItem onClick={(e) => e.stopPropagation()}> {state === 'collapsed' ? ( <TooltipProvider delayDuration={0}> <Tooltip> <TooltipTrigger asChild> <Button variant="ghost" size="icon" onClick={() => handleProjectSelect(project.id)} className={cn( isCurrentProject && 'bg-sidebar-active hover:!bg-sidebar-active', 'relative flex items-center justify-center', )} > {projectAvatar} </Button> </TooltipTrigger> <TooltipContent side="right" align="center"> {project.displayName} </TooltipContent> </Tooltip> </TooltipProvider> ) : ( <SidebarMenuButton asChild className={cn( 'px-2 py-5 cursor-pointer', isCurrentProject && 'bg-sidebar-active hover:!bg-sidebar-active', )} > <div onClick={() => handleProjectSelect(project.id)} className="w-full flex items-center justify-between gap-2" > <ApProjectDisplay title={project.displayName} icon={project.icon} maxLengthToNotShowTooltip={28} projectType={project.type} /> {project.type === ProjectType.PERSONAL && ( <span className="text-xs text-muted-foreground">Private</span> )} </div> </SidebarMenuButton> )} </SidebarMenuItem> ); }; export default ProjectSideBarItem;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server