Onboarding · Flows and highlights: focus that holds as the flow turns, a tip that closes

navigation::Wizard keeps one focus handle for Next and Finish, so a
second press on the step before last finishes; Back that reaches the
first step, and a finished step picked by key, hand focus to Next.
Popover::with_opener hands its content a close that gives focus back:
Got it closes the hotspot's tip before the owner hides it, and the
event details close before Edit and Delete run, so focus never lands
on a panel that left the tree. The wizard's count and the setup
checklist's tally name their selectors after their words, and the bar
takes the count's own value.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-09-27 14:48:20 -04:00
1 parent 996daed6e4
commit 973f10a6dc
15 files changed
+180 -54

No files matched your search

+6 -2
View File
@@ -82,6 +82,7 @@ impl RenderOnce for SetupChecklist {
self.tasks.iter().filter(|task| task.done).count(),
self.tasks.len(),
);
let tally = format!("{done} of {all} done");
let turns: Vec<usize> = self
.tasks
.iter()
@@ -203,11 +204,14 @@ impl RenderOnce for SetupChecklist {
)
.child(
tabular(div())
.debug_selector(move || format!("setup-{done}-of-{all}"))
.debug_selector({
let tally = tally.clone();
move || format!("setup-{tally}")
})
.flex_none()
.text_size(theme.text_size(TextSize::Sm))
.text_color(theme.colors.fg_muted)
.child(format!("{done} of {all} done")),
.child(tally),
),
)
.child(