module Ribosome.Menu.Data.MenuConfig where

import Conduit (ConduitT)

import Ribosome.Menu.Data.MenuConsumer (MenuConsumer)
import Ribosome.Menu.Data.MenuItem (MenuItem)
import Ribosome.Menu.Data.MenuRenderEvent (MenuRenderEvent)
import Ribosome.Menu.Prompt.Data.PromptConfig (PromptConfig)

data MenuConfig m a i =
  MenuConfig {
    MenuConfig m a i -> ConduitT () [MenuItem i] m ()
_items :: ConduitT () [MenuItem i] m (),
    MenuConfig m a i -> MenuConsumer m a i
_handle :: MenuConsumer m a i,
    MenuConfig m a i -> MenuRenderEvent m a i -> m ()
_render :: MenuRenderEvent m a i -> m (),
    MenuConfig m a i -> PromptConfig m
_prompt :: PromptConfig m,
    MenuConfig m a i -> Maybe Int
_maxItems :: Maybe Int
  }

makeClassy ''MenuConfig