{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wincomplete-patterns -Werror=incomplete-patterns #-}
module Language.Ltml.HTML.CSS.Classes
(
Class (..)
, className
, classStyle
, enumCounter
, ToCssClass (..)
, ToCssClasses (..)
) where
import Clay hiding (i, map, size)
import qualified Clay.Flexbox as Flexbox
import Data.Char (toLower)
import Data.String (fromString)
import Data.Text (Text, pack, unpack)
import qualified Data.Typography as Ltml
import Data.Void (Void, absurd)
import qualified Language.Lsd.AST.Type.Table as Ltml
import qualified Language.Ltml.HTML.CSS.Color as Color
import Language.Ltml.HTML.CSS.CustomClay
data Class
=
Body
|
AppendixSection
|
Document
|
DocumentTitle
|
SuperSection
|
Section
|
Heading
|
Paragraph
|
ParagraphID
|
TextContainer
|
Enumeration
|
|
|
|
LeftAligned
|
Centered
|
RightAligned
|
SmallFontSize
|
MediumFontSize
|
LargeFontSize
|
Bold
|
Italic
|
Underlined
|
InlineError
|
CenteredBox
|
ErrorBox
|
AnchorLink
|
ButtonLink
|
Anchor
|
TableContainer
|
Table
|
TableOfContents
|
MinSizeColumn
|
MaxSizeColumn
|
TableCentered
|
TableDarkCell
deriving (Int -> Class -> ShowS
[Class] -> ShowS
Class -> String
(Int -> Class -> ShowS)
-> (Class -> String) -> ([Class] -> ShowS) -> Show Class
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Class -> ShowS
showsPrec :: Int -> Class -> ShowS
$cshow :: Class -> String
show :: Class -> String
$cshowList :: [Class] -> ShowS
showList :: [Class] -> ShowS
Show, Class -> Class -> Bool
(Class -> Class -> Bool) -> (Class -> Class -> Bool) -> Eq Class
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Class -> Class -> Bool
== :: Class -> Class -> Bool
$c/= :: Class -> Class -> Bool
/= :: Class -> Class -> Bool
Eq, Int -> Class
Class -> Int
Class -> [Class]
Class -> Class
Class -> Class -> [Class]
Class -> Class -> Class -> [Class]
(Class -> Class)
-> (Class -> Class)
-> (Int -> Class)
-> (Class -> Int)
-> (Class -> [Class])
-> (Class -> Class -> [Class])
-> (Class -> Class -> [Class])
-> (Class -> Class -> Class -> [Class])
-> Enum Class
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Class -> Class
succ :: Class -> Class
$cpred :: Class -> Class
pred :: Class -> Class
$ctoEnum :: Int -> Class
toEnum :: Int -> Class
$cfromEnum :: Class -> Int
fromEnum :: Class -> Int
$cenumFrom :: Class -> [Class]
enumFrom :: Class -> [Class]
$cenumFromThen :: Class -> Class -> [Class]
enumFromThen :: Class -> Class -> [Class]
$cenumFromTo :: Class -> Class -> [Class]
enumFromTo :: Class -> Class -> [Class]
$cenumFromThenTo :: Class -> Class -> Class -> [Class]
enumFromThenTo :: Class -> Class -> Class -> [Class]
Enum, Class
Class -> Class -> Bounded Class
forall a. a -> a -> Bounded a
$cminBound :: Class
minBound :: Class
$cmaxBound :: Class
maxBound :: Class
Bounded)
classStyle :: Class -> Css
classStyle :: Class -> Css
classStyle Class
Body =
Class -> Selector
toClassSelector Class
Body Selector -> Css -> Css
? do
[Text] -> [GenericFontFamily] -> Css
fontFamily [Item [Text]
Text
"Arial"] [Item [GenericFontFamily]
GenericFontFamily
sansSerif]
Size Any -> Css
forall a. Size a -> Css
lineHeight (Number -> Size Any
forall a. Number -> Size a
unitless Number
1.5)
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
2)
Size LengthUnit -> Css
forall a. Size a -> Css
marginLeft (Number -> Size LengthUnit
em Number
2)
Size LengthUnit -> Css
forall a. Size a -> Css
marginRight (Number -> Size LengthUnit
em Number
2)
Size LengthUnit -> Css
forall a. Size a -> Css
paddingBottom (Number -> Size LengthUnit
em Number
10)
classStyle Class
AppendixSection =
Class -> Selector
toClassSelector Class
AppendixSection Selector -> Css -> Css
? do
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
10)
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
10)
classStyle Class
Document =
Class -> Selector
toClassSelector Class
Document Selector -> Css -> Css
? do
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
3)
classStyle Class
DocumentTitle =
Class -> Selector
toClassSelector Class
DocumentTitle Selector -> Css -> Css
? do
FontWeight -> Css
fontWeight FontWeight
forall a. Normal a => a
normal
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
marginBottom (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
1.5)
classStyle Class
SuperSection =
Class -> Selector
toClassSelector Class
SuperSection Selector -> Css -> Css
? do
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
2)
classStyle Class
Section =
Class -> Selector
toClassSelector Class
Section Selector -> Css -> Css
? do
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
1)
classStyle Class
Heading =
Class -> Selector
toClassSelector Class
Heading Selector -> Css -> Css
? do
FontWeight -> Css
fontWeight FontWeight
forall a. Normal a => a
normal
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
marginBottom (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
1)
classStyle Class
Paragraph =
Class -> Selector
toClassSelector Class
Paragraph Selector -> Css -> Css
? do
Display -> Css
display Display
flex
classStyle Class
ParagraphID =
Class -> Selector
toClassSelector Class
ParagraphID Selector -> Css -> Css
? do
Int -> Int -> Size Any -> Css
forall b. Int -> Int -> Size b -> Css
Flexbox.flex Int
0 Int
0 Size Any
forall a. Auto a => a
auto
Size LengthUnit -> Css
forall a. Size a -> Css
paddingRight (Number -> Size LengthUnit
em Number
0.75)
UserSelect -> Css
userSelect UserSelect
forall a. None a => a
none
classStyle Class
TextContainer =
Class -> Selector
toClassSelector Class
TextContainer Selector -> Css -> Css
? do
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
0.5)
TextAlign -> Css
textAlign TextAlign
justify
classStyle Class
Enumeration =
let enumClassName :: Text
enumClassName = Class -> Text
className Class
Enumeration
in do
Selector
ol Selector -> Refinement -> Selector
# Text -> Refinement
byClass Text
enumClassName Selector -> Css -> Css
? do
Text -> Css
counterReset Text
"item"
Size LengthUnit -> Css
forall a. Size a -> Css
marginLeft (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
paddingLeft (Number -> Size LengthUnit
em Number
1)
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
marginBottom (Number -> Size LengthUnit
em Number
0)
Display -> Css
display Display
flex
FlexDirection -> Css
flexDirection FlexDirection
column
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
0.5)
Selector
ol Selector -> Refinement -> Selector
# Text -> Refinement
byClass Text
enumClassName Selector -> Selector -> Selector
|> Selector
li Selector -> Css -> Css
? do
Text -> Css
counterIncrement Text
"item"
Display -> Css
display Display
grid
[Size LengthUnit] -> Css
forall a. [Size a] -> Css
gridTemplateColumns [Item [Size LengthUnit]
Size LengthUnit
forall a. Auto a => a
auto, Number -> Size LengthUnit
fr Number
1]
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
0.55)
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
0)
Size LengthUnit -> Css
forall a. Size a -> Css
marginBottom (Number -> Size LengthUnit
em Number
0)
classStyle Class
FootnoteContainer =
Class -> Selector
toClassSelector Class
FootnoteContainer Selector -> Css -> Css
? do
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
1)
classStyle Class
Footnote =
Class -> Selector
toClassSelector Class
Footnote Selector -> Css -> Css
? do
Display -> Css
display Display
flex
Size LengthUnit -> Css
gap (Number -> Size LengthUnit
em Number
0.5)
classStyle Class
FootnoteID =
Class -> Selector
toClassSelector Class
FootnoteID Selector -> Css -> Css
? do
UserSelect -> Css
userSelect UserSelect
forall a. None a => a
none
classStyle Class
LeftAligned =
Class -> Selector
toClassSelector Class
LeftAligned Selector -> Css -> Css
? do
Display -> Css
display Display
block
TextAlign -> Css
textAlign TextAlign
alignLeft
classStyle Class
Centered =
Class -> Selector
toClassSelector Class
Centered Selector -> Css -> Css
? do
Display -> Css
display Display
block
TextAlign -> Css
textAlign TextAlign
forall a. Center a => a
center
classStyle Class
RightAligned =
Class -> Selector
toClassSelector Class
RightAligned Selector -> Css -> Css
? do
Display -> Css
display Display
block
TextAlign -> Css
textAlign TextAlign
alignRight
classStyle Class
SmallFontSize = Class -> Selector
toClassSelector Class
SmallFontSize Selector -> Css -> Css
? Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
0.75)
classStyle Class
MediumFontSize = Class -> Selector
toClassSelector Class
MediumFontSize Selector -> Css -> Css
? Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
1)
classStyle Class
LargeFontSize = Class -> Selector
toClassSelector Class
LargeFontSize Selector -> Css -> Css
? Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
1.25)
classStyle Class
Bold =
Class -> Selector
toClassSelector Class
Bold Selector -> Css -> Css
? do
FontWeight -> Css
fontWeight FontWeight
bold
classStyle Class
Italic =
Class -> Selector
toClassSelector Class
Italic Selector -> Css -> Css
? do
FontStyle -> Css
fontStyle FontStyle
italic
classStyle Class
Underlined = do
Class -> Selector
toClassSelector Class
Underlined Selector -> Css -> Css
? do
TextDecoration -> Css
textDecoration TextDecoration
underline
classStyle Class
InlineError =
Class -> Selector
toClassSelector Class
InlineError Selector -> Css -> Css
? do
Color -> Css
fontColor Color
Color.errorText
FontWeight -> Css
fontWeight FontWeight
bold
classStyle Class
CenteredBox =
Class -> Selector
toClassSelector Class
CenteredBox Selector -> Css -> Css
? do
Size LengthUnit -> Css
forall a. Size a -> Css
marginTop (Number -> Size LengthUnit
em Number
2)
Size LengthUnit -> Css
forall a. Size a -> Css
marginBottom (Number -> Size LengthUnit
em Number
2)
Display -> Css
display Display
inlineGrid
JustifyContentValue -> Css
justifyItems JustifyContentValue
forall a. Center a => a
center
Size Percentage -> Css
forall a. Size a -> Css
width (Number -> Size Percentage
pct Number
100)
classStyle Class
ErrorBox =
Class -> Selector
toClassSelector Class
ErrorBox Selector -> Css -> Css
? do
Size LengthUnit
-> Size LengthUnit -> Size LengthUnit -> Size LengthUnit -> Css
forall a. Size a -> Size a -> Size a -> Size a -> Css
padding (Number -> Size LengthUnit
em Number
1) (Number -> Size LengthUnit
em Number
1) (Number -> Size LengthUnit
em Number
1) (Number -> Size LengthUnit
em Number
1)
Size LengthUnit -> Stroke -> Color -> Css
border (Number -> Size LengthUnit
px Number
2) Stroke
dashed Color
Color.errorBoxBorder
classStyle Class
AnchorLink = do
Class -> Selector
toClassSelector Class
AnchorLink Selector -> Css -> Css
? do
Color -> Css
color Color
Color.linkText
TextDecoration -> Css
textDecoration TextDecoration
underline
Color -> Css
textDecorationColor Color
Color.linkUnderline
Class -> Selector
toClassSelector Class
AnchorLink Selector -> Refinement -> Selector
# Refinement
hover Selector -> Css -> Css
? do
TextDecoration -> Css
textDecoration TextDecoration
forall a. None a => a
none
Color -> Css
color Color
Color.linkTextHover
classStyle Class
ButtonLink = do
Class -> Selector
toClassSelector Class
ButtonLink Selector -> Css -> Css
? do
Size LengthUnit
-> Size LengthUnit -> Size LengthUnit -> Size LengthUnit -> Css
forall a. Size a -> Size a -> Size a -> Size a -> Css
padding (Number -> Size LengthUnit
px Number
0) (Number -> Size LengthUnit
px Number
6) (Number -> Size LengthUnit
px Number
3) (Number -> Size LengthUnit
px Number
6)
Size LengthUnit
-> Size LengthUnit -> Size LengthUnit -> Size LengthUnit -> Css
forall a. Size a -> Size a -> Size a -> Size a -> Css
borderRadius (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10)
TextDecoration -> Css
textDecoration TextDecoration
forall a. None a => a
none
Size LengthUnit -> Css
forall a. Size a -> Css
fontSize (Number -> Size LengthUnit
em Number
1.5)
Color -> Css
color Color
Color.linkText
Class -> Selector
toClassSelector Class
ButtonLink Selector -> Refinement -> Selector
# Refinement
hover Selector -> Css -> Css
? do
Color -> Css
color Color
Color.linkTextHover
Color -> Css
backgroundColor Color
Color.tocDarkCell
classStyle Class
Anchor =
Class -> Selector
toClassSelector Class
Anchor Selector -> Css -> Css
? do
Size LengthUnit -> Css
scrollMarginTop (Number -> Size LengthUnit
em Number
2)
classStyle Class
TableContainer = do
Class -> Selector
toClassSelector Class
TableContainer Selector -> Css -> Css
? do
Display -> Css
display Display
grid
JustifyContentValue -> Css
justifyItems JustifyContentValue
forall a. Center a => a
center
classStyle Class
Table = do
let cellPadding :: Css
cellPadding = Size LengthUnit
-> Size LengthUnit -> Size LengthUnit -> Size LengthUnit -> Css
forall a. Size a -> Size a -> Size a -> Size a -> Css
padding (Number -> Size LengthUnit
px Number
2) (Number -> Size LengthUnit
px Number
12) (Number -> Size LengthUnit
px Number
2) (Number -> Size LengthUnit
px Number
12)
cellBorder :: Css
cellBorder = Size LengthUnit -> Stroke -> Color -> Css
border (Number -> Size LengthUnit
px Number
1) Stroke
solid Color
Color.tableCellBorder
Class -> Selector
toClassSelector Class
Table Selector -> Css -> Css
? do
Size Percentage -> Css
forall a. Size a -> Css
maxWidth (Number -> Size Percentage
pct Number
90)
Position -> Css
tableLayout Position
autoLayout
Visibility -> Css
borderCollapse Visibility
collapse
Class -> Selector
toClassSelector Class
Table Selector -> Selector -> Selector
|> Selector
thead Selector -> Selector -> Selector
|> Selector
tr Selector -> Selector -> Selector
|> Selector
th Selector -> Css -> Css
? do
TextAlign -> Css
textAlign TextAlign
alignLeft
Color -> Css
backgroundColor Color
Color.tocDarkCell
Css
cellPadding
Css
cellBorder
WhiteSpace -> Css
whiteSpace WhiteSpace
forall a. Normal a => a
normal
Class -> Selector
toClassSelector Class
Table Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Refinement -> Selector
# Refinement
hover Selector -> Selector -> Selector
|> Selector
td Selector -> Css -> Css
? do
Color -> Css
backgroundColor Color
Color.tocActiveRow
Class -> Selector
toClassSelector Class
Table Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Selector -> Selector
|> Selector
td Selector -> Css -> Css
? do
WhiteSpace -> Css
whiteSpace WhiteSpace
nowrap
Css
cellPadding
Css
cellBorder
WhiteSpace -> Css
whiteSpace WhiteSpace
forall a. Normal a => a
normal
classStyle Class
TableOfContents = do
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Css -> Css
? do
Size Percentage -> Css
forall a. Size a -> Css
width (Number -> Size Percentage
pct Number
100)
Position -> Css
tableLayout Position
autoLayout
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
thead Selector -> Selector -> Selector
|> Selector
tr Selector -> Selector -> Selector
|> Selector
th Selector -> Css -> Css
? do
TextAlign -> Css
textAlign TextAlign
alignLeft
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Css -> Css
? do
Size LengthUnit -> Stroke -> Color -> Css
borderBottom (Number -> Size LengthUnit
px Number
1) Stroke
solid Color
Color.tableCellBorder
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Refinement -> Selector
# Refinement
lastOfType Selector -> Css -> Css
? do
Size LengthUnit -> Stroke -> Color -> Css
borderBottom (Number -> Size LengthUnit
px Number
2) Stroke
solid Color
Color.tableCellBorder
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Selector -> Selector
|> Selector
td Selector -> Css -> Css
? do
WhiteSpace -> Css
whiteSpace WhiteSpace
nowrap
Size LengthUnit
-> Size LengthUnit -> Size LengthUnit -> Size LengthUnit -> Css
forall a. Size a -> Size a -> Size a -> Size a -> Css
padding (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10) (Number -> Size LengthUnit
px Number
10)
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Refinement -> Selector
# Text -> Refinement
nthOfType Text
"odd" Selector -> Css -> Css
? do
Color -> Css
backgroundColor Color
Color.tocDarkCell
Class -> Selector
toClassSelector Class
TableOfContents Selector -> Selector -> Selector
|> Selector
tbody Selector -> Selector -> Selector
|> Selector
tr Selector -> Refinement -> Selector
# Refinement
hover Selector -> Css -> Css
? do
Color -> Css
backgroundColor Color
Color.tocActiveRow
classStyle Class
MinSizeColumn = do
Class -> Selector
toClassSelector Class
MinSizeColumn Selector -> Css -> Css
? do
Size Percentage -> Css
forall a. Size a -> Css
width (Number -> Size Percentage
pct Number
1)
classStyle Class
MaxSizeColumn = do
Class -> Selector
toClassSelector Class
MaxSizeColumn Selector -> Css -> Css
? do
Size Any -> Css
forall a. Size a -> Css
width Size Any
forall a. Auto a => a
auto
classStyle Class
TableCentered =
Class -> Selector
toClassSelector Class
TableCentered Selector -> Css -> Css
? do
TextAlign -> Css
textAlign TextAlign
forall a. Center a => a
center
classStyle Class
TableDarkCell =
Class -> Selector
toClassSelector Class
TableDarkCell Selector -> Css -> Css
? do
Color -> Css
backgroundColor Color
Color.tocDarkCell
className :: Class -> Text
className :: Class -> Text
className Class
cssClass = case Class -> String
forall a. Show a => a -> String
show Class
cssClass of
(Char
c : String
cs) -> String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ Char -> Char
toLower Char
c Char -> ShowS
forall a. a -> [a] -> [a]
: String
cs
[] -> String -> Text
forall a. HasCallStack => String -> a
error String
"CSS Class has \"\" as show instance!"
toClassSelector :: Class -> Selector
toClassSelector :: Class -> Selector
toClassSelector Class
c = String -> Selector
forall a. IsString a => String -> a
fromString (String
"." String -> ShowS
forall a. [a] -> [a] -> [a]
++ Text -> String
unpack (Class -> Text
className Class
c))
enumCounter :: Text -> Counter -> Css
enumCounter :: Text -> Counter -> Css
enumCounter Text
enumClassName Counter
counterContent = do
Selector
ol Selector -> Refinement -> Selector
# Text -> Refinement
byClass Text
enumClassName Selector -> Selector -> Selector
|> Selector
li Selector -> Css -> Css
? Refinement
before Refinement -> Css -> Css
& do
Counter -> Css
counter Counter
counterContent
TextAlign -> Css
textAlign TextAlign
alignRight
class ToCssClass a where
toCssClass :: a -> Class
instance ToCssClass Ltml.TextAlignment where
toCssClass :: TextAlignment -> Class
toCssClass TextAlignment
align = case TextAlignment
align of
TextAlignment
Ltml.LeftAligned -> Class
LeftAligned
TextAlignment
Ltml.Centered -> Class
Centered
TextAlignment
Ltml.RightAligned -> Class
RightAligned
instance ToCssClass Ltml.FontSize where
toCssClass :: FontSize -> Class
toCssClass FontSize
size = case FontSize
size of
FontSize
Ltml.SmallFontSize -> Class
SmallFontSize
FontSize
Ltml.MediumFontSize -> Class
MediumFontSize
FontSize
Ltml.LargeFontSize -> Class
LargeFontSize
instance ToCssClass Ltml.FontStyle where
toCssClass :: FontStyle -> Class
toCssClass FontStyle
size = case FontStyle
size of
FontStyle
Ltml.Bold -> Class
Bold
FontStyle
Ltml.Italics -> Class
Italic
FontStyle
Ltml.Underlined -> Class
Underlined
instance ToCssClass Void where
toCssClass :: Void -> Class
toCssClass = Void -> Class
forall a. Void -> a
absurd
class ToCssClasses a where
toCssClasses :: a -> [Class]
instance ToCssClasses Ltml.Typography where
toCssClasses :: Typography -> [Class]
toCssClasses (Ltml.Typography TextAlignment
align FontSize
size [FontStyle]
styles) =
let styleClasses :: [Class]
styleClasses = (FontStyle -> Class) -> [FontStyle] -> [Class]
forall a b. (a -> b) -> [a] -> [b]
map FontStyle -> Class
forall a. ToCssClass a => a -> Class
toCssClass [FontStyle]
styles
in TextAlignment -> Class
forall a. ToCssClass a => a -> Class
toCssClass TextAlignment
align Class -> [Class] -> [Class]
forall a. a -> [a] -> [a]
: FontSize -> Class
forall a. ToCssClass a => a -> Class
toCssClass FontSize
size Class -> [Class] -> [Class]
forall a. a -> [a] -> [a]
: [Class]
styleClasses
instance ToCssClasses Ltml.BGColor where
toCssClasses :: BGColor -> [Class]
toCssClasses BGColor
bgColor = case BGColor
bgColor of
BGColor
Ltml.White -> []
BGColor
Ltml.Gray -> [Item [Class]
Class
TableDarkCell]