@@ -110,15 +110,14 @@ private static void LayoutTabListCards(
110110 theme . NodePadding * 2.5 + maxItemCount * descLineHeight + theme . NodePadding ) ;
111111 double rowGap = Math . Max ( theme . NodePadding * 1.6 , 16 ) ;
112112
113- string [ ] palette = theme . NodePalette is { Count : > 0 }
114- ? [ .. theme . NodePalette ]
115- : [ theme . NodeFillColor ] ;
113+ var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
114+ bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
116115
117116 for ( int i = 0 ; i < titleNodes . Count ; i ++ )
118117 {
119118 var titleNode = titleNodes [ i ] ;
120119 double rowY = pad + titleOffset + i * ( cardHeight + rowGap ) ;
121- string catFill = palette [ i % palette . Length ] ;
120+ string catFill = effectivePalette [ i % effectivePalette . Count ] ;
122121
123122 // Accent block: vibrant saturated color
124123 string accentFill = ColorUtils . Vibrant ( catFill , 2.5 ) ;
@@ -137,7 +136,8 @@ private static void LayoutTabListCards(
137136 titleNode . Label . FontSize = titleFontSize ;
138137 titleNode . Label . FontWeight = "bold" ;
139138 titleNode . Label . Color = accentTextColor ;
140- titleNode . Metadata [ "render:noGradient" ] = true ;
139+ if ( ! useFallbackPalette )
140+ titleNode . Metadata [ "render:noGradient" ] = true ;
141141 titleNode . Metadata [ "tablist:band" ] = true ;
142142 titleNode . Metadata [ "tablist:layout" ] = "cards" ;
143143 titleNode . Metadata [ "tablist:accentWidth" ] = accentWidth ;
@@ -214,15 +214,14 @@ private static void LayoutTabListStacked(
214214 theme . NodePadding * 2 + titleFontSize * 1.3 + maxItemCount * descLineHeight + theme . NodePadding ) ;
215215 double rowGap = 6 ; // Narrow gap for stacked infographic feel
216216
217- string [ ] palette = theme . NodePalette is { Count : > 0 }
218- ? [ .. theme . NodePalette ]
219- : [ theme . NodeFillColor ] ;
217+ var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
218+ bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
220219
221220 for ( int i = 0 ; i < titleNodes . Count ; i ++ )
222221 {
223222 var titleNode = titleNodes [ i ] ;
224223 double rowY = pad + titleOffset + i * ( bandHeight + rowGap ) ;
225- string catFill = palette [ i % palette . Length ] ;
224+ string catFill = effectivePalette [ i % effectivePalette . Count ] ;
226225
227226 // Number tab: vivid saturated color
228227 string tabFill = ColorUtils . Vibrant ( catFill , 2.5 ) ;
@@ -245,7 +244,8 @@ private static void LayoutTabListStacked(
245244 titleNode . Label . FontSize = numberFontSize ;
246245 titleNode . Label . FontWeight = "bold" ;
247246 titleNode . Label . Color = tabTextColor ;
248- titleNode . Metadata [ "render:noGradient" ] = true ;
247+ if ( ! useFallbackPalette )
248+ titleNode . Metadata [ "render:noGradient" ] = true ;
249249 titleNode . Metadata [ "tablist:band" ] = true ;
250250 titleNode . Metadata [ "tablist:layout" ] = "stacked" ;
251251 titleNode . Metadata [ "tablist:accentWidth" ] = tabWidth ;
@@ -324,9 +324,8 @@ private static void LayoutTabListFlat(
324324 double totalWidth = accentLineWidth + accentLineGap + barWidth ;
325325 double categoryGap = theme . NodePadding * 1.2 ;
326326
327- string [ ] palette = theme . NodePalette is { Count : > 0 }
328- ? [ .. theme . NodePalette ]
329- : [ theme . NodeFillColor ] ;
327+ var effectivePalette = ThemePaletteResolver . ResolveEffectivePalette ( theme ) ;
328+ bool useFallbackPalette = ! ReferenceEquals ( effectivePalette , theme . NodePalette ) ;
330329
331330 double curY = pad + titleOffset ;
332331
@@ -337,7 +336,7 @@ private static void LayoutTabListFlat(
337336 var items = itemsByCategory . TryGetValue ( catIdx , out var list ) ? list : [ ] ;
338337 int itemCount = items . Count ;
339338
340- string catFill = palette [ i % palette . Length ] ;
339+ string catFill = effectivePalette [ i % effectivePalette . Count ] ;
341340 string titleBarFill = ColorUtils . Vibrant ( catFill , 2.0 ) ;
342341 string titleBarTextColor = ColorUtils . ChooseTextColor ( titleBarFill ) ;
343342
@@ -354,12 +353,13 @@ private static void LayoutTabListFlat(
354353 titleNode . Label . FontSize = titleFontSize ;
355354 titleNode . Label . FontWeight = "bold" ;
356355 titleNode . Label . Color = titleBarTextColor ;
357- titleNode . Metadata [ "render:noGradient" ] = true ;
356+ if ( ! useFallbackPalette )
357+ titleNode . Metadata [ "render:noGradient" ] = true ;
358358 titleNode . Metadata [ "tablist:band" ] = true ;
359359 titleNode . Metadata [ "tablist:layout" ] = "flat" ;
360360 titleNode . Metadata [ "tablist:accentLineWidth" ] = accentLineWidth ;
361361 titleNode . Metadata [ "tablist:accentLineGap" ] = accentLineGap ;
362- titleNode . Metadata [ "tablist:accentColor" ] = ColorUtils . Vibrant ( palette [ 0 ] , 2.5 ) ;
362+ titleNode . Metadata [ "tablist:accentColor" ] = ColorUtils . Vibrant ( effectivePalette [ 0 ] , 2.5 ) ;
363363 titleNode . Metadata [ "tablist:barWidth" ] = barWidth ;
364364 titleNode . Metadata [ "tablist:titleBarHeight" ] = titleBarHeight ;
365365 titleNode . Metadata [ "tablist:descFontSize" ] = descFontSize ;
0 commit comments