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

@ -0,0 +1,23 @@
// Operator preference: keep the sidebar permanently expanded so
// every destination shows its text label without hovering. Off by
// default (hover-expand rail); a11y/senior operators flip it in
// Settings Appearance.
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SidebarPrefs {
static const _kPinnedKey = 'sidebar.pinned';
static final ValueNotifier<bool> pinned = ValueNotifier(false);
static Future<void> load() async {
final prefs = await SharedPreferences.getInstance();
pinned.value = prefs.getBool(_kPinnedKey) ?? false;
}
static Future<void> setPinned(bool value) async {
pinned.value = value;
final prefs = await SharedPreferences.getInstance();
await prefs.setBool(_kPinnedKey, value);
}
}