1module Chunky exposing (brick, bricky, chunk, chunky, inline, lineBreak, nothing, raw, rawy, slab, slaby)
2
3{-| Chunks, blocks and slabs.
4
5Convenience functions to build UIs with composable CSS classes.
6
7-}
8
9import Html exposing (Html)
10import Html.Attributes as A
11
12
13
14-- 1
15
16
17slab :
18 (List (Html.Attribute msg) -> List (Html msg) -> Html msg)
19 -> List (Html.Attribute msg)
20 -> List String
21 -> List (Html msg)
22 -> Html msg
23slab typ attributes stylingAttributes children =
24 typ
25 (A.class (String.join " " stylingAttributes) :: attributes)
26 children
27
28
29slaby :
30 (List (Html.Attribute msg) -> List (Html msg) -> Html msg)
31 -> List (Html.Attribute msg)
32 -> List String
33 -> Html msg
34 -> Html msg
35slaby a b c =
36 List.singleton >> slab a b c
37
38
39
40-- 2
41
42
43brick : List (Html.Attribute msg) -> List String -> List (Html msg) -> Html msg
44brick =
45 slab Html.div
46
47
48bricky : List (Html.Attribute msg) -> List String -> Html msg -> Html msg
49bricky a b =
50 List.singleton >> brick a b
51
52
53
54-- 3
55
56
57chunk : List String -> List (Html msg) -> Html msg
58chunk =
59 brick []
60
61
62chunky : List String -> Html msg -> Html msg
63chunky a =
64 List.singleton >> chunk a
65
66
67inline : List String -> List (Html msg) -> Html msg
68inline =
69 slab Html.span []
70
71
72
73-- 4
74
75
76raw : List (Html msg) -> Html msg
77raw =
78 chunk []
79
80
81rawy : Html msg -> Html msg
82rawy =
83 List.singleton >> raw
84
85
86
87-- 5
88
89
90nothing : Html msg
91nothing =
92 Html.text ""
93
94
95lineBreak : Html msg
96lineBreak =
97 Html.br [] []