CashuForm.tsx raw
1 import React from "react";
2 import { useNavigate } from "react-router";
3 import Container from "src/components/Container";
4 import ExternalLink from "src/components/ExternalLink";
5 import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader";
6 import { Button } from "src/components/ui/button";
7 import { Input } from "src/components/ui/input";
8 import { Label } from "src/components/ui/label";
9 import useSetupStore from "src/state/SetupStore";
10
11 export function CashuForm() {
12 const setupStore = useSetupStore();
13 const navigate = useNavigate();
14 const [cashuMintUrl, setCashuMintUrl] = React.useState(
15 "https://mint.minibits.cash/Bitcoin"
16 );
17
18 function onSubmit(e: React.FormEvent) {
19 e.preventDefault();
20 handleSubmit({ cashuMintUrl });
21 }
22
23 async function handleSubmit(data: object) {
24 setupStore.updateNodeInfo({
25 backendType: "CASHU",
26 ...data,
27 });
28 navigate("/setup/security");
29 }
30
31 return (
32 <Container>
33 <TwoColumnLayoutHeader
34 title="Configure Cashu Mint"
35 pageTitle="Configure Cashu Mint"
36 description="Fill out wallet details to finish setup."
37 />
38 <form className="w-full grid gap-5 mt-6" onSubmit={onSubmit}>
39 <div className="grid gap-1.5">
40 <Label
41 htmlFor="cashu-mint-url"
42 className="flex flex-row justify-between"
43 >
44 <span>Cashu Mint URL</span>{" "}
45 <ExternalLink
46 to="https://bitcoinmints.com"
47 className="underline hover:no-underline text-xs font-normal"
48 >
49 Find a mint
50 </ExternalLink>
51 </Label>
52 <Input
53 name="cashu-mint-url"
54 onChange={(e) => setCashuMintUrl(e.target.value)}
55 value={cashuMintUrl}
56 id="cashu-mint-url"
57 />
58 </div>
59 <Button>Next</Button>
60 </form>
61 </Container>
62 );
63 }
64