feat: add node calssification

This commit is contained in:
2026-03-10 21:34:39 +01:00
parent eed880e7ef
commit 87c46c25c6
8 changed files with 79 additions and 19 deletions

View File

@@ -30,6 +30,7 @@ import {
ContextMenu,
ContextMenuContent,
ContextMenuItem,
ContextMenuLabel,
ContextMenuSeparator,
ContextMenuSub,
ContextMenuSubContent,
@@ -52,6 +53,7 @@ import { ClipboardPaste, FolderOpen, FileStack, CircleDotDashed } from 'lucide-r
import { DEFAULT_NODE_STYLE, getDefaultDataForType, getNextNodeId } from '@/lib/flowUtils'
import {
getRegisteredNodeTypes,
getRegisteredNodeTypesGroupedByClassification,
getRegisteredNodeTypeIds,
getDefaultStyle,
isConnectionAllowed,
@@ -594,17 +596,25 @@ export function CanvasPage({ projectId }: CanvasPageProps) {
<ContextMenuSub>
<ContextMenuSubTrigger>Create Node</ContextMenuSubTrigger>
<ContextMenuSubContent className="w-44">
<ContextMenuGroup>
{getRegisteredNodeTypes().map((desc, index) => (
<React.Fragment key={desc.id}>
{index === 2 ? <ContextMenuSeparator /> : null}
<ContextMenuItem onSelect={() => createNode(desc.id)}>
{desc.menuIcon}
{desc.menuLabel}
</ContextMenuItem>
</React.Fragment>
))}
</ContextMenuGroup>
{getRegisteredNodeTypesGroupedByClassification().map(
(group, groupIndex) =>
group.types.length > 0 && (
<React.Fragment key={group.classification}>
{groupIndex > 0 && <ContextMenuSeparator />}
<ContextMenuGroup>
<ContextMenuLabel className="text-muted-foreground">
{group.label}
</ContextMenuLabel>
{group.types.map((desc) => (
<ContextMenuItem key={desc.id} onSelect={() => createNode(desc.id)}>
{desc.menuIcon}
{desc.menuLabel}
</ContextMenuItem>
))}
</ContextMenuGroup>
</React.Fragment>
)
)}
</ContextMenuSubContent>
</ContextMenuSub>
<ContextMenuSeparator />