import Bliku.Tui.Window
import Bliku.Tui.Model

namespace Bliku.Tui

structure SelectionState where
  anchor : Cursor
  cursor : Cursor
  block : Bool := false
  deriving Repr, Inhabited

structure CommandLineState where
  leader : String
  text : String
  cursorCol : Nat := 0
  deriving Repr, Inhabited

structure OverlayView where
  title : String
  lines : Array String
  maxWidth : Nat := 0
  cursorRow : Nat := 0
  cursorCol : Nat := 0
  deriving Repr, Inhabited

structure CompletionView where
  items : Array CompletionItem
  selected : Nat := 0
  anchorRow : Nat
  anchorCol : Nat
  deriving Repr, Inhabited

structure WindowChrome where
  statusLine : String := ""
  deriving Repr, Inhabited

structure RenderInput where
  selection : Option SelectionState := none
  commandLine : Option CommandLineState := none
  messageLine : String := ""
  statusLine : String := ""
  overlay : Option OverlayView := none
  completion : Option CompletionView := none
  hideTerminalCursor : Bool := false
  deriving Inhabited

end Bliku.Tui