feat(sidebar): pinned section, dimmed pin glyph, configurable width

Smoke-test round 3 feedback from Jin:

- Sidebar now groups tabs into three sections rendered in this order:
  persistent → pinned TempTabs → unpinned TempTabs. Each TempTab
  section carries its own divider header ("Angepinnt (n)" / "Aktive
  Tells (n)"). Plugin.Config.Tabs order is untouched — only the
  display order changes, so tabI still mirrors the real index and
  LastTab/WantedTab stay consistent.

- The thumbtack glyph overlay on a pinned tab dropped from accent
  colour at full alpha to TextMuted at ~47% alpha. The section header
  is now the primary discoverability cue; the glyph is just a per-tab
  confirmation hint.

- Sidebar width is now a Config field (default 44, range 44-160).
  Slider lives in Theme & Layout under the existing Sidebar-Tab-View
  toggle. The icon button inside each row stretches with the width so
  a widened sidebar doesn't leave the icon floating in dead space.
This commit is contained in:
2026-05-13 10:16:53 +02:00
parent cddd29a986
commit 80b48ac3ad
6 changed files with 110 additions and 15 deletions
@@ -250,6 +250,26 @@ internal sealed class ThemeAndLayout : ISettingsTab
string.Format(Language.Options_SidebarTabView_Description, Plugin.PluginName)
);
if (Mutable.SidebarTabView)
{
var sidebarWidth = Mutable.SidebarWidth;
if (
ImGui.SliderInt(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Name,
ref sidebarWidth,
44,
160,
$"{sidebarWidth} px"
)
)
{
Mutable.SidebarWidth = sidebarWidth;
}
ImGuiUtil.HelpMarker(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Description
);
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();