#!/usr/bin/env bash
# =============================================================================
# Finixo Gate — UI Gallery (6 themes) · NO root · NO install
# Switch themes live and compare. Nothing is changed on the system.
# =============================================================================
export LC_ALL=C.UTF-8 2>/dev/null || true
set -uo pipefail

VERSION="gallery-1.0"
THEME=1   # 1..6

# ─── color engine ───────────────────────────────────────────────────────────
N=""; B=""; D=""; R=""; G=""; Y=""; C=""; W=""; M=""; O=""; P=""; T=""
S1=""; S2=""; S3=""; ACC=""; MUTED=""; OKC=""; ERRC=""; WARNC=""; LINE=""

c_reset() { N=$'\033[0m'; B=$'\033[1m'; D=$'\033[2m'; }

# Theme 1 — TITAN GOLD (default Finixo feel, refined)
theme_1() {
  c_reset
  ACC=$'\033[38;5;220m'   # gold
  S1=$'\033[38;5;214m'
  S2=$'\033[38;5;178m'
  S3=$'\033[38;5;136m'
  W=$'\033[38;5;255m'
  MUTED=$'\033[38;5;245m'
  OKC=$'\033[38;5;46m'
  ERRC=$'\033[38;5;196m'
  WARNC=$'\033[38;5;214m'
  C=$'\033[38;5;51m'
  LINE="${S1}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${N}"
  THEME_NAME="TITAN GOLD"
  THEME_TAG="Premium · Sharp · Classic"
}

# Theme 2 — CRIMSON EDGE (deep red / black, aggressive)
theme_2() {
  c_reset
  ACC=$'\033[38;5;196m'
  S1=$'\033[38;5;160m'
  S2=$'\033[38;5;124m'
  S3=$'\033[38;5;88m'
  W=$'\033[38;5;255m'
  MUTED=$'\033[38;5;243m'
  OKC=$'\033[38;5;82m'
  ERRC=$'\033[38;5;196m'
  WARNC=$'\033[38;5;208m'
  C=$'\033[38;5;203m'
  LINE="${S1}▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬${N}"
  THEME_NAME="CRIMSON EDGE"
  THEME_TAG="Bold · Dark · Aggressive"
}

# Theme 3 — OCEAN ICE (cyan / ice blue, clean)
theme_3() {
  c_reset
  ACC=$'\033[38;5;51m'
  S1=$'\033[38;5;45m'
  S2=$'\033[38;5;39m'
  S3=$'\033[38;5;27m'
  W=$'\033[38;5;255m'
  MUTED=$'\033[38;5;246m'
  OKC=$'\033[38;5;86m'
  ERRC=$'\033[38;5;203m'
  WARNC=$'\033[38;5;221m'
  C=$'\033[38;5;159m'
  LINE="${S1}────────────────────────────────────────${N}"
  THEME_NAME="OCEAN ICE"
  THEME_TAG="Clean · Cold · Precise"
}

# Theme 4 — NEON MATRIX (green phosphor / hacker)
theme_4() {
  c_reset
  ACC=$'\033[38;5;46m'
  S1=$'\033[38;5;40m'
  S2=$'\033[38;5;34m'
  S3=$'\033[38;5;28m'
  W=$'\033[38;5;157m'
  MUTED=$'\033[38;5;242m'
  OKC=$'\033[38;5;46m'
  ERRC=$'\033[38;5;196m'
  WARNC=$'\033[38;5;226m'
  C=$'\033[38;5;118m'
  LINE="${S1}════════════════════════════════════════${N}"
  THEME_NAME="NEON MATRIX"
  THEME_TAG="Terminal · Glow · Ops"
}

