-
Notifications
You must be signed in to change notification settings - Fork 40
/
FontFace.purs
38 lines (29 loc) · 1.15 KB
/
FontFace.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
module Css.FontFace where
import Prelude
import Data.Maybe (Maybe(), maybe)
import Data.NonEmpty (NonEmpty())
import Css.Property
import Css.String
import Css.Stylesheet
fontFaceFamily :: String -> Css
fontFaceFamily = key (fromString "font-family") <<< Literal
data FontFaceFormat = WOFF
| WOFF2
| TrueType
| OpenType
| EmbeddedOpenType
| SVG
formatName :: FontFaceFormat -> String
formatName WOFF = "woff"
formatName WOFF2 = "woff2"
formatName TrueType = "truetype"
formatName OpenType = "opentype"
formatName EmbeddedOpenType = "embedded-opentype"
formatName SVG = "svg"
data FontFaceSrc = FontFaceSrcUrl String (Maybe FontFaceFormat)
| FontFaceSrcLocal String
instance valFontFaceSrc :: Val FontFaceSrc where
value (FontFaceSrcUrl u f) = fromString $ "url(" <> quote u <> ")" <> maybe "" (\f' -> " format(" <> formatName f' <> ")") f
value (FontFaceSrcLocal l) = fromString $ "local(" <> quote l <> ")"
fontFaceSrc :: NonEmpty Array FontFaceSrc -> Css
fontFaceSrc = key $ fromString "src"