noredink-ui/styleguide-app/Examples/IconExamples.elm

79 lines
2.1 KiB
Elm
Raw Normal View History

2021-11-05 21:48:09 +03:00
module Examples.IconExamples exposing (preview, view, viewWithCustomStyles)
2019-10-01 03:16:29 +03:00
import Css
import Html.Styled as Html exposing (Html)
import Html.Styled.Attributes exposing (css, style, title)
import Nri.Ui.Colors.V1 as Colors
import Nri.Ui.Heading.V2 as Heading
import Nri.Ui.Svg.V1 as Svg
2021-10-27 20:42:23 +03:00
import Nri.Ui.Text.V6 as Text
2019-10-01 03:16:29 +03:00
2021-11-05 21:48:09 +03:00
preview : List Svg.Svg -> List (Html msg)
preview icons =
[ Html.div
[ css
[ Css.displayFlex
2021-11-05 22:04:46 +03:00
, Css.flexWrap Css.wrap
, Css.property "gap" "10px"
2021-11-05 21:48:09 +03:00
, Css.color Colors.gray45
]
]
(List.map
2021-11-05 22:04:46 +03:00
(Svg.withWidth (Css.px 30) >> Svg.withHeight (Css.px 30) >> Svg.toHtml)
2021-11-05 21:48:09 +03:00
icons
)
]
view : String -> List ( String, Svg.Svg ) -> Html msg
2019-10-01 19:04:33 +03:00
view headerText icons =
let
defaultStyles =
[ Css.height (Css.px 25)
, Css.width (Css.px 25)
, Css.margin (Css.px 4)
, Css.color Colors.gray45
]
in
viewWithCustomStyles headerText
(List.map (\( name, svg ) -> ( name, svg, defaultStyles )) icons)
viewWithCustomStyles : String -> List ( String, Svg.Svg, List Css.Style ) -> Html msg
viewWithCustomStyles headerText icons =
Html.section [ css [ Css.displayFlex, Css.alignItems Css.center ] ]
[ Html.div
[ css
[ Css.displayFlex
, Css.flexWrap Css.wrap
]
]
2019-10-01 03:16:29 +03:00
(List.map viewIcon icons)
, Heading.h2
[ Heading.css
2019-10-30 04:54:39 +03:00
[ Css.marginLeft (Css.px 32)
, Css.paddingLeft (Css.px 32)
, Css.borderLeft3 (Css.px 2) Css.solid Colors.gray92
, Css.fontSize (Css.px 16)
]
]
[ Html.text headerText ]
2019-10-01 03:16:29 +03:00
]
viewIcon : ( String, Svg.Svg, List Css.Style ) -> Html msg
viewIcon ( name, icon, style ) =
2019-10-01 03:16:29 +03:00
Html.div
[ css
[ Css.displayFlex
2019-10-01 03:16:29 +03:00
, Css.alignItems Css.center
, Css.margin (Css.px 8)
2019-10-01 03:16:29 +03:00
]
]
2022-01-18 22:40:46 +03:00
[ icon
|> Svg.withCss style
|> Svg.toHtml
2021-10-27 21:54:14 +03:00
, Text.smallBody [ Text.plaintext name ]
2019-10-01 03:16:29 +03:00
]