'use client'
import {useClientStore} from '@/components/stores/client'
import {useLayoutStore} from '@/components/stores/layout'
import {ReactNode, useEffect} from 'react'

export type EffectProviderProps = {
  children?: ReactNode
}

export default function Effects(props: EffectProviderProps) {
  const setNavbar = useLayoutStore(state => state.setNavbar)
  const setBreakpoints = useClientStore(state => state.setBreakpoints)

  useEffect(() => {
    const sm = window.matchMedia(`(width >= 40rem)`)
    const md = window.matchMedia(`(width >= 48rem)`)
    const lg = window.matchMedia(`(width >= 64rem)`)
    const xl = window.matchMedia(`(width >= 80rem)`)

    setNavbar(md.matches)
    setBreakpoints({
      sm: sm.matches,
      md: md.matches,
      lg: lg.matches,
      xl: xl.matches,
    })

    sm.addEventListener('change', (e) => {
      setBreakpoints({sm: e.matches})
    })

    md.addEventListener('change', (e) => {
      setBreakpoints({md: e.matches})
    })

    lg.addEventListener('change', (e) => {
      setBreakpoints({lg: e.matches})
    })

    xl.addEventListener('change', (e) => {
      setBreakpoints({xl: e.matches})
    })
  }, [setBreakpoints, setNavbar])

  return props.children
}
