95 lines
2.0 KiB
Elm
95 lines
2.0 KiB
Elm
|
module Route.Index exposing (ActionData, Data, Model, Msg, route)
|
||
|
|
||
|
import BackendTask exposing (BackendTask)
|
||
|
import FatalError exposing (FatalError)
|
||
|
import Head
|
||
|
import Head.Seo as Seo
|
||
|
import Html.Styled as Html
|
||
|
import Link exposing (Link)
|
||
|
import Pages.Url
|
||
|
import PagesMsg exposing (PagesMsg)
|
||
|
import UrlPath
|
||
|
import Route
|
||
|
import RouteBuilder exposing (App, StatelessRoute)
|
||
|
import Shared
|
||
|
import View exposing (View)
|
||
|
|
||
|
|
||
|
type alias Model =
|
||
|
{}
|
||
|
|
||
|
|
||
|
type alias Msg =
|
||
|
()
|
||
|
|
||
|
|
||
|
type alias RouteParams =
|
||
|
{}
|
||
|
|
||
|
|
||
|
type alias Data =
|
||
|
{ message : String
|
||
|
}
|
||
|
|
||
|
|
||
|
type alias ActionData =
|
||
|
{}
|
||
|
|
||
|
|
||
|
route : StatelessRoute RouteParams Data ActionData
|
||
|
route =
|
||
|
RouteBuilder.single
|
||
|
{ head = head
|
||
|
, data = data
|
||
|
}
|
||
|
|> RouteBuilder.buildNoState { view = view }
|
||
|
|
||
|
|
||
|
data : BackendTask FatalError Data
|
||
|
data =
|
||
|
BackendTask.succeed Data
|
||
|
|> BackendTask.andMap
|
||
|
(BackendTask.succeed "Hello!")
|
||
|
|
||
|
|
||
|
head :
|
||
|
App Data ActionData RouteParams
|
||
|
-> List Head.Tag
|
||
|
head app =
|
||
|
Seo.summary
|
||
|
{ canonicalUrlOverride = Nothing
|
||
|
, siteName = "elm-pages"
|
||
|
, image =
|
||
|
{ url = [ "images", "icon-png.png" ] |> UrlPath.join |> Pages.Url.fromPath
|
||
|
, alt = "elm-pages logo"
|
||
|
, dimensions = Nothing
|
||
|
, mimeType = Nothing
|
||
|
}
|
||
|
, description = "Welcome to elm-pages!"
|
||
|
, locale = Nothing
|
||
|
, title = "elm-pages is running"
|
||
|
}
|
||
|
|> Seo.website
|
||
|
|
||
|
|
||
|
view :
|
||
|
App Data ActionData RouteParams
|
||
|
-> Shared.Model
|
||
|
-> View (PagesMsg Msg)
|
||
|
view app shared =
|
||
|
{ title = "elm-pages is running"
|
||
|
, body =
|
||
|
[ Html.h1 [] [ Html.text "elm-pages is up and running!" ]
|
||
|
, Html.p []
|
||
|
[ Html.text <| "The message is: " ++ app.data.message
|
||
|
]
|
||
|
, Link.link (Link.internal (Route.Blog__Slug_ { slug = "a" })) [] [ Html.text "My blog post" ]
|
||
|
]
|
||
|
|> processReturn
|
||
|
}
|
||
|
|
||
|
|
||
|
processReturn : List (Html.Html Msg) -> List (Html.Html (PagesMsg Msg))
|
||
|
processReturn =
|
||
|
List.map (Html.map (PagesMsg.fromMsg))
|