From c680f5aa71b08e978444df07f93c381f9d47ab82 Mon Sep 17 00:00:00 2001
From: Sebastian <sebasjm@gmail.com>
Date: Mon, 5 Jun 2023 10:04:09 -0300
Subject: rename aml

---
 .../aml-backoffice-ui/src/pages/CreateAccount.tsx  | 102 +++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 packages/aml-backoffice-ui/src/pages/CreateAccount.tsx

(limited to 'packages/aml-backoffice-ui/src/pages/CreateAccount.tsx')

diff --git a/packages/aml-backoffice-ui/src/pages/CreateAccount.tsx b/packages/aml-backoffice-ui/src/pages/CreateAccount.tsx
new file mode 100644
index 000000000..5dcb8b21d
--- /dev/null
+++ b/packages/aml-backoffice-ui/src/pages/CreateAccount.tsx
@@ -0,0 +1,102 @@
+import { TranslatedString } from "@gnu-taler/taler-util";
+import {
+  notifyError,
+  useTranslationContext,
+} from "@gnu-taler/web-util/browser";
+import { VNode, h } from "preact";
+import { createNewForm } from "../handlers/forms.js";
+
+export function CreateAccount({
+  onNewAccount,
+}: {
+  onNewAccount: (password: string) => void;
+}): VNode {
+  const { i18n } = useTranslationContext();
+  const Form = createNewForm<{
+    password: string;
+    repeat: string;
+  }>();
+
+  return (
+    <div class="flex min-h-full flex-col ">
+      <div class="sm:mx-auto sm:w-full sm:max-w-md">
+        <h2 class="mt-6 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900">
+          Create account
+        </h2>
+      </div>
+
+      <div class="mt-10 sm:mx-auto sm:w-full sm:max-w-[480px] ">
+        <div class="bg-gray-100 px-6 py-6 shadow sm:rounded-lg sm:px-12">
+          <Form.Provider
+            computeFormState={(v) => {
+              return {
+                password: {
+                  error: !v.password
+                    ? i18n.str`required`
+                    : v.password.length < 8
+                    ? i18n.str`should have at least 8 characters`
+                    : !v.password.match(/[a-z]/) && v.password.match(/[A-Z]/)
+                    ? i18n.str`should have lowercase and uppercase characters`
+                    : !v.password.match(/\d/)
+                    ? i18n.str`should have numbers`
+                    : !v.password.match(/[^a-zA-Z\d]/)
+                    ? i18n.str`should have at least one character which is not a number or letter`
+                    : undefined,
+                },
+                repeat: {
+                  error: !v.repeat
+                    ? i18n.str`required`
+                    : v.repeat !== v.password
+                    ? i18n.str`doesn't match`
+                    : undefined,
+                },
+              };
+            }}
+            onSubmit={async (v, s) => {
+              console.log(v, s);
+              const error = s?.password?.error ?? s?.repeat?.error;
+              console.log(error);
+              if (error) {
+                notifyError(
+                  "Can't create account" as TranslatedString,
+                  error as TranslatedString,
+                );
+              } else {
+                onNewAccount(v.password!);
+              }
+            }}
+          >
+            <div class="mb-4">
+              <Form.InputLine
+                label={"Password" as TranslatedString}
+                name="password"
+                type="password"
+                help={
+                  "lower and upper case letters, number and special character" as TranslatedString
+                }
+                required
+              />
+            </div>
+            <div class="mb-4">
+              <Form.InputLine
+                label={"Repeat password" as TranslatedString}
+                name="repeat"
+                type="password"
+                required
+              />
+            </div>
+
+            <div class="mt-8">
+              <button
+                type="submit"
+                class="flex w-full justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+              >
+                Create
+              </button>
+            </div>
+          </Form.Provider>
+        </div>
+      </div>
+    </div>
+  );
+}
-- 
cgit v1.2.3

