"use client";

import { createContext, useContext, useState, type ReactNode } from "react";

type ViewMode = "admin" | "vendor";

interface ViewModeContextType {
  mode: ViewMode;
  setMode: (mode: ViewMode) => void;
  toggle: () => void;
}

const ViewModeContext = createContext<ViewModeContextType | undefined>(
  undefined,
);

export function ViewModeProvider({ children }: { children: ReactNode }) {
  const [mode, setMode] = useState<ViewMode>("admin");

  const toggle = () => {
    setMode((prev) => (prev === "admin" ? "vendor" : "admin"));
  };

  return (
    <ViewModeContext.Provider value={{ mode, setMode, toggle }}>
      {children}
    </ViewModeContext.Provider>
  );
}

export function useViewMode() {
  const context = useContext(ViewModeContext);
  if (!context)
    throw new Error("useViewMode must be used within ViewModeProvider");
  return context;
}
