//  🖥️ TUIKit — Terminal UI Kit for Swift
//  MainMenuPage.swift
//
//  Created by LAYERED.work
//  License: MIT

import TUIkit

/// A small feature highlight box with a bold title and subtitle.
///
/// Used on the main menu to showcase key framework properties.
/// Stateless and palette-driven — wrapped in `.equatable()` for
/// subtree memoization during Spinner/Pulse animation frames.
struct FeatureBox: View, Equatable {
    /// The bold headline text.
    let title: String

    /// The secondary description text.
    let subtitle: String

    init(_ title: String, _ subtitle: String) {
        self.title = title
        self.subtitle = subtitle
    }

    var body: some View {
        VStack {
            Text(title)
                .bold()
                .foregroundStyle(.palette.accent)
            Text(subtitle)
                .foregroundStyle(.palette.foregroundSecondary)
        }
        .padding(EdgeInsets(horizontal: 2, vertical: 1))
        .border(color: .palette.border)
    }
}

/// The main menu page.
///
/// Displays a centered menu with all available demos and
/// feature highlight boxes at the bottom.
struct MainMenuPage: View {
    @Binding var currentPage: DemoPage
    @Binding var menuSelection: Int

    var body: some View {
        VStack(spacing: 1) {
            Spacer(minLength: 1)

            HStack {
                Spacer()
                  Menu(
                      title: "Select a Demo",
                      items: [
                          MenuItem(label: "Text Styles", shortcut: "1"),
                          MenuItem(label: "Colors", shortcut: "2"),
                          MenuItem(label: "Container Views", shortcut: "3"),
                          MenuItem(label: "Overlays & Modals", shortcut: "4"),
                          MenuItem(label: "Layout System", shortcut: "5"),
                          MenuItem(label: "Buttons & Focus", shortcut: "6"),
                          MenuItem(label: "Toggles", shortcut: "7"),
                          MenuItem(label: "Text Fields", shortcut: "8"),
                          MenuItem(label: "Secure Fields", shortcut: "\\"),
                          MenuItem(label: "Radio Buttons", shortcut: "9"),
                          MenuItem(label: "Spinners", shortcut: "0"),
                          MenuItem(label: "Lists", shortcut: "-"),
                          MenuItem(label: "Tables", shortcut: "="),
                          MenuItem(label: "Sliders", shortcut: "["),
                          MenuItem(label: "Steppers", shortcut: "]"),
                          MenuItem(label: "Split View", shortcut: ";"),
                          MenuItem(label: "Image (File)", shortcut: "'"),
                          MenuItem(label: "Image (URL)", shortcut: ","),
                      ],
                     selection: $menuSelection,
                     onSelect: { index in
                         // Navigate to the selected page
                         if let page = DemoPage(rawValue: index + 1) {
                             currentPage = page
                         }
                     },
                     selectedColor: .palette.accent,
                     // borderStyle uses appearance default
                     borderColor: .palette.border
                 )
                Spacer()
            }

            Spacer(minLength: 1)

            // Feature highlights (centered)
            HStack {
                Spacer()
                HStack(spacing: 3) {
                    FeatureBox("Pure Swift", "No ncurses").equatable()
                    FeatureBox("Declarative", "SwiftUI-like").equatable()
                    FeatureBox("Composable", "View protocol").equatable()
                }
                Spacer()
            }

            Spacer()
        }
        .appHeader {
            DemoAppHeader(
                "TUIkit Example App",
                subtitle: "A SwiftUI-like framework for Terminal User Interfaces"
            )
        }
    }
}
