{-# LANGUAGE OverloadedStrings #-} module Main where import qualified Brick.Main as M import Brick.Types ( Widget ) import qualified Brick.Widgets.Center as C import qualified Brick.Widgets.Core as C import qualified Brick.Widgets.Border as B import qualified Brick.Widgets.Border.Style as BS doubleHorizontal :: BS.BorderStyle doubleHorizontal = BS.BorderStyle { BS.bsCornerTL = '╒' , BS.bsCornerTR = '╕' , BS.bsCornerBR = '╛' , BS.bsCornerBL = '╘' , BS.bsIntersectL = '╞' , BS.bsIntersectR = '╡' , BS.bsIntersectT = '╤' , BS.bsIntersectB = '╧' , BS.bsIntersectFull = '╪' , BS.bsHorizontal = '═' , BS.bsVertical = '│' } box1 :: Widget () box1 = C.withBorderStyle doubleHorizontal . B.border . C.withBorderStyle BS.unicodeRounded . B.border $ C.str "25 kg" weights :: Widget () weights = C.withBorderStyle doubleHorizontal $ C.hBox [ box1 , C.str "\n\n" C.<=> B.hBorder , box1 ] box2 :: Widget () box2 = C.freezeBorders $ C.vBox [ C.hBox [ C.vLimit 3 B.vBorder , C.str "Resize horizontally to\nmove across the label\nbelow" , C.vLimit 3 B.vBorder ] , B.borderWithLabel (B.vBorder C.<+> C.str " Label " C.<+> B.vBorder) $ C.hBox [ C.str " " , C.vBox [B.vBorder, C.str "L\na\nb\ne\nl", C.vLimit 3 B.vBorder] , C.str "\n\n\n Resize vertically to\n move across the label\n to the left\n\n\n\n\n" C.<=> B.hBorder ] ] -- BYOB: build your own border byob :: Widget () byob = C.vBox [ C.hBox [ corner , top , corner ] , C.vLimit 6 $ C.hBox [ B.vBorder, mid , B.vBorder] , C.hBox [ corner , B.hBorder, corner ] ] where top = B.hBorderWithLabel (C.str "BYOB") mid = C.center (C.str "If `border` is too easy,\nyou can build it yourself") corner = B.joinableBorder (pure False) ui :: Widget () ui = C.vBox [weights, box2, byob] main :: IO () main = M.simpleMain (C.joinBorders ui)