@@ -154,8 +154,10 @@ const GroupBlockNode = memo(({ data, selected, id }: GroupBlockNodeProps) => {
154154
155155 { /* Render input handles */ }
156156 { inputPorts . map ( ( port , index ) => {
157- const spacing = 100 / ( inputPorts . length + 1 )
158- const topPercent = spacing * ( index + 1 )
157+ const rangeStart = 70
158+ const rangeEnd = 90
159+ const spacing = ( rangeEnd - rangeStart ) / ( inputPorts . length + 1 )
160+ const topPercent = rangeStart + spacing * ( index + 1 )
159161 const color = getPortColor ( port . semantic )
160162 const isConnected = isHandleConnected ( port . externalPortId , true )
161163
@@ -212,45 +214,46 @@ const GroupBlockNode = memo(({ data, selected, id }: GroupBlockNodeProps) => {
212214 )
213215 } ) }
214216
215- < div className = "p-3 space-y-2 " >
217+ < div className = "p-3" >
216218 < div className = "flex items-center gap-2" >
217219 < div
218- className = "p-1.5 rounded"
220+ className = "p-1 rounded shrink-0 "
219221 style = { {
220222 backgroundColor : groupDef . color ,
221223 color : 'white'
222224 } }
223225 >
224- < Icons . SquaresFour size = { 16 } weight = "bold" />
226+ < Icons . SquaresFour size = { 14 } weight = "bold" />
225227 </ div >
226228 < div className = "flex-1 min-w-0" >
227- < div className = "font-semibold text-sm truncate" >
229+ < div className = "font-semibold text-sm truncate leading-tight " >
228230 { groupDef . name }
229231 </ div >
230- < div className = "flex items-center gap-1" >
231- < Badge
232- variant = "secondary"
233- className = "text-[9px] px-1 py-0 h-3.5"
234- >
235- { groupDef . category }
236- </ Badge >
237- < Badge
238- variant = "outline"
239- className = "text-[9px] px-1 py-0 h-3.5"
240- >
241- { groupDef . internalNodes . length } nodes
242- </ Badge >
243- </ div >
244232 </ div >
245233 </ div >
246234
235+ < div className = "flex items-center gap-1 mt-1" >
236+ < Badge
237+ variant = "secondary"
238+ className = "text-[9px] px-1 py-0 h-3.5"
239+ >
240+ { groupDef . category }
241+ </ Badge >
242+ < Badge
243+ variant = "outline"
244+ className = "text-[9px] px-1 py-0 h-3.5"
245+ >
246+ { groupDef . internalNodes . length } nodes
247+ </ Badge >
248+ </ div >
249+
247250 { groupDef . description && (
248- < div className = "text-[10px] text-muted-foreground line-clamp-2" >
251+ < div className = "text-[10px] text-muted-foreground line-clamp-2 mt-1 " >
249252 { groupDef . description }
250253 </ div >
251254 ) }
252255
253- < div className = "flex items-center gap-1 text-[10px] text-muted-foreground" >
256+ < div className = "flex items-center gap-1 text-[10px] text-muted-foreground mt-1 " >
254257 < Icons . ArrowsIn size = { 12 } />
255258 < span > { inputPorts . length } in</ span >
256259 < span className = "mx-1" > •</ span >
@@ -261,8 +264,10 @@ const GroupBlockNode = memo(({ data, selected, id }: GroupBlockNodeProps) => {
261264
262265 { /* Render output handles */ }
263266 { outputPorts . map ( ( port , index ) => {
264- const spacing = 100 / ( outputPorts . length + 1 )
265- const topPercent = spacing * ( index + 1 )
267+ const rangeStart = 70
268+ const rangeEnd = 90
269+ const spacing = ( rangeEnd - rangeStart ) / ( outputPorts . length + 1 )
270+ const topPercent = rangeStart + spacing * ( index + 1 )
266271 const color = getPortColor ( port . semantic )
267272 const isConnected = isHandleConnected ( port . externalPortId , false )
268273
0 commit comments