module Page.NewCollection ( Model, initialModel, Action, updateModel, viewModel, ) where import Data.Text qualified as T import Form qualified as F import Miso data Model = Model { input :: T.Text } deriving (Show, Eq) initialModel :: JSM (Either String Model) initialModel = do pure (Right (Model {input = ""})) data Action = NoOp | FormChanged T.Text | FormSubmitted T.Text deriving (Eq, Show) updateModel :: Action -> Model -> Effect Action Model updateModel NoOp m = noEff m updateModel (FormChanged input) m = noEff m {input} updateModel (FormSubmitted _) m = noEff m viewModel :: Model -> View Action viewModel m = do div_ [] $ [ h3_ [] [text "new collection"], either FormChanged FormSubmitted <$> F.runForm collectionForm m.input ] collectionForm :: F.Form T.Text T.Text collectionForm = F.input "name"