Дотыкал.
type Page = Home | Catalog
type alias StackItem =
{ page: Page
, url: Url
}
type alias Model =
{ navStack: List StackItem }
...
UrlChanged
u ->
если есть ?_=push, то пушим в navStack
если нет, заменяем целиком navStack = [{ page = ..., url = u }]
Обработка событий и view только для топа стека.
Если в стеке больше одного элемента, то рендерим с кнопкой закрыть, которая pop
на страницах
import Route
a [ Route.href Route.Home ]
a [ Route.modalHref Route.Home ]