# Theme 5 — VIOLET ROYAL (purple / magenta luxury)
theme_5() {
  c_reset
  ACC=$'\033[38;5;177m'
  S1=$'\033[38;5;171m'
  S2=$'\033[38;5;135m'
  S3=$'\033[38;5;99m'
  W=$'\033[38;5;255m'
  MUTED=$'\033[38;5;245m'
  OKC=$'\033[38;5;120m'
  ERRC=$'\033[38;5;204m'
  WARNC=$'\033[38;5;222m'
  C=$'\033[38;5;213m'
  LINE="${S1}◆──────────────────────────────────────◆${N}"
  THEME_NAME="VIOLET ROYAL"
  THEME_TAG="Luxury · Soft · Elite"
}

# Theme 6 — MONO STEEL (minimal grayscale + one accent)
theme_6() {
  c_reset
  ACC=$'\033[38;5;255m'
  S1=$'\033[38;5;250m'
  S2=$'\033[38;5;244m'
  S3=$'\033[38;5;238m'
  W=$'\033[38;5;255m'
  MUTED=$'\033[38;5;240m'
  OKC=$'\033[38;5;255m'
  ERRC=$'\033[38;5;245m'
  WARNC=$'\033[38;5;250m'
  C=$'\033[38;5;252m'
  LINE="${S2}────────────────────────────────────────${N}"
  THEME_NAME="MONO STEEL"
  THEME_TAG="Minimal · Sharp · Focus"
}

apply_theme() {
  case "$THEME" in
    1) theme_1 ;; 2) theme_2 ;; 3) theme_3 ;;
    4) theme_4 ;; 5) theme_5 ;; 6) theme_6 ;;
    *) theme_1; THEME=1 ;;
  esac
  # disable colors if not a TTY
  if [ ! -t 1 ] || [ -n "${NO_COLOR:-}" ] || [ "${TERM:-dumb}" = dumb ]; then
    N=""; B=""; D=""; ACC=""; S1=""; S2=""; S3=""; W=""; MUTED=""
    OKC=""; ERRC=""; WARNC=""; C=""; LINE="========================================"
  fi
}

ok()   { printf '  %s●%s %s\n' "$OKC" "$N" "$*"; }
err()  { printf '  %s●%s %s\n' "$ERRC" "$N" "$*"; }
warn() { printf '  %s●%s %s\n' "$WARNC" "$N" "$*"; }
info() { printf '  %s○%s %s\n' "$MUTED" "$N" "$*"; }
label(){ printf '  %s%s%s\n' "$ACC$B" "$*" "$N"; }

# ─── banners per theme ──────────────────────────────────────────────────────
banner() {
  clear 2>/dev/null || printf '\n\n'
  apply_theme
  case "$THEME" in
    1) banner_gold ;;
    2) banner_crimson ;;
    3) banner_ocean ;;
    4) banner_matrix ;;
    5) banner_violet ;;
    6) banner_mono ;;
  esac
  printf '  %s%s%s  %sv%s%s\n' "$MUTED" "$THEME_TAG" "$N" "$D" "$VERSION" "$N"
  printf '%s\n' "$LINE"
  echo
}

banner_gold() {
  printf '%s%s\n' "$ACC$B" "
  ███████╗██╗███╗   ██╗██╗██╗  ██╗ ██████╗
  ██╔════╝██║████╗  ██║██║╚██╗██╔╝██╔═══██╗
  █████╗  ██║██╔██╗ ██║██║ ╚███╔╝ ██║   ██║
  ██╔══╝  ██║██║╚██╗██║██║ ██╔██╗ ██║   ██║
  ██║     ██║██║ ╚████║██║██╔╝ ██╗╚██████╔╝
  ╚═╝     ╚═╝╚═╝  ╚═══╝╚═╝╚═╝  ╚═╝ ╚═════╝
"
  printf '%s' "$N"
  printf '  %sT I T A N   G O L D%s\n' "$S1$B" "$N"
}

