75 lines
2.6 KiB
Rust
75 lines
2.6 KiB
Rust
use gpui::{App, InteractiveElement, IntoElement, ParentElement, Styled, Window, div, svg};
|
|
use theme::{ActiveTheme, TABBAR_HEIGHT};
|
|
use ui::button::{Button, ButtonVariants};
|
|
use ui::{StyledExt, h_flex, title_bar_drag_handlers, v_flex};
|
|
|
|
use crate::dialogs::import;
|
|
|
|
const TITLE: &str = "Welcome to Coop!";
|
|
const DESCRIPTION: &str = "Chat Freely, Stay Private on Nostr.";
|
|
|
|
pub(super) fn render(window: &mut Window, cx: &mut App) -> impl IntoElement {
|
|
v_flex()
|
|
.size_full()
|
|
.relative()
|
|
.bg(cx.theme().surface_background)
|
|
.child(title_bar_drag_handlers(
|
|
div()
|
|
.id("onboarding-drag")
|
|
.absolute()
|
|
.top_0()
|
|
.left_0()
|
|
.h(TABBAR_HEIGHT)
|
|
.w_full(),
|
|
window,
|
|
cx,
|
|
))
|
|
.child(
|
|
v_flex()
|
|
.size_full()
|
|
.justify_end()
|
|
.gap_4()
|
|
.p_4()
|
|
.child(
|
|
h_flex()
|
|
.gap_2()
|
|
.child(
|
|
svg()
|
|
.path("brand/coop.svg")
|
|
.size_8()
|
|
.text_color(cx.theme().icon_muted),
|
|
)
|
|
.child(
|
|
v_flex().child(div().font_semibold().child(TITLE)).child(
|
|
div()
|
|
.text_xs()
|
|
.text_color(cx.theme().text_muted)
|
|
.child(DESCRIPTION),
|
|
),
|
|
),
|
|
)
|
|
.child(
|
|
v_flex()
|
|
.gap_2()
|
|
.w_full()
|
|
.child(
|
|
Button::new("join-now")
|
|
.label("Join now")
|
|
.primary()
|
|
.font_semibold()
|
|
.h_8()
|
|
.w_full(),
|
|
)
|
|
.child(
|
|
Button::new("import-identity")
|
|
.label("Import identity")
|
|
.secondary()
|
|
.font_semibold()
|
|
.h_8()
|
|
.w_full()
|
|
.on_click(|_event, window, cx| import::open(window, cx)),
|
|
),
|
|
),
|
|
)
|
|
}
|