zilliz 1.4.3

TUI and CLI tool for managing Zilliz Cloud clusters and Milvus operations
Documentation
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),
    )
}