import 'package:flutter/material.dart';
import 'package:unicons/unicons.dart';

import 'package:solitaire/ui/screens/page_about.dart';
import 'package:solitaire/ui/screens/page_game.dart';
import 'package:solitaire/ui/screens/page_settings.dart';

class MenuItem {
  final String code;
  final Icon icon;
  final Widget page;

  const MenuItem({
    required this.code,
    required this.icon,
    required this.page,
  });
}

class Menu {
  static const indexGame = 0;
  static const menuItemGame = MenuItem(
    code: 'bottom_nav_game',
    icon: Icon(UniconsLine.home),
    page: PageGame(),
  );

  static const indexSettings = 1;
  static const menuItemSettings = MenuItem(
    code: 'bottom_nav_settings',
    icon: Icon(UniconsLine.setting),
    page: PageSettings(),
  );

  static const indexAbout = 2;
  static const menuItemAbout = MenuItem(
    code: 'bottom_nav_about',
    icon: Icon(UniconsLine.info_circle),
    page: PageAbout(),
  );

  static Map<int, MenuItem> items = {
    indexGame: menuItemGame,
    indexSettings: menuItemSettings,
    indexAbout: menuItemAbout,
  };

  static bool isIndexAllowed(int pageIndex) {
    return items.keys.contains(pageIndex);
  }

  static Widget getPageWidget(int pageIndex) {
    return items[pageIndex]?.page ?? menuItemGame.page;
  }

  static int itemsCount = Menu.items.length;
}