proto_cli 0.57.3

A multi-language version manager, a unified toolchain.
use iocraft::prelude::*;
use proto_core::ToolSpec;
use starbase_console::ui::{Map, MapItem, Style, StyledText};
use std::collections::BTreeMap;

#[derive(Default, Props)]
pub struct SpecAliasesMapProps<'a> {
    pub aliases: BTreeMap<&'a String, &'a ToolSpec>,
}

#[component]
pub fn SpecAliasesMap<'a>(props: &SpecAliasesMapProps<'a>) -> impl Into<AnyElement<'a>> + use<'a> {
    element! {
        Map {
            #(props.aliases.iter().map(|(alias, version)| {
                element! {
                    MapItem(
                        name: element! {
                            StyledText(
                                content: alias.to_owned(),
                                style: Style::Id
                            )
                        }.into_any(),
                        value: element! {
                            StyledText(
                                content: version.to_string(),
                                style: Style::Invalid
                            )
                        }.into_any()
                    )
                }
            }))
        }
    }
}