aboutsummaryrefslogtreecommitdiff
path: root/src/server/Design/Helper.hs
blob: 766fbdb5d434c2c7527fb8019d7a77ce4330c66f (plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{-# LANGUAGE OverloadedStrings #-}

module Design.Helper
  ( clearFix
  , defaultButton
  , iconButton
  , defaultInput
  , centeredWithMargin
  , expandBlock
  , verticalCentering
  ) where

import Prelude hiding (span)

import Clay

import Data.Monoid ((<>))

import Design.Constants
import Design.Color as Color
import qualified Clay.Display as D

clearFix :: Css
clearFix =
  after & do
    content (stringContent "")
    display D.table
    clear both

defaultButton :: Color -> Color -> Size a -> (Color -> Color) -> Css
defaultButton backgroundCol textCol h focusOp = do
  backgroundColor backgroundCol
  color textCol
  borderRadius radius radius radius radius
  verticalAlign middle
  cursor pointer
  lineHeight h
  height h
  textAlign (alignSide sideCenter)
  hover & backgroundColor (focusOp backgroundCol)
  focus & backgroundColor (focusOp backgroundCol)

iconButton :: Color -> Color -> Size Abs -> (Color -> Color) -> Css
iconButton backgroundCol textCol h focusOp = do
  defaultButton backgroundCol textCol h focusOp
  i <> span ? do
    height h
    lineHeight h
  span ? do
    display inlineBlock
    marginLeft (px 20)
  i ? do
    marginLeft (px 15)
    marginRight (px 20)

defaultInput :: Integer -> Css
defaultInput h = do
  height (px h)
  padding (px 10) (px 10) (px 10) (px 10)
  borderRadius radius radius radius radius
  border solid (px 1) Color.dustyGray
  focus & borderColor Color.silver
  verticalAlign middle

centeredWithMargin :: Css
centeredWithMargin = do
  width (pct blockPercentWidth)
  marginLeft auto
  marginRight auto

expandBlock :: Color -> Color -> Size Abs -> Css
expandBlock headerBackground headerColor headerHeight = do
  marginBottom blockMarginBottom
  marginLeft (pct blockPercentMargin)
  marginRight (pct blockPercentMargin)
  ".header" ? do
    defaultButton headerBackground headerColor headerHeight focusLighten
    width (pct 100)
    fontSize (px 18)
    borderRadius radius radius radius radius
    textAlign (alignSide sideLeft)
    position relative
    paddingLeft blockPadding
    paddingRight (px 55)

verticalCentering :: Css
verticalCentering = do
  position absolute
  top (pct 50)
  "transform" -: "translateY(-50%)"