function ui::activity::peer_row() {
  local name_pad="${1:-}" rx_pad="${2:-}" tx_pad="${3:-}" \
        drops="${4:-0}" drop_word="${5:-drops}" w_drops="${6:-1}"

  printf "  \033[1m%s\033[0m  \033[2m↓\033[0m%s  \033[2m↑\033[0m%s  %${w_drops}s %s\n" \
    "$name_pad" "$rx_pad" "$tx_pad" "$drops" "$drop_word"
}

function ui::activity::peer_row_table() {
  local name="${1:-}" rx_fmt="${2:-}" tx_fmt="${3:-}" \
        drops="${4:-0}" drop_word="${5:-drops}"
  printf "  %-24s %-14s %-14s %s %s\n" \
    "$name" "↓$rx_fmt" "↑$tx_fmt" "$drops" "$drop_word"
}
function ui::activity::accept_row() {
  local name_pad="${1:-}" bytes_in="${2:-}" bytes_out="${3:-}" \
        conns="${4:-0}" w_drops="${5:-4}"

  local conn_word="conns"
  [[ "$conns" -eq 1 ]] && conn_word="conn"

  local w=${#name_pad}
printf "  \033[0;32m%-${w}s\033[0m  \033[0;32m↓\033[0m%-10s  \033[0;32m↑\033[0m%-10s  \033[0;32m%${w_drops}s %s\033[0m\n" \
  "ACCEPT" "$bytes_in" "$bytes_out" "$conns" "$conn_word"
}
 
function ui::activity::accept_dest_row() {
  local dest="${1:-}" bytes_raw="${2:-0}" bytes_fmt="${3:-}" \
        count="${4:-0}" drops_col="${5:-40}" w_drops="${6:-4}"

  local conn_word="conns"
  [[ "$count" -eq 1 ]] && conn_word="conn"

  local arrow_prefix="    → "
  printf "%b\033[0;32m%-28s %${w_drops}s %s  %s\033[0m\n" \
    "$arrow_prefix" "$dest" "$count" "$conn_word" "$bytes_fmt"
}