use protocol::card; use yew::prelude::*; #[function_component(Card)] pub fn ccard(props: &CardProps) -> Html { let card::Card(suit, rank) = props.card; let onclick = { let card = props.card; let onclick = props.onclick.clone(); Callback::from(move |_| onclick.emit(card)) }; // SVG rendering looks better with the filled versions of the symbols. let (color, symbol) = match suit { card::Suit::Club => ("#000", "♣"), card::Suit::Diamond => ("#d00", "♦"), card::Suit::Heart => ("#d00", "♥"), card::Suit::Spade => ("#000", "♠"), }; html! { <>
{format!("{}", rank)} {symbol}
} } #[derive(PartialEq, Properties, Clone)] pub struct CardProps { pub card: card::Card, #[prop_or_default] pub onclick: Callback, }