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

import 'package:random/ui/screens/about_page.dart';
import 'package:random/ui/screens/api_page.dart';
import 'package:random/ui/screens/camera_page.dart';
import 'package:random/ui/screens/demo_page.dart';
import 'package:random/ui/screens/game_page.dart';
import 'package:random/ui/screens/graph_page.dart';
import 'package:random/ui/screens/settings_page.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 List<MenuItem> items = [
    const MenuItem(
      code: 'bottom_nav_sample',
      icon: Icon(UniconsLine.image),
      page: DemoPage(),
    ),
    const MenuItem(
      code: 'bottom_nav_api',
      icon: Icon(UniconsLine.globe),
      page: ApiPage(),
    ),
    const MenuItem(
      code: 'bottom_nav_camera',
      icon: Icon(UniconsLine.camera),
      page: CameraPage(),
    ),
    const MenuItem(
      code: 'bottom_nav_chart',
      icon: Icon(UniconsLine.pen),
      page: GraphPage(),
    ),
    const MenuItem(
      code: 'bottom_nav_game',
      icon: Icon(UniconsLine.star),
      page: GamePage(),
    ),
    const MenuItem(
      code: 'bottom_nav_settings',
      icon: Icon(UniconsLine.setting),
      page: SettingsPage(),
    ),
    const MenuItem(
      code: 'bottom_nav_about',
      icon: Icon(UniconsLine.info_circle),
      page: AboutPage(),
    ),
  ];

  static Widget getPageWidget(int pageIndex) {
    return Menu.items.elementAt(pageIndex).page;
  }

  static List<BottomNavigationBarItem> getMenuItems() {
    return Menu.items
        .map((MenuItem item) => BottomNavigationBarItem(
              icon: item.icon,
              label: tr(item.code),
            ))
        .toList();
  }

  static int itemsCount = Menu.items.length;
}