commit 6903c8287e8032165a56ad991e8cbb509169200e
parent 3821b4ff14060740ad3ddcade961c17a1b8301ea
Author: triesap <tyson@radroots.org>
Date: Wed, 28 Jan 2026 13:53:47 +0000
app: Add setup profile step stub
- Add Profile step and transition rules
- Update setup step unit tests for new flow
- Render placeholder profile view in SetupPage
- Keep setup navigation wiring intact
Diffstat:
2 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/app/src/app.rs b/app/src/app.rs
@@ -376,6 +376,16 @@ fn SetupPage() -> impl IntoView {
</div>
</section>
}.into_any(),
+ RadrootsAppSetupStep::Profile => view! {
+ <section
+ id="app-setup-profile"
+ class="app-view app-view-enter flex flex-col w-full px-6 pt-10 pb-16 justify-center items-center"
+ >
+ <p class="font-sans font-[600] text-ly0-gl text-2xl">
+ "Add Profile"
+ </p>
+ </section>
+ }.into_any(),
}}
<footer
id="app-setup-actions"
diff --git a/app/src/setup.rs b/app/src/setup.rs
@@ -46,13 +46,15 @@ pub fn app_setup_state_new(active_key: String, eula_date: String) -> RadrootsApp
pub enum RadrootsAppSetupStep {
Intro,
KeyChoice,
+ Profile,
}
impl RadrootsAppSetupStep {
pub const fn next(self) -> Self {
match self {
RadrootsAppSetupStep::Intro => RadrootsAppSetupStep::KeyChoice,
- RadrootsAppSetupStep::KeyChoice => RadrootsAppSetupStep::KeyChoice,
+ RadrootsAppSetupStep::KeyChoice => RadrootsAppSetupStep::Profile,
+ RadrootsAppSetupStep::Profile => RadrootsAppSetupStep::Profile,
}
}
@@ -60,11 +62,12 @@ impl RadrootsAppSetupStep {
match self {
RadrootsAppSetupStep::Intro => RadrootsAppSetupStep::Intro,
RadrootsAppSetupStep::KeyChoice => RadrootsAppSetupStep::Intro,
+ RadrootsAppSetupStep::Profile => RadrootsAppSetupStep::KeyChoice,
}
}
pub const fn is_terminal(self) -> bool {
- matches!(self, RadrootsAppSetupStep::KeyChoice)
+ matches!(self, RadrootsAppSetupStep::Profile)
}
}
@@ -319,7 +322,11 @@ mod tests {
);
assert_eq!(
RadrootsAppSetupStep::KeyChoice.next(),
- RadrootsAppSetupStep::KeyChoice
+ RadrootsAppSetupStep::Profile
+ );
+ assert_eq!(
+ RadrootsAppSetupStep::Profile.next(),
+ RadrootsAppSetupStep::Profile
);
}
@@ -333,12 +340,17 @@ mod tests {
RadrootsAppSetupStep::KeyChoice.prev(),
RadrootsAppSetupStep::Intro
);
+ assert_eq!(
+ RadrootsAppSetupStep::Profile.prev(),
+ RadrootsAppSetupStep::KeyChoice
+ );
}
#[test]
- fn setup_step_terminal_matches_key_choice() {
+ fn setup_step_terminal_matches_profile() {
assert!(!RadrootsAppSetupStep::Intro.is_terminal());
- assert!(RadrootsAppSetupStep::KeyChoice.is_terminal());
+ assert!(!RadrootsAppSetupStep::KeyChoice.is_terminal());
+ assert!(RadrootsAppSetupStep::Profile.is_terminal());
}
#[test]