module Web.View.WidgetPatterns.Index where import Web.Types import Generated.Types import IHP.Prelude import IHP.ViewPrelude import Web.Routes () -- Row: WidgetPattern fields + adopter_count + latest_version type PatternIndexRow = (WidgetPattern, Int, Maybe Int) data IndexView = IndexView { patterns :: ![PatternIndexRow] } instance View IndexView where html IndexView { .. } = [hsx|

Widget Pattern Library

Published reusable widget patterns.

New Pattern
{forEach patterns renderPatternRow} {if null patterns then noPatternsMsg else mempty}
|] noPatternsMsg :: Html noPatternsMsg = [hsx|

No published patterns yet.

|] renderPatternRow :: PatternIndexRow -> Html renderPatternRow (pattern, adopterCount, mVersion) = [hsx|
{pattern.name} {pattern.widgetType} {if pattern.isCrossHub then crossHubChip else mempty}
{tshow adopterCount} adopters {maybe mempty renderVersionChip mVersion}
{maybe mempty renderPatternDesc pattern.description}
|] crossHubChip :: Html crossHubChip = [hsx|cross-hub|] renderVersionChip :: Int -> Html renderVersionChip v = [hsx|v{tshow v}|] renderPatternDesc :: Text -> Html renderPatternDesc d = [hsx|

{d}

|]