diff options
Diffstat (limited to 'bs5/universal/native/shared/Button.re')
-rw-r--r-- | bs5/universal/native/shared/Button.re | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/bs5/universal/native/shared/Button.re b/bs5/universal/native/shared/Button.re new file mode 100644 index 0000000..653b7d7 --- /dev/null +++ b/bs5/universal/native/shared/Button.re @@ -0,0 +1,30 @@ +open Melange_json.Primitives; + +[@react.client.component] +let make = (~noteId: option(int), ~children: React.element) => { + let (isPending, startTransition) = React.useTransition(); + let {navigate, _}: ClientRouter.t = ClientRouter.useRouter(); + let isDraft = Belt.Option.isNone(noteId); + + let className = + Cx.make([ + Theme.button, + isDraft ? "edit-button--solid" : "edit-button--outline", + ]); + + <button + className + disabled=isPending + onClick={_ => { + startTransition(() => { + navigate({ + selectedId: noteId, + isEditing: true, + searchText: None, + }) + }) + }} + role="menuitem"> + children + </button>; +}; |