'use client'

import { createContext, useContext, useMemo, useState, type ReactNode } from 'react'

export type HomeUiControls = {
  isTabsMode: boolean
  openNoteComposer: () => void
}

type Ctx = {
  controls: HomeUiControls | null
  setControls: (c: HomeUiControls | null) => void
}

const HomeViewContext = createContext<Ctx | null>(null)

export function HomeViewProvider({ children }: { children: ReactNode }) {
  const [controls, setControls] = useState<HomeUiControls | null>(null)
  const value = useMemo(() => ({ controls, setControls }), [controls])

  return <HomeViewContext.Provider value={value}>{children}</HomeViewContext.Provider>
}

/** Enregistré par la page d’accueil ; la sidebar lit `controls` */
export function useHomeView() {
  const ctx = useContext(HomeViewContext)
  if (!ctx) {
    throw new Error('useHomeView must be used within HomeViewProvider')
  }
  return ctx
}

/** Sidebar / shells : ne pas planter si hors provider */
export function useHomeViewOptional(): Ctx | null {
  return useContext(HomeViewContext)
}
