brick-0.37.1: A declarative terminal user interface library

Safe HaskellNone




This module provides border widgets: vertical borders, horizontal borders, and a box border wrapper widget. All functions in this module use the rendering context's active BorderStyle; to change the BorderStyle, use withBorderStyle.


Border wrapper

border :: Widget n -> Widget n Source #

Put a border around the specified widget.

borderWithLabel Source #


:: Widget n

The label widget

-> Widget n

The widget to put a border around

-> Widget n 

Put a border around the specified widget with the specified label widget placed in the middle of the top horizontal border.

Note that a border will wrap its child widget as tightly as possible, which means that if the child widget is narrower than the label widget, the label widget will be truncated. If you want to avoid this behavior, add a fill or other space-filling wrapper to the bordered widget so that it takes up enough room to make the border horizontally able to avoid truncating the label.

Horizontal border

hBorder :: Widget n Source #

A horizontal border. Fills all horizontal space.

hBorderWithLabel Source #


:: Widget n

The label widget

-> Widget n 

A horizontal border with a label placed in the center of the border. Fills all horizontal space.

Vertical border

vBorder :: Widget n Source #

A vertical border. Fills all vertical space.

Drawing single border elements

borderElem :: (BorderStyle -> Char) -> Widget n Source #

Draw the specified border element using the active border style using borderAttr.

Does not participate in dynamic borders (due to the difficulty of introspecting on the first argument); consider using joinableBorder instead.

Attribute names

borderAttr :: AttrName Source #

The top-level border attribute name.


joinableBorder :: Edges Bool -> Widget n Source #

A single-character dynamic border that will react to neighboring borders, initially connecting in the given directions.