banner_crimson() {
  printf '%s%s\n' "$ACC$B" "
  ▄████▄   ██▀███   ██▓ ███▄ ▄███▓  ██████  ▒█████   ███▄    █
 ▒██▀ ▀█  ▓██ ▒ ██▒▓██▒▓██▒▀█▀ ██▒▒██    ▒ ▒██▒  ██▒ ██ ▀█   █
 ▒▓█    ▄ ▓██ ░▄█ ▒▒██▒▓██    ▓██░░ ▓██▄   ▒██░  ██▒▓██  ▀█ ██▒
 ▒▓▓▄ ▄██▒▒██▀▀█▄  ░██░▒██    ▒██   ▒   ██▒▒██   ██░▓██▒  ▐▌██▒
 ▒ ▓███▀ ░░██▓ ▒██▒░██░▒██▒   ░██▒▒██████▒▒░ ████▓▒░▒██░   ▓██░
 ░ ░▒ ▒  ░░ ▒▓ ░▒▓░░▓  ░ ▒░   ░  ░▒ ▒▓▒ ▒ ░░ ▒░▒░▒░ ░ ▒░   ▒ ▒
"
  printf '%s' "$N"
  printf '  %sC R I M S O N   E D G E%s\n' "$S1$B" "$N"
}

banner_ocean() {
  printf '%s%s\n' "$ACC$B" "
      ┌─┐┬┌┐┌┬─┐ ┬┌─┐
      ├┤ │││││┌┘ ││ │
      └  ┴┘└┘┴└─┘┴└─┘
"
  printf '%s' "$N"
  printf '  %sO C E A N   I C E%s  ·  secure tunnel\n' "$S1$B" "$N"
}

banner_matrix() {
  printf '%s%s\n' "$ACC$B" "
  ╔═╗╦╔╗╔╦═╗ ╦╔═╗
  ╠╣ ║║║║╠╩╗ ║║ ║
  ╚  ╩╝╚╝╩ ╩╚╝╚═╝
  > ACCESS GRANTED_
"
  printf '%s' "$N"
  printf '  %sN E O N   M A T R I X%s\n' "$S1$B" "$N"
}

banner_violet() {
  printf '%s%s\n' "$ACC$B" "
   ✦  f i n i x o  ✦
"
  printf '%s' "$N"
  printf '  %sV I O L E T   R O Y A L%s\n' "$S1$B" "$N"
  printf '  %selite private network%s\n' "$MUTED" "$N"
}

banner_mono() {
  printf '%s%s\n' "$W$B" "
  FINIXO
  ──────
"
  printf '%s' "$N"
  printf '  %sMONO STEEL%s\n' "$S1$B" "$N"
}

# ─── panels ─────────────────────────────────────────────────────────────────
panel_status() {
  label "▸ LIVE STATUS"
  echo
  ok "nginx          active"
  ok "xray           active"
  ok "finixo-ssh-ws  active"
  ok "haproxy        active  (edge)"
  echo
  info "Online IPs (5 min)   ${W}${B}3${N}"
  info "Edge                 ${W}haproxy${N}"
  info "TLS                  ${W}OK${N}"
  echo
  printf '  %sPROTOCOLS%s\n' "$ACC$B" "$N"
  printf '  %-12s %s%2d%s   %-12s %s%2d%s\n' "VLESS-WS" "$W$B" 3 "$N" "VMess-WS" "$W$B" 1 "$N"
  printf '  %-12s %s%2d%s   %-12s %s%2d%s\n' "Trojan-WS" "$W$B" 2 "$N" "SS-2022" "$W$B" 0 "$N"
  printf '  %-12s %s%2d%s\n' "SSH-WS" "$W$B" 1 "$N"
  echo
}

