diff --git a/src/components/nodes/ControlPanel.tsx b/src/components/nodes/ControlPanel.tsx index 4a8afc08..e481b028 100644 --- a/src/components/nodes/ControlPanel.tsx +++ b/src/components/nodes/ControlPanel.tsx @@ -13,6 +13,7 @@ import { deduplicatedFetch } from "@/utils/deduplicatedFetch"; import { evaluateRule } from "@/store/utils/ruleEvaluation"; import { EASING_PRESETS, getPresetBezier, getEasingBezier } from "@/lib/easing-presets"; import { getAllEasingNames, getEasingFunction } from "@/lib/easing-functions"; +import { getModelPageUrl, getProviderDisplayName } from "@/utils/providerUrls"; // List of node types that have configurable parameters const CONFIGURABLE_NODE_TYPES: NodeType[] = [ @@ -119,12 +120,12 @@ export function ControlPanel() {
{/* Header */} -

+

{getNodeTypeTitle(selectedNode.type as NodeType)}

{/* Node-specific controls */} -
+
{selectedNode.type === "nanoBanana" && ( )} @@ -353,16 +354,35 @@ function GenerateImageControls({ node }: { node: Node }) { return ( <>
- {/* Model display + Browse */} -
- -
+ {/* Model name + provider with link — sits directly under title divider */} +
+
{nodeData.selectedModel?.displayName || GEMINI_IMAGE_MODELS.find(m => m.value === nodeData.model)?.label || "Select model..."}
-
- {enabledProviders.find(p => p.id === currentProvider)?.name || currentProvider} +
+ + {enabledProviders.find(p => p.id === currentProvider)?.name || currentProvider} + + {nodeData.selectedModel?.modelId && ( + { + if (!getModelPageUrl(currentProvider, nodeData.selectedModel?.modelId || "")) { + e.preventDefault(); + } + }} + > + + + + + )}