import { useContext } from "react";
import { ComponentType } from "../../types/component";
import { FiEdit3, FiGrid, FiSquare, FiType } from "react-icons/fi";
import { ProjectContext } from "../../hooks/useProject";
import { CurrentScreenContext } from "../../hooks/useCurrentScreen";

export function AddComponentMenu() {

    const projectContext = useContext(ProjectContext);
    const curScreenContext = useContext(CurrentScreenContext);

    if (projectContext === null || curScreenContext === null) return <div>loading...</div>

    const projectActions = projectContext.projectActions;
    const curScreenStates = curScreenContext.curScreenStates;

    const addComponent = (type: ComponentType) => {
        projectActions.addComponent(curScreenStates.curScreen.id, type)
    }

    return (
        <div className="p-4 bg-white">
            <div className="mb-4">
                <h3 className="text-lg font-semibold text-gray-900">コンポーネントを追加</h3>
                <p className="text-sm text-gray-500 mt-1">画面に追加するコンポーネントを選択してください</p>
            </div>

            <div className="space-y-2">
                <button
                    onClick={() => { addComponent(ComponentType.Button) }}
                    className="w-full flex items-center p-3 text-left bg-white border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-all duration-200 group"
                >
                    <div className="flex items-center justify-center w-10 h-10 bg-gray-100 group-hover:bg-blue-100 rounded-lg mr-3 transition-colors">
                        <FiSquare size={18} className="text-gray-600 group-hover:text-blue-600" />
                    </div>
                    <div className="flex-1 min-w-0">
                        <div className="font-medium text-sm text-gray-900 group-hover:text-blue-900">
                            ボタン
                        </div>
                    </div>
                </button>

                <button
                    onClick={() => { addComponent(ComponentType.Text) }}
                    className="w-full flex items-center p-3 text-left bg-white border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-all duration-200 group"
                >
                    <div className="flex items-center justify-center w-10 h-10 bg-gray-100 group-hover:bg-blue-100 rounded-lg mr-3 transition-colors">
                        <FiType size={18} className="text-gray-600 group-hover:text-blue-600" />
                    </div>
                    <div className="flex-1 min-w-0">
                        <div className="font-medium text-sm text-gray-900 group-hover:text-blue-900">
                            テキスト
                        </div>
                    </div>
                </button>

                <button
                    onClick={() => { addComponent(ComponentType.TextField) }}
                    className="w-full flex items-center p-3 text-left bg-white border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-all duration-200 group"
                >
                    <div className="flex items-center justify-center w-10 h-10 bg-gray-100 group-hover:bg-blue-100 rounded-lg mr-3 transition-colors">
                        <FiEdit3 size={18} className="text-gray-600 group-hover:text-blue-600" />
                    </div>
                    <div className="flex-1 min-w-0">
                        <div className="font-medium text-sm text-gray-900 group-hover:text-blue-900">
                            テキストフィールド
                        </div>
                    </div>
                </button>

                <button
                    onClick={() => { addComponent(ComponentType.Table) }}
                    className="w-full flex items-center p-3 text-left bg-white border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-all duration-200 group"
                >
                    <div className="flex items-center justify-center w-10 h-10 bg-gray-100 group-hover:bg-blue-100 rounded-lg mr-3 transition-colors">
                        <FiGrid size={18} className="text-gray-600 group-hover:text-blue-600" />
                    </div>
                    <div className="flex-1 min-w-0">
                        <div className="font-medium text-sm text-gray-900 group-hover:text-blue-900">
                            テーブル
                        </div>
                    </div>
                </button>

            </div>
        </div>
    )
}