panel_menu() {
  label "▸ MAIN MENU"
  echo
  local -a items=(
    "Install / Reinstall"
    "Connection links"
    "TLS certificate"
    "Live status"
    "VLESS · WebSocket"
    "VLESS · Non-TLS"
    "VMess · WebSocket"
    "Trojan · WebSocket"
    "Shadowsocks 2022"
    "SSH · WebSocket"
    "Restart services"
    "Self-test"
    "Deep audit"
    "Iron test"
    "Update Xray-core"
    "Repair"
    "Harden"
    "Uninstall"
    "Connection control"
    "Live countdown"
  )
  local i=1
  for it in "${items[@]}"; do
    printf '  %s%2d%s  %s\n' "$C$B" "$i" "$N" "$it"
    i=$((i+1))
  done
  echo
  printf '  %s t %s  Switch theme (1–6)     %s q %s  Quit preview\n' "$ACC$B" "$N" "$MUTED" "$N"
  printf '%s\n' "$LINE"
}

panel_protocols() {
  label "▸ PROTOCOLS"
  echo
  printf '  %s┌──────────────┬────────────┬──────────┐%s\n' "$S2" "$N"
  printf '  %s│%-14s│%-12s│%-10s│%s\n' " Protocol" " Transport" " Status" "$N"
  printf '  %s├──────────────┼────────────┼──────────┤%s\n' "$S2" "$N"
  printf '  %s│%s %-12s %s│%s %-10s %s│%s %-8s %s│%s\n' "$S2" "$W" "VLESS" "$S2" "$MUTED" "WS + TLS" "$S2" "$OKC" "READY" "$S2" "$N"
  printf '  %s│%s %-12s %s│%s %-10s %s│%s %-8s %s│%s\n' "$S2" "$W" "VMess" "$S2" "$MUTED" "WS + TLS" "$S2" "$OKC" "READY" "$S2" "$N"
  printf '  %s│%s %-12s %s│%s %-10s %s│%s %-8s %s│%s\n' "$S2" "$W" "Trojan" "$S2" "$MUTED" "WS + TLS" "$S2" "$OKC" "READY" "$S2" "$N"
  printf '  %s│%s %-12s %s│%s %-10s %s│%s %-8s %s│%s\n' "$S2" "$W" "SS-2022" "$S2" "$MUTED" "WS + TLS" "$S2" "$WARNC" "EMPTY" "$S2" "$N"
  printf '  %s│%s %-12s %s│%s %-10s %s│%s %-8s %s│%s\n' "$S2" "$W" "SSH-WS" "$S2" "$MUTED" "WS + TLS" "$S2" "$OKC" "READY" "$S2" "$N"
  printf '  %s└──────────────┴────────────┴──────────┘%s\n' "$S2" "$N"
  echo
  info "Paths: fixed CDN-style  ·  Edge: HAProxy → Xray / SSH bridge"
  echo
}

panel_conn() {
  label "▸ CONNECTION CONTROL"
  echo
  printf '  %sLIVE%s\n' "$OKC$B" "$N"
  printf '   %s1%s  vless    default     %s● ONLINE%s  (2 IPs)\n' "$C" "$N" "$OKC" "$N"
  printf '   %s2%s  vmess    shop-a      %s● ONLINE%s  (1 IP)\n' "$C" "$N" "$OKC" "$N"
  printf '   %s3%s  trojan   trial1      %s○ idle%s\n' "$C" "$N" "$MUTED" "$N"
  echo
  printf '  %sDISABLED%s\n' "$WARNC$B" "$N"
  printf '   %s(none)%s\n' "$MUTED" "$N"
  echo
  printf '  %s[1]%s Disable   %s[2]%s Enable   %s[3]%s Delete\n' "$C" "$N" "$C" "$N" "$C" "$N"
  printf '  %s[4]%s Kick      %s[5]%s Refresh  %s[0]%s Back\n' "$C" "$N" "$C" "$N" "$MUTED" "$N"
  echo
}

