import { ConfigProvider, theme } from "antd";
import zhTW from "antd/locale/zh_TW";
import dayjs from "dayjs";
import "dayjs/locale/zh-tw";
import React from "react";
import ReactDOM from "react-dom/client";

import { createHashRouter, RouterProvider } from "react-router-dom";
import { BaseEnumerator } from "./Engine/CatanEngine/CoroutineV2/Core/BaseEnumerator";

import { GameItemsProvider } from "@/context/GameItemsContext";
import Lobby from "./UI/Lobby";
import Login from "./UI/Login";
import { ModalProvider } from "./UIControl/ModalContext";

// utils
import "@/FormTableExt/TableExt/CSSettingsV3Ext";
import "@/utils/ArrayExtension";
import "@/utils/catan";
import "@/utils/NumberExtension";
import "@/utils/String";
import "./index.css";

// 初始化 BaseEnumerator
BaseEnumerator.Init();

// 設定 dayjs 語言
dayjs.locale("zh-tw");

// 路由設定
const router = createHashRouter([
	{ path: "/", element: <Login /> },
	{ path: "/lobby", element: <Lobby /> },
]);

// Render
// 注意：不能用 React.StrictMode — 開發模式雙重掛載會讓 NetManagerSD 等靜態單例的連線互相覆蓋
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
	<>
		<ConfigProvider
			locale={zhTW}
			theme={{
				algorithm: theme.darkAlgorithm,
				token: {
					colorPrimary: "#ffb020",
					colorBgBase: "#0a0d12",
					colorBgContainer: "#10151d",
					colorBorder: "#232d3d",
					colorText: "#dbe4f0",
					colorTextSecondary: "#6b7a8f",
					borderRadius: 8,
					fontFamily: "\"Noto Sans TC\", sans-serif",
				},
				components: {
					Button: { fontFamily: "\"Chakra Petch\", \"Noto Sans TC\", sans-serif" },
					Modal: { contentBg: "#10151d", headerBg: "#10151d" },
				},
			}}
		>
			<ModalProvider>
				<GameItemsProvider>
					<RouterProvider router={router} />
				</GameItemsProvider>
			</ModalProvider>
		</ConfigProvider>
	</>
);
