wolfadex / elm-ansi / Ansi.Box

Styles borrowed from https://www.npmjs.com/package/cli-boxes


type alias Box =
{ topLeft : String
, top : String
, topRight : String
, right : String
, bottomRight : String
, bottom : String
, bottomLeft : String
, left : String 
}

single : Box

A thin box with sharp corners

┌────┐
│    │
└────┘

double : Box

2 thin, nested boxes with sharp corners

╔════╗
║    ║
╚════╝

singleDouble : Box

A box with sharp corners, thin on the top and bottom and doubled up on the sides

╓────╖
║    ║
╙────╜

doubleSingle : Box

A box with sharp corners, thin on the sides and doubled on top and bottom

╒════╕
│    │
╘════╛

bold : Box

A thick box with sharp corners

┏━━━━┓
┃    ┃
┗━━━━┛

classic : Box

A thin box with plus shaped corners

+----+
|    |
+----+

rounded : Box

A thin box with rounded corners

╭────╮
│    │
╰────╯

custom : { topLeft : Char, top : Char, topRight : Char, right : Char, bottomRight : Char, bottom : Char, bottomLeft : Char, left : Char } -> Box

Design your own box, such as

•————•
∫    ∫
•————•

This can break layout when you use Chars that have a width greater than 1. E.g. 🌈 is 2 columns wide.

draw : { width : Basics.Int, height : Basics.Int } -> Box -> String

Helps to draw the box for you