{-# LANGUAGE OverloadedStrings #-}

module Design.Helper
  ( clearFix
  , button
  , input
  , iconButton
  , centeredWithMargin
  , verticalCentering
  ) where

import Prelude hiding (span)

import Clay hiding (button, input)

import Data.Monoid ((<>))

import Design.Constants
import Design.Color as Color

clearFix :: Css
clearFix =
  after & do
    content (stringContent "")
    display displayTable
    clear both

button :: Color -> Color -> Size a -> (Color -> Color) -> Css
button backgroundCol textCol h focusOp = do
  backgroundColor backgroundCol
  padding (px 0) (px 10) (px 0) (px 10)
  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 LengthUnit -> (Color -> Color) -> Css
iconButton backgroundCol textCol h focusOp = do
  button 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)

input :: Double -> Css
input 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

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