feat(nav): discoverable sidebar — instant tooltips, shortcuts made visible, pinnable rail
Some checks are pending
Security / Security check (push) Waiting to run
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:
parent
ca01fd2ec0
commit
c436e12601
11 changed files with 364 additions and 30 deletions
|
|
@ -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),
|
||||
),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue