#!/usr/bin/env bash
set -euo pipefail

BOLD=$'\033[1m'
DIM=$'\033[2m'
RESET=$'\033[0m'
RED=$'\033[0;31m'
GREEN=$'\033[0;32m'
YELLOW=$'\033[0;33m'
BLUE=$'\033[0;34m'
CYAN=$'\033[0;36m'

summary_box() {
  local width=60
  local border
  border=$(printf '─%.0s' $(seq 1 $width))
  echo ""
  echo "  ${CYAN}${border}${RESET}"
  while [ $# -gt 0 ]; do
    printf "  ${CYAN}│${RESET} %-28s %s\n" "$1" "$2"
    shift 2
  done
  echo "  ${CYAN}${border}${RESET}"
  echo ""
}

ask_password_i() {
  local label=$1
  local default_password="$(openssl rand -base64 12)"
  local value

  read -e -rp "  ${CYAN}?${RESET} $label: " -i "${default_password}" value </dev/tty
  echo "" >&2
  echo "$value"
}

ask_password_visible() {
  local label=$1
  local default_password="$(openssl rand -base64 12)"
  local value

  printf "  ${CYAN}?${RESET} $label [%s]: " "$default_password" >&2
  read -r value </dev/tty
  
  echo "${value:-$default_password}"
}

ask_password_visible2() {
  local label=$1
  local default_password="$(openssl rand -base64 12)"
  local value

  if [ -t 0 ] && [ -t 1 ] && command -v bash >/dev/null; then
    # Только если настоящий интерактивный терминал
    read -e -rp "  ${CYAN}?${RESET} $label: " -i "$default_password" value </dev/tty 2>/dev/null || \
      read -r -p "  ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
  else
    read -r -p "  ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
  fi
  
  echo "${value:-$default_password}"
  echo "" >&2
}

pass1=$(ask_password_visible "Password (mixed case, digits, min 12 chars)")
pass2=$(ask_password_visible2 "Password (mixed case, digits, min 12 chars)")
pass3=$(ask_password_i "Password (mixed case, digits, min 12 chars):")

summary_box \
"passA" "${pass1}" \ 
"passB" "${pass2}" \
"passC" "${pass3}" \


