Skip to content

Commit 0c50287

Browse files
Copilotjongalloway
andauthored
Fix tablist variants invisible under Prism theme (use ResolveEffectivePalette)
Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com> Agent-Logs-Url: https://github.com/jongalloway/DiagramForge/sessions/12c9ed1a-2f39-46e4-b841-f62269df8ebb
1 parent ee992f2 commit 0c50287

7 files changed

Lines changed: 297 additions & 16 deletions

src/DiagramForge/Layout/DefaultLayoutEngine.TabList.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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;
Lines changed: 82 additions & 0 deletions
Loading
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
theme: prism
3+
---
4+
diagram: tablist
5+
title: Cloud Architecture Layers
6+
categories:
7+
- title: Presentation
8+
items:
9+
- Web frontend (React)
10+
- Mobile clients (iOS, Android)
11+
- CDN-cached static assets
12+
- title: API Gateway
13+
items:
14+
- Rate limiting & auth
15+
- Request routing
16+
- Response caching
17+
- title: Services
18+
items:
19+
- User service
20+
- Order service
21+
- Notification service
22+
- title: Data
23+
items:
24+
- Relational DB (Postgres)
25+
- Cache layer (Redis)
26+
- Object storage (S3)
Lines changed: 66 additions & 0 deletions
Loading
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
theme: prism
3+
---
4+
diagram: tablist
5+
layout: flat
6+
title: Project Phases
7+
categories:
8+
- title: Discovery
9+
items:
10+
- Stakeholder interviews
11+
- Requirements gathering
12+
- Competitive analysis
13+
- title: Design
14+
items:
15+
- Wireframes & prototypes
16+
- Design system setup
17+
- Accessibility review
18+
- title: Development
19+
items:
20+
- Sprint planning
21+
- Feature implementation
22+
- Code review process

0 commit comments

Comments
 (0)