{-# LANGUAGE OverloadedStrings #-}
module Clay.Pseudo where
import Data.Text (Text)
import Clay.Render (renderSelector)
import Clay.Selector
import qualified Data.Text.Lazy as Lazy
after, before, firstLetter, firstLine, selection, backdrop :: Refinement
after = "::after"
before = "::before"
firstLetter = "::first-letter"
firstLine = "::first-line"
selection = "::selection"
backdrop = "::backdrop"
link, visited, active, hover, focus, firstChild, lastChild :: Refinement
link = ":link"
visited = ":visited"
active = ":active"
hover = ":hover"
focus = ":focus"
firstChild = ":first-child"
lastChild = ":last-child"
checked, default_, disabled, empty, enabled, firstOfType, indeterminate,
inRange, invalid, lastOfType, onlyChild, onlyOfType, optional,
outOfRange, required, root, target, valid :: Refinement
checked = ":checked"
default_ = ":default"
disabled = ":disabled"
empty = ":empty"
enabled = ":enabled"
firstOfType = ":first-of-type"
indeterminate = ":indeterminate"
inRange = ":in-range"
invalid = ":invalid"
lastOfType = ":last-of-type"
onlyChild = ":only-child"
onlyOfType = ":only-of-type"
optional = ":optional"
outOfRange = ":out-of-range"
required = ":required"
root = ":root"
target = ":target"
valid = ":valid"
lang, nthChild, nthLastChild, nthLastOfType, nthOfType :: Text -> Refinement
lang n = func "lang" [n]
nthChild n = func "nth-child" [n]
nthLastChild n = func "nth-last-child" [n]
nthLastOfType n = func "nth-last-of-type" [n]
nthOfType n = func "nth-of-type" [n]
not :: Selector -> Refinement
not r = func "not" [Lazy.toStrict (renderSelector r)]