module Data.Typography
    ( Typography (..)
    , TextAlignment (..)
    , FontSize (..)
    , FontStyle (..)
    )
where

data Typography
    = Typography
        TextAlignment
        FontSize
        [FontStyle]
    deriving (Int -> Typography -> ShowS
[Typography] -> ShowS
Typography -> String
(Int -> Typography -> ShowS)
-> (Typography -> String)
-> ([Typography] -> ShowS)
-> Show Typography
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Typography -> ShowS
showsPrec :: Int -> Typography -> ShowS
$cshow :: Typography -> String
show :: Typography -> String
$cshowList :: [Typography] -> ShowS
showList :: [Typography] -> ShowS
Show)

data TextAlignment
    = LeftAligned
    | Centered
    | RightAligned
    deriving (Int -> TextAlignment -> ShowS
[TextAlignment] -> ShowS
TextAlignment -> String
(Int -> TextAlignment -> ShowS)
-> (TextAlignment -> String)
-> ([TextAlignment] -> ShowS)
-> Show TextAlignment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextAlignment -> ShowS
showsPrec :: Int -> TextAlignment -> ShowS
$cshow :: TextAlignment -> String
show :: TextAlignment -> String
$cshowList :: [TextAlignment] -> ShowS
showList :: [TextAlignment] -> ShowS
Show)

data FontSize
    = SmallFontSize
    | MediumFontSize
    | LargeFontSize
    deriving (Int -> FontSize -> ShowS
[FontSize] -> ShowS
FontSize -> String
(Int -> FontSize -> ShowS)
-> (FontSize -> String) -> ([FontSize] -> ShowS) -> Show FontSize
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FontSize -> ShowS
showsPrec :: Int -> FontSize -> ShowS
$cshow :: FontSize -> String
show :: FontSize -> String
$cshowList :: [FontSize] -> ShowS
showList :: [FontSize] -> ShowS
Show)

data FontStyle
    = Bold
    | Italics
    | Underlined
    deriving (Int -> FontStyle -> ShowS
[FontStyle] -> ShowS
FontStyle -> String
(Int -> FontStyle -> ShowS)
-> (FontStyle -> String)
-> ([FontStyle] -> ShowS)
-> Show FontStyle
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FontStyle -> ShowS
showsPrec :: Int -> FontStyle -> ShowS
$cshow :: FontStyle -> String
show :: FontStyle -> String
$cshowList :: [FontStyle] -> ShowS
showList :: [FontStyle] -> ShowS
Show)