"use client";
import {
  createContext,
  useContext,
  type ReactNode,
  type ComponentProps,
} from "react";
import Link from "next/link";

import { type PreviewRole } from "@/lib/preview";
import { useDashboardAuth } from "./dashboard-auth-context";
import { effectiveDashboardRole } from "@/lib/auth/dashboard-policy";
const Context = createContext<PreviewRole>("admin");
export function PreviewProvider({
  children,
  role = "admin",
}: {
  children: ReactNode;
  role?: PreviewRole;
}) {
  const { apiConfigured, session } = useDashboardAuth();
  const effectiveRole = effectiveDashboardRole(role, apiConfigured, session);
  if (!effectiveRole) return null;
  return <Context.Provider value={effectiveRole}>{children}</Context.Provider>;
}
export function usePreviewRole() {
  return useContext(Context);
}
export function PreviewLink({
  href,
  ...props
}: Omit<ComponentProps<typeof Link>, "href"> & { href: string }) {
  const role = usePreviewRole();
  const url = new URL(href, "http://preview.local");
  if (role !== "admin") url.searchParams.set("role", role);
  return <Link href={url.pathname + url.search + url.hash} {...props} />;
}
