use ratatui::prelude::*;
use crate::tui::app::{App, AuthState};
use crate::tui::widgets::card::{self, Card};
pub fn render(frame: &mut Frame, app: &App, area: Rect) {
let (user, region) = match &app.auth.state {
AuthState::SignedIn { user, region, .. } => (user.clone(), region.slug()),
AuthState::SignedOut => (None, String::new()),
};
let who = user.unwrap_or_else(|| "your session".to_string());
let body: Vec<Line> = vec![
Line::from(vec![
Span::styled("Signed in as ", Style::default().fg(Color::Gray)),
Span::styled(
who,
Style::default()
.fg(Color::White)
.add_modifier(Modifier::BOLD),
),
Span::styled(
format!(" · {}", region),
Style::default().fg(Color::DarkGray),
),
]),
Line::from(""),
Line::from(Span::styled(
"This will clear credentials from ~/.zilliz/credentials.",
Style::default().fg(Color::Gray),
)),
Line::from(""),
Line::from(vec![
Span::styled("Press ", Style::default().fg(Color::DarkGray)),
kbd("y"),
Span::styled(" to sign out · ", Style::default().fg(Color::DarkGray)),
kbd("n"),
Span::styled(" or ", Style::default().fg(Color::DarkGray)),
kbd("esc"),
Span::styled(" to cancel.", Style::default().fg(Color::DarkGray)),
]),
];
card::render(
frame,
area,
&Card {
eyebrow: Some("SIGN OUT"),
title: Some("Sign out of Zilliz Cloud?"),
body,
footer: None,
error: None,
step: None,
max_width: 72,
},
);
}
fn kbd(key: &str) -> Span<'_> {
Span::styled(
format!(" {} ", key),
Style::default()
.fg(Color::White)
.bg(Color::DarkGray)
.add_modifier(Modifier::BOLD),
)
}