noredink-ui/styleguide-app/View.elm

222 lines
6.8 KiB
Elm
Raw Normal View History

2018-02-13 00:32:38 +03:00
module View exposing (view)
import Css exposing (..)
import Css.Foreign exposing (Snippet)
import DEPRECATED.Css.File exposing (Stylesheet, compile, stylesheet)
import DEPRECATED.Css.Namespace
import Headings
import Html.Styled as Html exposing (Html, img)
import Html.Styled.Attributes as Attributes exposing (..)
2018-02-13 00:32:38 +03:00
import Model exposing (..)
import ModuleExample as ModuleExample exposing (Category(..), ModuleExample, categoryForDisplay)
2018-03-17 03:16:16 +03:00
import Nri.Ui.Colors.V1 as Colors
2018-02-13 00:32:38 +03:00
import Nri.Ui.Css.VendorPrefixed as VendorPrefixed
2018-03-17 03:15:03 +03:00
import Nri.Ui.Fonts.V1 as Fonts
2018-02-13 00:32:38 +03:00
import NriModules as NriModules exposing (nriThemedModules)
import Routes as Routes exposing (Route)
import Update exposing (..)
view : Model -> Html Msg
view model =
Html.div []
[ Html.styled Html.div
[ displayFlex
, alignItems flexStart
]
[]
2018-02-13 00:32:38 +03:00
[ navigation model.route
, Html.styled Html.div
[ flexGrow (int 1) ]
[]
2018-02-13 00:32:38 +03:00
(case model.route of
Routes.Doodad doodad ->
[ Headings.h2
[ Html.a [ Attributes.href "#" ] [ Html.text "(see all)" ] ]
2018-02-13 00:32:38 +03:00
, nriThemedModules model.moduleStates
|> List.filter (\m -> m.filename == ("Nri/" ++ doodad))
|> List.map (ModuleExample.view True)
|> Html.div []
|> Html.map UpdateModuleStates
]
Routes.Category category ->
[ Html.styled Html.section
[ sectionStyles ]
[]
2018-02-13 00:32:38 +03:00
[ newComponentsLink
, Headings.h2 [ Html.text (toString category) ]
2018-02-13 00:32:38 +03:00
, nriThemedModules model.moduleStates
|> List.filter (\doodad -> category == doodad.category)
|> List.map (ModuleExample.view True)
|> Html.div []
|> Html.map UpdateModuleStates
]
]
Routes.All ->
[ Html.styled Html.section
[ sectionStyles ]
[]
2018-02-13 00:32:38 +03:00
[ newComponentsLink
, Headings.h2 [ Html.text "NRI-Themed Modules" ]
, Headings.h3 [ Html.text "All Categories" ]
2018-02-13 00:32:38 +03:00
, nriThemedModules model.moduleStates
|> List.map (ModuleExample.view True)
|> Html.div []
|> Html.map UpdateModuleStates
]
]
)
]
]
newComponentsLink : Html Msg
newComponentsLink =
Html.div []
[ Headings.h2 [ Html.text "New Styleguide Components" ]
2018-02-13 00:32:38 +03:00
, Html.div []
[ Html.text "Future styleguide components can be found in "
, Html.a [ href "https://app.zeplin.io/project/5973fb495395bdc871ebb055" ] [ Html.text "this Zepplin" ]
, Html.text "."
]
]
navigation : Route -> Html Msg
navigation route =
let
isActive category =
case route of
Routes.Category routeCategory ->
category == routeCategory
_ ->
False
navLink category =
Html.li []
[ Html.styled Html.a
[ backgroundColor transparent
, borderStyle none
, if isActive category then
color Colors.navy
else
color Colors.azure
2018-02-13 00:32:38 +03:00
]
[ Attributes.href <| "#category/" ++ toString category ]
2018-02-13 00:32:38 +03:00
[ Html.text (categoryForDisplay category) ]
]
in
Html.styled Html.div
[ flexBasis (px 300)
, backgroundColor Colors.gray92
, marginRight (px 40)
, padding (px 25)
, VendorPrefixed.value "position" "sticky"
, top (px 150)
, flexShrink zero
]
[]
[ Headings.h4
2018-02-13 00:32:38 +03:00
[ Html.text "Categories" ]
, Html.styled Html.ul
[ margin4 zero zero (px 40) zero
, Css.Foreign.children
[ Css.Foreign.selector "li"
[ margin2 (px 10) zero
]
]
]
[]
<|
2018-02-13 00:32:38 +03:00
Html.li []
[ Html.styled Html.a
[ backgroundColor transparent
, borderStyle none
, if route == Routes.All then
color Colors.navy
else
color Colors.azure
2018-02-13 00:32:38 +03:00
]
[ Attributes.href "#" ]
2018-02-13 00:32:38 +03:00
[ Html.text "All" ]
]
:: List.map
navLink
[ Text
2018-03-02 00:34:44 +03:00
, TextWriting
2018-03-17 01:33:42 +03:00
, Fonts
2018-02-13 00:32:38 +03:00
, Colors
, Layout
, Inputs
, Buttons
, Icons
, Behaviors
, Messaging
, Modals
, Writing
, DynamicSymbols
, Pages
, QuestionTypes
]
]
type Classes
= Section
| StyleGuideLayout
| StyleGuideContent
| CategoryMenu
| CategoryLinks
| ActiveCategory
| NavLink
sectionStyles : Css.Style
sectionStyles =
Css.batch [ margin2 (px 40) zero ]
layoutFixer : List Snippet
2018-02-13 00:32:38 +03:00
layoutFixer =
-- TODO: remove when universal header seizes power
[ Css.Foreign.selector "#header-menu"
2018-02-13 00:32:38 +03:00
[ Css.property "float" "none"
]
, Css.Foreign.selector "#page-container"
2018-02-13 00:32:38 +03:00
[ maxWidth (px 1400)
]
, Css.Foreign.selector ".anonymous .log-in-button"
2018-02-13 00:32:38 +03:00
[ Css.property "float" "none"
, right zero
, top zero
]
, Css.Foreign.selector ".l-inline-blocks"
2018-02-13 00:32:38 +03:00
[ textAlign right
]
, Css.Foreign.everything
2018-02-13 00:32:38 +03:00
[ Fonts.baseFont
]
]
styles : Stylesheet
2018-02-13 00:32:38 +03:00
styles =
(stylesheet << DEPRECATED.Css.Namespace.namespace "Page-StyleGuide-") <|
2018-02-13 00:32:38 +03:00
List.concat
[ [ Css.Foreign.class NavLink
2018-02-13 00:32:38 +03:00
[ backgroundColor transparent
, borderStyle none
, color Colors.azure
]
, Css.Foreign.class ActiveCategory
2018-02-13 00:32:38 +03:00
[ color Colors.navy
]
]
, layoutFixer
]