"use client";

import { ReactNode, useCallback } from "react";
import {
  BrandingProvider as SharedBrandingProvider,
  DEFAULT_BRANDING,
  useBranding,
  useBrandingContext,
  type Branding,
} from "@school/ui";
import { apiGet } from "@/lib/api";
import { getActiveBranchId } from "@/lib/session-context";

export function BrandingProvider({ children }: { children: ReactNode }) {
  const fetchBranding = useCallback(async () => {
    const branchId = getActiveBranchId();
    const suffix = branchId ? `?branch_id=${branchId}` : "";
    return apiGet<Branding>(`/branding${suffix}`);
  }, []);

  return (
    <SharedBrandingProvider fetchBranding={fetchBranding} fallback={DEFAULT_BRANDING}>
      {children}
    </SharedBrandingProvider>
  );
}

export { useBranding, useBrandingContext };
