3 | import Text.CSS.Class
4 | import Text.CSS.Declaration
5 | import Text.CSS.Selector
12 | data Rule : (n : Nat) -> Type where
14 | (selectors : List Selector)
15 | -> (decls : List Declaration)
20 | -> (rules : List $
Rule 0)
25 | -> (rules : List $
Rule 0)
29 | sel : Selector -> List Declaration -> Rule n
33 | class : Class -> List Declaration -> Rule n
34 | class s = sel (class s)
37 | classes : List Class -> List Declaration -> Rule n
38 | classes = sel . classes
41 | elem : {str : _} -> (0 tag : HTMLTag str) -> List Declaration -> Rule n
42 | elem v = sel $
elem v
45 | id : String -> List Declaration -> Rule n
49 | star : List Declaration -> Rule n
54 | ref : {0 t : HTMLTag s} -> Ref t -> List Declaration -> Rule n
58 | Interpolation (Rule n) where
59 | interpolate (Sel s ds) =
60 | let dss := fastConcat $
map interpolate ds
61 | ss := fastConcat . intersperse ", " $
map interpolate s
63 | interpolate (Media q rs) = "@media (\{q}){\{unlines $ map interpolate rs}}"
64 | interpolate (Container q rs) = "@container (\{q}){\{unlines $ map interpolate rs}}"