panel_welcome() {
  label "▸ CLIENT WELCOME CARD"
  echo
  printf '  %s╭──────────────────────────────────────╮%s\n' "$S1" "$N"
  printf '  %s│%s     🚀  Welcome to  🚀               %s│%s\n' "$S1" "$W" "$S1" "$N"
  printf '  %s│%s           %sfinixo%s                     %s│%s\n' "$S1" "$N" "$ACC$B" "$N" "$S1" "$N"
  printf '  %s│%s   Premium Secure Tunnel             %s│%s\n' "$S1" "$MUTED" "$S1" "$N"
  printf '  %s│%s   Fast · Stable · Private           %s│%s\n' "$S1" "$MUTED" "$S1" "$N"
  printf '  %s│%s                                      %s│%s\n' "$S1" "$N" "$S1" "$N"
  printf '  %s│%s   %s✅ Connected successfully%s          %s│%s\n' "$S1" "$N" "$OKC" "$N" "$S1" "$N"
  printf '  %s│%s   Please respect fair-use rules 🤝  %s│%s\n' "$S1" "$W" "$S1" "$N"
  printf '  %s│%s   Made with 💙 by finixo            %s│%s\n' "$S1" "$MUTED" "$S1" "$N"
  printf '  %s╰──────────────────────────────────────╯%s\n' "$S1" "$N"
  echo
}

panel_themes() {
  label "▸ THEMES"
  echo
  local names=("TITAN GOLD" "CRIMSON EDGE" "OCEAN ICE" "NEON MATRIX" "VIOLET ROYAL" "MONO STEEL")
  local tags=("Premium sharp" "Bold dark" "Clean cold" "Terminal glow" "Luxury soft" "Minimal focus")
  local i
  for i in 1 2 3 4 5 6; do
    if [ "$i" = "$THEME" ]; then
      printf '  %s▶ %d  %-14s%s  %s← current%s\n' "$ACC$B" "$i" "${names[$((i-1))]}" "$N" "$OKC" "$N"
    else
      printf '  %s  %d  %-14s%s  %s%s%s\n' "$MUTED" "$i" "${names[$((i-1))]}" "$N" "$D" "${tags[$((i-1))]}" "$N"
    fi
  done
  echo
  info "Type number 1–6 then Enter to switch"
  echo
}

pause() {
  printf '  %sEnter…%s ' "$MUTED" "$N"
  read -r _ || true
}

# ─── main loop ──────────────────────────────────────────────────────────────
main() {
  apply_theme
  while true; do
    banner
    panel_status
    panel_menu
    printf '  %s›%s ' "$ACC" "$N"
    read -r choice || exit 0
    case "${choice:-}" in
      t|T|theme)
        banner; panel_themes
        printf '  %sTheme # ›%s ' "$ACC" "$N"
        read -r th || true
        case "$th" in [1-6]) THEME=$th ;; esac
        ;;
      [1-6])
        # if user types 1-6 at main prompt, treat as theme switch when short
        # but 1-6 are also menu numbers — use 't' for theme
        banner
        case "$choice" in
          1) warn "Preview only — Install not executed." ;;
          2) panel_protocols ;;
          3) info "TLS certificate menu (preview)." ;;
          4) panel_status ;;
          5|6|7|8|9|10) panel_protocols ;;
          *) info "Option $choice (preview — not executed)." ;;
        esac
        pause
        ;;
      19|cc|control) banner; panel_conn; pause ;;
      20|count) banner; info "Live countdown would refresh every second."; pause ;;
      welcome|card|w) banner; panel_welcome; pause ;;
      proto|p) banner; panel_protocols; pause ;;
      s|status) banner; panel_status; pause ;;
      q|Q|quit|exit)
        echo
        info "Gallery closed. No system changes."
        exit 0
        ;;
      *)
        banner
        err "Unknown: $choice"
        info "Menu 1–20 · t theme · p protocols · w welcome · cc control · q quit"
        pause
        ;;
    esac
  done
}

echo
printf '  Finixo UI Gallery — 6 themes, zero root, zero changes\n'
printf '  Tip: press  %st%s  to switch theme anytime\n' $'\033[1m' $'\033[0m'
pause
main

