summaryrefslogtreecommitdiff
path: root/lore/Biz/Ibb/Core.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lore/Biz/Ibb/Core.hs')
-rw-r--r--lore/Biz/Ibb/Core.hs80
1 files changed, 80 insertions, 0 deletions
diff --git a/lore/Biz/Ibb/Core.hs b/lore/Biz/Ibb/Core.hs
new file mode 100644
index 0000000..8fd0068
--- /dev/null
+++ b/lore/Biz/Ibb/Core.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -Wall #-}
+
+-- | Main app logic
+module Biz.Ibb.Core where
+
+import Alpha
+import Biz.Ibb.Influencers
+import Data.Proxy
+import Miso
+import Miso.String
+import Servant.API
+import Servant.Links
+
+type Routes = Home
+
+type Home = View Action
+
+data Model = Model
+ { modelUri :: URI
+ , people :: [Person]
+ } deriving (Show, Eq)
+
+data Action
+ = Nop
+ | ChangeRoute URI
+ | HandleRoute URI
+ deriving (Show, Eq)
+
+home :: Model -> View Action
+home m = see m
+
+handlers :: Model -> View Action
+handlers = home
+
+notfound :: View Action
+notfound = div_ [] [ text "404" ]
+
+goHome :: URI
+goHome = linkURI $ safeLink
+ (Proxy :: Proxy Routes)
+ (Proxy :: Proxy Home)
+
+see :: Model -> View Action
+see m = div_ [ class_ "container mt-5" ]
+ [ div_ [ class_ "jumbotron" ]
+ [ h1_ [ class_ "display-4" ] [ text "Influenced by books" ]
+ , p_ [ class_ "lead" ] [ text "Influential people and the books that made them." ]
+ , p_ [ class_ "lead" ]
+ [ a_ [ href_ "http://eepurl.com/ghBFjv" ]
+ [ text "Get new book recommendations from the world's influencers in your email." ]
+ ]
+ ]
+ , div_ [ class_ "card-columns" ] $ seePerson /@ people m
+ ]
+
+seePerson :: Person -> View Action
+seePerson person = div_ [ class_ "card" ]
+ [ div_ [ class_ "card-img" ]
+ [ img_ [ class_ "card-img img-fluid", src_ $ ms $ _pic person ]]
+ , div_ [ class_ "card-body" ]
+ [ h4_ [ class_ "card-title" ] [ text $ ms $ _name person ]
+ , h6_ [] [ a_ [ class_ "fab fa-twitter"
+ , href_ $ "https://twitter.com/" <> (ms $ _twitter person) ] []
+ , a_ [ class_ "fas fa-globe", href_ $ ms $ _website person ] []
+ ]
+ , p_ [ class_ "card-text" ]
+ [ text $ ms $ _blurb person
+ , ul_ [] $ seeBook /@ _books person
+ ]
+ ]
+ ]
+
+seeBook :: Book -> View Action
+seeBook book = li_ []
+ [ a_ [ class_ "text-dark"
+ , href_ $ "https://www.amazon.com/dp/" <> (ms $ _amznref book)
+ ]
+ [ text $ ms $ _title book ]
+ ]