aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/app/Page/NewCollection.hs
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/app/Page/NewCollection.hs')
-rw-r--r--frontend/app/Page/NewCollection.hs44
1 files changed, 44 insertions, 0 deletions
diff --git a/frontend/app/Page/NewCollection.hs b/frontend/app/Page/NewCollection.hs
new file mode 100644
index 0000000..b105689
--- /dev/null
+++ b/frontend/app/Page/NewCollection.hs
@@ -0,0 +1,44 @@
+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"