feat(nav): discoverable sidebar — instant tooltips, shortcuts made visible, pinnable rail
Some checks are pending
Security / Security check (push) Waiting to run

The icon-only rail forced first-time users to guess (usertest:
Senior, a11y, UX personas). Three changes:
- Nav tooltips appear instantly and carry the page shortcut
  (Cmd+1..9, Ctrl on non-mac — Ctrl activators added); expanded
  labels show the same hint. Explicit button semantics for
  screen readers on every destination.
- A visible 'Search & commands' row above the footer opens the
  existing Cmd+K palette, which nothing in the UI advertised.
- Settings -> Appearance gains 'Keep the navigation expanded':
  pins the rail with permanent labels (persisted preference).
Footer strip and pillar toggle made overflow-safe for the
animating rail; responsive test scrolls the by-design scrollable
destinations list.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-17 23:36:33 +02:00
parent ca01fd2ec0
commit c436e12601
11 changed files with 364 additions and 30 deletions

View file

@ -9,6 +9,7 @@ import '../data/error_presentation.dart';
import '../data/hub.dart';
import '../data/hub_auth_token.dart';
import '../data/registry_token.dart';
import '../data/sidebar_prefs.dart';
import '../data/system_actions.dart';
import '../l10n/app_localizations.dart';
import '../pages/welcome.dart' show showFaiDoc;
@ -604,6 +605,19 @@ class _FaiSettingsDialogState extends State<ChainSettingsDialog> {
theme,
),
const _ThemePluginPanel(),
const SizedBox(height: ChainSpace.xl),
// Pinned rail: permanent sidebar labels for operators who
// don't want (or can't use) the hover-expand gesture.
ValueListenableBuilder<bool>(
valueListenable: SidebarPrefs.pinned,
builder: (context, pinned, _) => SwitchListTile(
contentPadding: EdgeInsets.zero,
title: Text(l.settingsSidebarPinnedTitle),
subtitle: Text(l.settingsSidebarPinnedBody),
value: pinned,
onChanged: (v) => SidebarPrefs.setPinned(v),
),
),
];
}