+
+ {label}
+ {double_tag}
+ {ways_tag}
+ {pts_str}
+
+ {can_expand.then(|| {
+ let move_lines: Vec<_> = moves.iter()
+ .map(|&(m1, m2)| {
+ let text = format_move_pair(m1, m2);
+ view! {
{text}
}
+ })
+ .collect();
+ view! {
+
+ {move_lines}
+
+ }
+ })}
+
+ }
+}
+
#[component]
pub fn GameScreen(state: GameUiState) -> impl IntoView {
let vs = state.view_state.clone();
@@ -142,16 +197,9 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView {
// ── Jan panel ────────────────────────────────────────────────────
{(!vs.dice_jans.is_empty()).then(|| {
- let rows: Vec<_> = vs.dice_jans.iter().map(|(jan, pts)| {
- let label = jan_label(jan);
- let pts_str = if *pts >= 0 { format!("+{}", pts) } else { format!("{}", pts) };
- let row_class = if *pts >= 0 { "jan-row jan-positive" } else { "jan-row jan-negative" };
- view! {
-