synpad 0.1.0

A full-featured Matrix chat client built with Dioxus
use dioxus::prelude::*;

use crate::app::Route;
use crate::auth::login_form::LoginForm;
use crate::state::app_state::{AppState, AuthStatus};

/// Login page component.
#[component]
pub fn LoginPage() -> Element {
    let state = use_context::<Signal<AppState>>();
    let navigator = use_navigator();

    // Redirect if already logged in
    let auth_status = state.read().auth_status.clone();
    if matches!(auth_status, AuthStatus::LoggedIn) {
        navigator.push(Route::Home {});
    }

    rsx! {
        div {
            class: "login-page",
            LoginForm {}
            div {
                class: "login-page__footer",
                p {
                    "Don't have an account? "
                    Link {
                        to: Route::RegisterPage {},
                        "Create one"
                    }
                }
                Link {
                    to: Route::ForgotPassword {},
                    class: "login-page__forgot",
                    "Forgot password?"
                }
            }
        }
    }
}