Skip to content

Commit ab9dbb0

Browse files
committed
Place theme toggle inline with control bar buttons
Move the theme toggle button from absolute-positioned to inside ctrl-actions, right after Clear all. Use fixed width (6.5em) so the button size stays consistent across Light/Dark/System labels. The button remains outside CTRL markers for reviewed HTML persistence. https://claude.ai/code/session_01LEre156k3sMntSx8uGDXRj
1 parent 8f780b2 commit ab9dbb0

4 files changed

Lines changed: 11 additions & 11 deletions

File tree

FolderDiffIL4DotNet.Tests/Services/HtmlReportGenerateServiceTests.Filtering.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ public void GenerateDiffReportHtml_ThemeToggleIsOutsideCtrlMarkers()
7676
Assert.Contains("cycleTheme()", html);
7777
Assert.Contains("initTheme()", html);
7878
int themeBtn = html.IndexOf("id=\"theme-toggle\"", StringComparison.Ordinal);
79-
int ctrlStart = html.IndexOf("<!--CTRL-->", StringComparison.Ordinal);
80-
Assert.True(themeBtn < ctrlStart,
81-
"theme toggle should be OUTSIDE <!--CTRL--> markers so it persists in reviewed HTML");
79+
int ctrlEnd = html.IndexOf("<!--/CTRL-->", StringComparison.Ordinal);
80+
Assert.True(themeBtn > ctrlEnd,
81+
"theme toggle should be AFTER <!--/CTRL--> marker so it persists in reviewed HTML");
8282
}
8383

8484
[Fact]

Services/HtmlReport/diff_report.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124
background: transparent; color: var(--color-btn-clear-text);
125125
}
126126
.btn-clear:hover { background: var(--color-btn-clear-hover); }
127-
.theme-toggle { position: absolute; top: 0.5rem; right: max(1rem, calc(50vw - 50%)); font-size: 12px; padding: 0.3rem 0.8rem; z-index: 101; }
127+
.theme-toggle { width: 6.5em; justify-content: center; }
128128
.save-status { font-size: 12px; color: var(--color-text-secondary); }
129129
/* ── Review progress bar ───────────────────────────────────────────── */
130130
.progress-wrap {

Services/HtmlReportGenerateService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ private void WriteHtml(
122122
private static void AppendControlsBar(TextWriter writer)
123123
{
124124
writer.WriteLine("<div class=\"controls\" role=\"toolbar\" aria-label=\"Report controls\">");
125-
// Theme toggle is outside CTRL markers so it persists in reviewed HTML
126-
// テーマ切替は CTRL マーカー外に配置し reviewed HTML にも残す
127-
writer.WriteLine("<button id=\"theme-toggle\" class=\"btn btn-clear theme-toggle\" onclick=\"cycleTheme()\" title=\"Toggle theme (Light / Dark / System)\">\u2699 System</button>");
128125
writer.WriteLine("<!--CTRL-->");
129126
writer.WriteLine("<div class=\"ctrl-buttons\">");
130127
writer.WriteLine(" <div class=\"ctrl-progress\">");
@@ -140,9 +137,12 @@ private static void AppendControlsBar(TextWriter writer)
140137
writer.WriteLine(" <button class=\"btn btn-clear\" onclick=\"resetFilters()\"><svg aria-hidden=\"true\" width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" style=\"vertical-align:-1px\"><path d=\"M2 3h12l-4 5v3l-4 2V8z\"/><line x1=\"10\" y1=\"10\" x2=\"15\" y2=\"15\"/><line x1=\"15\" y1=\"10\" x2=\"10\" y2=\"15\"/></svg> " + HtmlEncode("Reset filters") + "</button>");
141138
writer.WriteLine(" <button class=\"btn btn-clear\" onclick=\"clearAll()\">&#x2715; " + HtmlEncode("Clear all") + "</button>");
142139
writer.WriteLine(" <span id=\"save-status\" class=\"save-status\" role=\"status\" aria-live=\"polite\"></span>");
140+
writer.WriteLine("<!--/CTRL-->");
141+
// Theme toggle is outside CTRL markers so it persists in reviewed HTML
142+
// テーマ切替は CTRL マーカー外に配置し reviewed HTML にも残す
143+
writer.WriteLine(" <button id=\"theme-toggle\" class=\"btn btn-clear theme-toggle\" onclick=\"cycleTheme()\" title=\"Toggle theme (Light / Dark / System)\">\u2699 System</button>");
143144
writer.WriteLine(" </div>");
144145
writer.WriteLine("</div>");
145-
writer.WriteLine("<!--/CTRL-->");
146146
}
147147

148148
// ── Filter zone (kept in reviewed HTML for read-only filtering) ───────

doc/samples/diff_report.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
background: transparent; color: #1d1d1f;
133133
}
134134
.btn-clear:hover { background: var(--color-btn-clear-hover); }
135-
.theme-toggle { position: absolute; top: 0.5rem; right: max(1rem, calc(50vw - 50%)); font-size: 12px; padding: 0.3rem 0.8rem; z-index: 101; }
135+
.theme-toggle { width: 6.5em; justify-content: center; }
136136
.save-status { font-size: 12px; color: var(--color-text-secondary); }
137137
/* ── Review progress bar ───────────────────────────────────────────── */
138138
.progress-wrap {
@@ -604,7 +604,6 @@
604604
<body>
605605
<a href="#main-content" class="skip-link">Skip to main content</a>
606606
<div class="controls" role="toolbar" aria-label="Report controls">
607-
<button id="theme-toggle" class="btn btn-clear theme-toggle" onclick="cycleTheme()" title="Toggle theme (Light / Dark / System)">&#x2699; System</button>
608607
<!--CTRL-->
609608
<div class="ctrl-buttons">
610609
<div class="ctrl-progress">
@@ -620,9 +619,10 @@
620619
<button class="btn btn-clear" onclick="resetFilters()"><svg aria-hidden="true" width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" style="vertical-align:-1px"><path d="M2 3h12l-4 5v3l-4 2V8z"/><line x1="10" y1="10" x2="15" y2="15"/><line x1="15" y1="10" x2="10" y2="15"/></svg> Reset filters</button>
621620
<button class="btn btn-clear" onclick="clearAll()">&#x2715; Clear all</button>
622621
<span id="save-status" class="save-status" role="status" aria-live="polite"></span>
622+
<!--/CTRL-->
623+
<button id="theme-toggle" class="btn btn-clear theme-toggle" onclick="cycleTheme()" title="Toggle theme (Light / Dark / System)">&#x2699; System</button>
623624
</div>
624625
</div>
625-
<!--/CTRL-->
626626
<div class="filter-zone" role="search" aria-label="Report filters">
627627
<div class="ctrl-filter-row">
628628
<label class="filter-chip"><input type="checkbox" id="filter-unchecked" onchange="applyFilters()"> Unchecked only</label>

0 commit comments

Comments
 (0)