gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated (ca076e5ea -> feddec9b5)


From: gnunet
Subject: [taler-wallet-core] branch master updated (ca076e5ea -> feddec9b5)
Date: Tue, 14 Nov 2023 11:12:10 +0100

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a change to branch master
in repository wallet-core.

    from ca076e5ea fix new libeufin api
     new cd87d4c0b challenger ui
     new feddec9b5 build challenger

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Makefile                                           |   6 +
 contrib/copy-challenger-into-prebuilt.sh           |  10 ++
 .../.gitignore                                     |   0
 .../{aml-backoffice-ui => challenger-ui}/Makefile  |   0
 .../{aml-backoffice-ui => challenger-ui}/README.md |   0
 .../{aml-backoffice-ui => challenger-ui}/build.mjs |  16 ++-
 .../copyleft-header.js                             |   0
 packages/challenger-ui/create_must.sh              |  15 +++
 .../{aml-backoffice-ui => challenger-ui}/dev.mjs   |  17 ++-
 .../package.json                                   |  31 +----
 .../postcss.config.js                              |   0
 .../src/assets/home.svg                            |   0
 .../src/assets/logo-2021.svg                       |   0
 .../src/assets/people.svg                          |   0
 packages/challenger-ui/src/attempts-exhausted.html |  90 +++++++++++++++
 packages/challenger-ui/src/enter-address-form.html | 125 +++++++++++++++++++++
 packages/challenger-ui/src/enter-tan-form.html     | 119 ++++++++++++++++++++
 packages/challenger-ui/src/internal-error.html     |  91 +++++++++++++++
 packages/challenger-ui/src/invalid-pin.html        |  89 +++++++++++++++
 packages/challenger-ui/src/invalid-request.html    |  90 +++++++++++++++
 packages/challenger-ui/src/main.js                 |   2 +
 .../src/scss/main.css                              |   0
 packages/challenger-ui/src/validation-unknown.html |  91 +++++++++++++++
 .../tailwind.config.js                             |   0
 packages/web-util/src/index.build.ts               |   6 +-
 pnpm-lock.yaml                                     |  95 ++++++++--------
 26 files changed, 814 insertions(+), 79 deletions(-)
 create mode 100755 contrib/copy-challenger-into-prebuilt.sh
 copy packages/{aml-backoffice-ui => challenger-ui}/.gitignore (100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/Makefile (100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/README.md (100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/build.mjs (71%)
 copy packages/{aml-backoffice-ui => challenger-ui}/copyleft-header.js (100%)
 create mode 100755 packages/challenger-ui/create_must.sh
 copy packages/{aml-backoffice-ui => challenger-ui}/dev.mjs (75%)
 copy packages/{aml-backoffice-ui => challenger-ui}/package.json (52%)
 copy packages/{aml-backoffice-ui => challenger-ui}/postcss.config.js (100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/src/assets/home.svg (100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/src/assets/logo-2021.svg 
(100%)
 copy packages/{aml-backoffice-ui => challenger-ui}/src/assets/people.svg (100%)
 create mode 100644 packages/challenger-ui/src/attempts-exhausted.html
 create mode 100644 packages/challenger-ui/src/enter-address-form.html
 create mode 100644 packages/challenger-ui/src/enter-tan-form.html
 create mode 100644 packages/challenger-ui/src/internal-error.html
 create mode 100644 packages/challenger-ui/src/invalid-pin.html
 create mode 100644 packages/challenger-ui/src/invalid-request.html
 create mode 100644 packages/challenger-ui/src/main.js
 copy packages/{aml-backoffice-ui => challenger-ui}/src/scss/main.css (100%)
 create mode 100644 packages/challenger-ui/src/validation-unknown.html
 copy packages/{aml-backoffice-ui => challenger-ui}/tailwind.config.js (100%)

diff --git a/Makefile b/Makefile
index e4a7abb54..3357747b9 100644
--- a/Makefile
+++ b/Makefile
@@ -60,6 +60,12 @@ aml-backoffice-prebuilt:
        pnpm run --filter @gnu-taler/aml-backoffice-ui... build
        ./contrib/copy-aml-backoffice-into-prebuilt.sh
 
+.PHONY: challenger-prebuilt
+challenger-prebuilt:
+       pnpm install --frozen-lockfile --filter @gnu-taler/challenger-ui...
+       pnpm run --filter @gnu-taler/challenger-ui... build
+       ./contrib/copy-challenger-into-prebuilt.sh
+
 .PHONY: demobank-prebuilt
 demobank-prebuilt:
        pnpm install --frozen-lockfile --filter @gnu-taler/demobank-ui...
diff --git a/contrib/copy-challenger-into-prebuilt.sh 
b/contrib/copy-challenger-into-prebuilt.sh
new file mode 100755
index 000000000..ebc39192c
--- /dev/null
+++ b/contrib/copy-challenger-into-prebuilt.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+[ ! -d prebuilt ] && git worktree add -f prebuilt prebuilt && exit 1
+
+find packages/challenger-ui/dist/prod/ -type f -printf '%P\n' | sort > 
prebuilt/challenger/bof
+
+while IFS= read -r file; do
+  cp packages/challenger-ui/dist/prod/$file prebuilt/challenger/$file
+done < prebuilt/challenger/bof
+
diff --git a/packages/aml-backoffice-ui/.gitignore 
b/packages/challenger-ui/.gitignore
similarity index 100%
copy from packages/aml-backoffice-ui/.gitignore
copy to packages/challenger-ui/.gitignore
diff --git a/packages/aml-backoffice-ui/Makefile 
b/packages/challenger-ui/Makefile
similarity index 100%
copy from packages/aml-backoffice-ui/Makefile
copy to packages/challenger-ui/Makefile
diff --git a/packages/aml-backoffice-ui/README.md 
b/packages/challenger-ui/README.md
similarity index 100%
copy from packages/aml-backoffice-ui/README.md
copy to packages/challenger-ui/README.md
diff --git a/packages/aml-backoffice-ui/build.mjs 
b/packages/challenger-ui/build.mjs
similarity index 71%
copy from packages/aml-backoffice-ui/build.mjs
copy to packages/challenger-ui/build.mjs
index ae38c193d..548afe2e4 100755
--- a/packages/aml-backoffice-ui/build.mjs
+++ b/packages/challenger-ui/build.mjs
@@ -20,9 +20,21 @@ import { build } from "@gnu-taler/web-util/build";
 await build({
   type: "production",
   source: {
-    js: ["src/index.tsx"],
-    assets: [{base:"src",files:["src/index.html"]}],
+    js: ["src/main.js"],
+    assets: [{
+      base: "src",
+      files: [
+        "src/attempts-exhausted.html",
+        "src/enter-address-form.html",
+        "src/enter-tan-form.html",
+        "src/internal-error.html",
+        "src/invalid-pin.html",
+        "src/invalid-request.html",
+        "src/validation-unknown.html",
+      ]
+    }],
   },
   destination: "./dist/prod",
   css: "postcss",
 });
+
diff --git a/packages/aml-backoffice-ui/copyleft-header.js 
b/packages/challenger-ui/copyleft-header.js
similarity index 100%
copy from packages/aml-backoffice-ui/copyleft-header.js
copy to packages/challenger-ui/copyleft-header.js
diff --git a/packages/challenger-ui/create_must.sh 
b/packages/challenger-ui/create_must.sh
new file mode 100755
index 000000000..6a6c71719
--- /dev/null
+++ b/packages/challenger-ui/create_must.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+cd dist/prod
+for file in *.html; do
+
+  #remove the js reference used for dev
+  sed /main.js/d -i $file
+
+  #rename the extension to must template
+  mv $file ${file:0:-5}.must
+done
+
+#delete unsued files
+rm main.js main.js.map main.css.map
+
diff --git a/packages/aml-backoffice-ui/dev.mjs b/packages/challenger-ui/dev.mjs
similarity index 75%
copy from packages/aml-backoffice-ui/dev.mjs
copy to packages/challenger-ui/dev.mjs
index c8996b894..3aca99c4d 100755
--- a/packages/aml-backoffice-ui/dev.mjs
+++ b/packages/challenger-ui/dev.mjs
@@ -18,13 +18,22 @@
 import { serve } from "@gnu-taler/web-util/node";
 import { initializeDev } from "@gnu-taler/web-util/build";
 
-const devEntryPoints = ["src/stories.tsx", "src/index.tsx"];
-
 const build = initializeDev({
   type: "development",
   source: {
-    js: devEntryPoints,
-    assets: [{base:"src",files:["src/index.html"]}],
+    js: ["src/main.js"],
+    assets: [{
+      base: "src",
+      files: [
+        "src/attempts-exhausted.html",
+        "src/enter-address-form.html",
+        "src/enter-tan-form.html",
+        "src/internal-error.html",
+        "src/invalid-pin.html",
+        "src/invalid-request.html",
+        "src/validation-unknown.html",
+      ]
+    }],
   },
   destination: "./dist/dev",
   css: "postcss",
diff --git a/packages/aml-backoffice-ui/package.json 
b/packages/challenger-ui/package.json
similarity index 52%
copy from packages/aml-backoffice-ui/package.json
copy to packages/challenger-ui/package.json
index 9ca6312a7..e797b12db 100644
--- a/packages/aml-backoffice-ui/package.json
+++ b/packages/challenger-ui/package.json
@@ -1,36 +1,21 @@
 {
   "private": true,
-  "name": "@gnu-taler/aml-backoffice-ui",
+  "name": "@gnu-taler/challenger-ui",
   "version": "0.1.0",
   "author": "sebasjm",
   "license": "AGPL-3.0-OR-LATER",
-  "description": "Back-office SPA for GNU Taler Exchange.",
+  "description": "UI for GNU Challenger.",
   "type": "module",
   "scripts": {
-    "build": "./build.mjs",
-    "typedoc": "typedoc --out dist/typedoc ./src/",
+    "build": "./build.mjs && ./create_must.sh",
     "check": "tsc",
     "clean": "rm -rf dist lib",
-    "compile": "tsc && ./build.mjs",
-    "test": "./test.mjs && mocha --require source-map-support/register 
'dist/test/**/*.test.js' 'dist/test/**/test.js'",
-    "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
     "i18n:extract": "pogen extract",
     "i18n:merge": "pogen merge",
     "i18n:emit": "pogen emit",
     "i18n": "pnpm i18n:extract && pnpm i18n:merge && pnpm i18n:emit",
     "pretty": "prettier --write src"
   },
-  "dependencies": {
-    "@gnu-taler/taler-util": "workspace:*",
-    "@gnu-taler/web-util": "workspace:*",
-    "@headlessui/react": "^1.7.14",
-    "@heroicons/react": "^2.0.17",
-    "date-fns": "2.29.3",
-    "history": "4.10.1",
-    "jed": "1.1.1",
-    "preact": "10.11.3",
-    "swr": "2.0.3"
-  },
   "eslintConfig": {
     "plugins": [
       "header"
@@ -47,21 +32,15 @@
   },
   "devDependencies": {
     "@gnu-taler/pogen": "^0.0.5",
+    "@gnu-taler/web-util": "workspace:*",
     "@tailwindcss/forms": "^0.5.3",
     "@tailwindcss/typography": "^0.5.9",
-    "@types/chai": "^4.3.0",
-    "@types/history": "^4.7.8",
-    "@types/mocha": "^10.0.1",
     "autoprefixer": "^10.4.14",
-    "chai": "^4.3.6",
     "esbuild": "^0.17.7",
-    "eslint-config-preact": "^1.2.0",
-    "mocha": "^9.2.0",
     "po2json": "^0.4.5",
     "postcss": "^8.4.23",
     "postcss-cli": "^10.1.0",
-    "tailwindcss": "^3.3.2",
-    "typescript": "5.2.2"
+    "tailwindcss": "^3.3.2"
   },
   "pogen": {
     "domain": "aml-backoffice"
diff --git a/packages/aml-backoffice-ui/postcss.config.js 
b/packages/challenger-ui/postcss.config.js
similarity index 100%
copy from packages/aml-backoffice-ui/postcss.config.js
copy to packages/challenger-ui/postcss.config.js
diff --git a/packages/aml-backoffice-ui/src/assets/home.svg 
b/packages/challenger-ui/src/assets/home.svg
similarity index 100%
copy from packages/aml-backoffice-ui/src/assets/home.svg
copy to packages/challenger-ui/src/assets/home.svg
diff --git a/packages/aml-backoffice-ui/src/assets/logo-2021.svg 
b/packages/challenger-ui/src/assets/logo-2021.svg
similarity index 100%
copy from packages/aml-backoffice-ui/src/assets/logo-2021.svg
copy to packages/challenger-ui/src/assets/logo-2021.svg
diff --git a/packages/aml-backoffice-ui/src/assets/people.svg 
b/packages/challenger-ui/src/assets/people.svg
similarity index 100%
copy from packages/aml-backoffice-ui/src/assets/people.svg
copy to packages/challenger-ui/src/assets/people.svg
diff --git a/packages/challenger-ui/src/attempts-exhausted.html 
b/packages/challenger-ui/src/attempts-exhausted.html
new file mode 100644
index 000000000..10559e429
--- /dev/null
+++ b/packages/challenger-ui/src/attempts-exhausted.html
@@ -0,0 +1,90 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Attempts exhausted (#{{ec}})</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+    <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 items-center mt-4">
+      <div class="rounded-md bg-red-50 p-4 shadow-xl">
+        <div class="flex">
+          <div class="flex-shrink-0">
+            <svg xmlns="http://www.w3.org/2000/svg"; stroke="none" viewBox="0 0 
24 24" fill="currentColor"
+              class="w-8 h-8 text-red-400">
+              <path fill-rule="evenodd"
+                d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 
9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 
01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 
100-1.5.75.75 0 000 1.5z" />
+            </svg>
+          </div>
+          <div class="ml-3">
+            <h3 class="text-sm font-medium text-red-800">
+              You have tried too many times
+            </h3>
+            <div class="mt-2 text-sm text-red-700">
+              <p>More attempts are not allowed</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/enter-address-form.html 
b/packages/challenger-ui/src/enter-address-form.html
new file mode 100644
index 000000000..9063acc73
--- /dev/null
+++ b/packages/challenger-ui/src/enter-address-form.html
@@ -0,0 +1,125 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Enter contact details</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+
+    <div class="isolate bg-white px-6 py-12">
+      <div class="mx-auto max-w-2xl text-center">
+        <h2 class="text-3xl font-bold tracking-tight text-gray-900 
sm:text-4xl">
+          Enter contact details
+        </h2>
+        <p class="mt-2 text-lg leading-8 text-gray-600">
+          You will receive an email with a code which need to be entered in 
the next page.
+        </p>
+      </div>
+      <form action="/challenge/{{nonce}}" method="POST" class="mx-auto mt-16 
max-w-xl sm:mt-20">
+        <div class="grid grid-cols-1 gap-x-8 gap-y-6">
+          <div class="sm:col-span-2">
+            <label for="email" class="block text-sm font-semibold leading-6 
text-gray-900">Email</label>
+            <div class="mt-2.5">
+              <input type="email" name="email" id="email" maxlength="512" 
autocomplete="email" value="{{last_address}}"
+                {{#fixed_address}}readonly{{/fixed_address}}
+                class="block w-full rounded-md border-0 px-3.5 py-2 
text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 
placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 
sm:text-sm sm:leading-6">
+            </div>
+          </div>
+
+          <script>
+            function check() {
+              var email = document.getElementById('email');
+              var emailRepeat = document.getElementById('repeat-email');
+
+              if (email.value != emailRepeat.value) {
+                emailRepeat.setCustomValidity('The two email addresses must 
match.');
+              } else {
+                // input is valid -- reset the error message 
+                emailRepeat.setCustomValidity('');
+              }
+            }
+          </script>
+
+          <div class="sm:col-span-2">
+            <label for="repeat-email" class="block text-sm font-semibold 
leading-6 text-gray-900">Repeat email</label>
+            <div class="mt-2.5">
+              <input oninput="check(this)" type="email" name="email" 
id="repeat-email" autocomplete="email"
+                class="block w-full rounded-md border-0 px-3.5 py-2 
text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 
placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 
sm:text-sm sm:leading-6">
+            </div>
+          </div>
+
+          <p class="mt-3 text-sm leading-6 text-gray-400">
+            You can change address another {{changes_left}} times.
+          </p>
+        </div>
+
+        <div class="mt-10">
+          <button type="submit"
+            class="block w-full rounded-md bg-indigo-600 px-3.5 py-2.5 
text-center text-sm font-semibold 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">
+            Send email
+          </button>
+        </div>
+      </form>
+    </div>
+  </main>
+
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/enter-tan-form.html 
b/packages/challenger-ui/src/enter-tan-form.html
new file mode 100644
index 000000000..4e1f8c0a3
--- /dev/null
+++ b/packages/challenger-ui/src/enter-tan-form.html
@@ -0,0 +1,119 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Enter your TAN</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+
+    <div class="isolate bg-white px-6 py-12">
+      <div class="mx-auto max-w-2xl text-center">
+        <h2 class="text-3xl font-bold tracking-tight text-gray-900 
sm:text-4xl">
+          Please enter the TAN you received to authenticate.
+        </h2>
+        <p class="mt-2 text-lg leading-8 text-gray-600">
+          <!-- {{#transmitted}}
+          A TAN was sent to your address &quot;{{address}}&quot;.
+          {{/transmitted}} -->
+          <!-- {{^transmitted}} -->
+          We recently already sent a TAN to your address 
&quot;{{address}}&quot;.
+          A new TAN will not be transmitted again before {{next_tx_time}}.
+          <!-- {{/transmitted}} -->
+        </p>
+      </div>
+
+
+      <form action="/solve/{{nonce}}" method="POST" class="mx-auto mt-16 
max-w-xl sm:mt-20">
+        <div class="grid grid-cols-1 gap-x-8 gap-y-6">
+          <div class="sm:col-span-2">
+            <label for="pin" class="block text-sm font-semibold leading-6 
text-gray-900">
+              TAN code
+            </label>
+            <div class="mt-2.5">
+              <div
+                class="flex rounded-md shadow-sm ring-1 ring-inset 
ring-gray-300 focus-within:ring-2 focus-within:ring-inset 
focus-within:ring-indigo-600">
+                <span class="flex select-none items-center pl-3 text-gray-500 
sm:text-sm">PIN:</span>
+                <input type="number" name="pin" id="pin" maxlength="64"
+                  class="block flex-1 border-0 bg-transparent py-1.5 pl-1 
text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6"
+                  placeholder="12345678">
+              </div>
+
+            </div>
+          </div>
+
+          <p class="mt-3 text-sm leading-6 text-gray-400">
+            You have {{attempts_left}} attempts left.
+          </p>
+        </div>
+
+        <div class="mt-10">
+          <button type="submit"
+            class="block w-full rounded-md bg-indigo-600 px-3.5 py-2.5 
text-center text-sm font-semibold 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">
+            Check
+          </button>
+        </div>
+      </form>
+
+    </div>
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/internal-error.html 
b/packages/challenger-ui/src/internal-error.html
new file mode 100644
index 000000000..1c269722b
--- /dev/null
+++ b/packages/challenger-ui/src/internal-error.html
@@ -0,0 +1,91 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Internal server error (#{{ec}})</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+    <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 items-center mt-4">
+      <div class="rounded-md bg-red-50 p-4 shadow-xl">
+        <div class="flex">
+          <div class="flex-shrink-0">
+            <svg xmlns="http://www.w3.org/2000/svg"; stroke="none" viewBox="0 0 
24 24" fill="currentColor"
+              class="w-8 h-8 text-red-400">
+              <path fill-rule="evenodd"
+                d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 
9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 
01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 
100-1.5.75.75 0 000 1.5z" />
+            </svg>
+          </div>
+          <div class="ml-3">
+            <h3 class="text-sm font-medium text-red-800">
+              Internal error
+            </h3>
+            <div class="mt-2 text-sm text-red-700">
+              <p>{{hint}} ({{detail}})</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/invalid-pin.html 
b/packages/challenger-ui/src/invalid-pin.html
new file mode 100644
index 000000000..f748f0425
--- /dev/null
+++ b/packages/challenger-ui/src/invalid-pin.html
@@ -0,0 +1,89 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Invalid solution (#{{ec}})</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+    <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 items-center mt-4">
+      <div class="rounded-md bg-red-50 p-4 shadow-xl">
+        <div class="flex">
+          <div class="flex-shrink-0">
+            <svg xmlns="http://www.w3.org/2000/svg"; stroke="none" viewBox="0 0 
24 24" fill="currentColor"
+              class="w-8 h-8 text-red-400">
+              <path fill-rule="evenodd"
+                d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 
9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 
01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 
100-1.5.75.75 0 000 1.5z" />
+            </svg>
+          </div>
+          <div class="ml-3">
+            <h3 class="text-sm font-medium text-red-800">
+              Invalid PIN
+            </h3>
+            <div class="mt-2 text-sm text-red-700">
+              <p>{{hint}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/invalid-request.html 
b/packages/challenger-ui/src/invalid-request.html
new file mode 100644
index 000000000..6f3d3081a
--- /dev/null
+++ b/packages/challenger-ui/src/invalid-request.html
@@ -0,0 +1,90 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Invalid request (#{{ec}})</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+
+    <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 items-center mt-4">
+      <div class="rounded-md bg-red-50 p-4 shadow-xl">
+        <div class="flex">
+          <div class="flex-shrink-0">
+            <svg xmlns="http://www.w3.org/2000/svg"; stroke="none" viewBox="0 0 
24 24" fill="currentColor"
+              class="w-8 h-8 text-red-400">
+              <path fill-rule="evenodd"
+                d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 
9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 
01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 
100-1.5.75.75 0 000 1.5z" />
+            </svg>
+          </div>
+          <div class="ml-3">
+            <h3 class="text-sm font-medium text-red-800">
+              Request error
+            </h3>
+            <div class="mt-2 text-sm text-red-700">
+              <p>{{hint}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/challenger-ui/src/main.js 
b/packages/challenger-ui/src/main.js
new file mode 100644
index 000000000..3272bd0bb
--- /dev/null
+++ b/packages/challenger-ui/src/main.js
@@ -0,0 +1,2 @@
+// intentionally empty
+import "./scss/main.css";
\ No newline at end of file
diff --git a/packages/aml-backoffice-ui/src/scss/main.css 
b/packages/challenger-ui/src/scss/main.css
similarity index 100%
copy from packages/aml-backoffice-ui/src/scss/main.css
copy to packages/challenger-ui/src/scss/main.css
diff --git a/packages/challenger-ui/src/validation-unknown.html 
b/packages/challenger-ui/src/validation-unknown.html
new file mode 100644
index 000000000..88e24f4ab
--- /dev/null
+++ b/packages/challenger-ui/src/validation-unknown.html
@@ -0,0 +1,91 @@
+<!--
+ This file is part of GNU Taler
+ (C) 2021--2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+ @author Sebastian Javier Marchano
+-->
+<!DOCTYPE html>
+<html lang="en" class="h-full">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <meta name="taler-support" content="uri">
+  <meta name="mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <link rel="icon"
+    
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn
 [...]
+  <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
+  <link rel="stylesheet" href="main.css" />
+  <script type="module" src="main.js"></script>
+  <title>Validation process unknown (#{{ec}})</title>
+</head>
+
+<body class="min-h-full flex flex-col">
+  <header class="bg-indigo-600 w-full mx-auto px-2 border-b border-opacity-25 
border-indigo-400">
+    <div class="flex flex-row h-16 items-center ">
+      <div class="flex px-2 justify-start">
+        <div class="flex-shrink-0 bg-white rounded-lg"><a href="#"><img 
class="h-8 w-auto"
+              src="data:image/svg+xml,<?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>%0A<svg 
xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 201 90&quot;>%0A 
 <g fill=&quot;%230042b3&quot; fill-rule=&quot;evenodd&quot; 
stroke-width=&quot;.3&quot;>%0A    <path d=&quot;M86.7 1.1c15.6 0 29 9.4 36 
23.2h-5.9A35.1 35.1 0 0086.7 6.5C67 6.5 51 23.6 51 44.7c0 10.4 3.8 19.7 10 
26.6a31.4 31.4 0 01-4.2 3A45.2 45.2 0 0146 44.7c0-24 18.2-43.6 40.7-43 [...]
+              alt="GNU Taler" style="height: 1.5rem; margin: 
0.5rem;"></a></div><span
+          class="flex items-center text-white text-lg font-bold 
ml-4">Challenger</span>
+      </div>
+      <div class="block flex-1 ml-6 "></div>
+      <div class="flex justify-end">
+      </div>
+    </div>
+  </header>
+
+  <main class="flex-1">
+
+    <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 items-center mt-4">
+      <div class="rounded-md bg-red-50 p-4 shadow-xl">
+        <div class="flex">
+          <div class="flex-shrink-0">
+            <svg xmlns="http://www.w3.org/2000/svg"; stroke="none" viewBox="0 0 
24 24" fill="currentColor"
+              class="w-8 h-8 text-red-400">
+              <path fill-rule="evenodd"
+                d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 
9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 
01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 
100-1.5.75.75 0 000 1.5z" />
+            </svg>
+          </div>
+          <div class="ml-3">
+            <h3 class="text-sm font-medium text-red-800">
+              Validation error
+            </h3>
+            <div class="mt-2 text-sm text-red-700">
+              <p>{{hint}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </main>
+
+  <footer class="bottom-4 mb-4">
+    <div class="mt-8 mx-8 md:order-1 md:mt-0">
+      <div>
+        <p class="text-xs leading-5 text-gray-400">Learn more about <a 
target="_blank" rel="noreferrer noopener"
+            class="font-semibold text-gray-500 hover:text-gray-400" 
href="https://taler.net";>GNU Taler</a></p>
+      </div>
+      <div style="flex-grow: 1;"></div>
+      <p class="text-xs leading-5 text-gray-400">Copyright © 2014—2023 Taler 
Systems SA. <a
+          
href="https://git.taler.net/wallet-core.git/tree/?id=c64ab8c9b57d3bbe58ea2aa8e4d57c8baef7042e";
 target="_blank"
+          rel="noreferrer noopener">Version 0.9.3-dev.29 (---)</a> </p>
+    </div>
+  </footer>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/packages/aml-backoffice-ui/tailwind.config.js 
b/packages/challenger-ui/tailwind.config.js
similarity index 100%
copy from packages/aml-backoffice-ui/tailwind.config.js
copy to packages/challenger-ui/tailwind.config.js
diff --git a/packages/web-util/src/index.build.ts 
b/packages/web-util/src/index.build.ts
index 0e8e7cec3..e2851dc3a 100644
--- a/packages/web-util/src/index.build.ts
+++ b/packages/web-util/src/index.build.ts
@@ -235,9 +235,9 @@ export function computeConfig(params: BuildParams): 
esbuild.BuildOptions {
     );
   }
 
-  if (!params.source.js) {
-    throw Error(`no javascript entry points, nothing to compile?`);
-  }
+  // if (!params.source.js) {
+  //   throw Error(`no javascript entry points, nothing to compile?`);
+  // }
   if (!params.destination) {
     throw Error(`missing destination folder`);
   }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 392f34981..987d02733 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,4 +1,4 @@
-lockfileVersion: '6.0'
+lockfileVersion: '6.1'
 
 settings:
   autoInstallPeers: true
@@ -223,6 +223,39 @@ importers:
         specifier: ^5.2.2
         version: 5.2.2
 
+  packages/challenger-ui:
+    devDependencies:
+      '@gnu-taler/pogen':
+        specifier: ^0.0.5
+        version: link:../pogen
+      '@gnu-taler/web-util':
+        specifier: workspace:*
+        version: link:../web-util
+      '@tailwindcss/forms':
+        specifier: ^0.5.3
+        version: 0.5.3(tailwindcss@3.3.2)
+      '@tailwindcss/typography':
+        specifier: ^0.5.9
+        version: 0.5.9(tailwindcss@3.3.2)
+      autoprefixer:
+        specifier: ^10.4.14
+        version: 10.4.14(postcss@8.4.23)
+      esbuild:
+        specifier: ^0.17.7
+        version: 0.17.19
+      po2json:
+        specifier: ^0.4.5
+        version: 0.4.5
+      postcss:
+        specifier: ^8.4.23
+        version: 8.4.23
+      postcss-cli:
+        specifier: ^10.1.0
+        version: 10.1.0(postcss@8.4.23)
+      tailwindcss:
+        specifier: ^3.3.2
+        version: 3.3.2
+
   packages/demobank-ui:
     dependencies:
       '@gnu-taler/taler-util':
@@ -1197,32 +1230,6 @@ packages:
       semver: 6.3.0
     dev: true
 
-  /@babel/helper-compilation-targets@7.19.3(@babel/core@7.18.9):
-    resolution: {integrity: 
sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==}
-    engines: {node: '>=6.9.0'}
-    peerDependencies:
-      '@babel/core': ^7.0.0
-    dependencies:
-      '@babel/compat-data': 7.19.4
-      '@babel/core': 7.18.9
-      '@babel/helper-validator-option': 7.21.0
-      browserslist: 4.21.5
-      semver: 6.3.0
-    dev: true
-
-  /@babel/helper-compilation-targets@7.19.3(@babel/core@7.22.1):
-    resolution: {integrity: 
sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==}
-    engines: {node: '>=6.9.0'}
-    peerDependencies:
-      '@babel/core': ^7.0.0
-    dependencies:
-      '@babel/compat-data': 7.19.4
-      '@babel/core': 7.22.1
-      '@babel/helper-validator-option': 7.21.0
-      browserslist: 4.21.5
-      semver: 6.3.0
-    dev: true
-
   /@babel/helper-compilation-targets@7.21.5(@babel/core@7.18.9):
     resolution: {integrity: 
sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==}
     engines: {node: '>=6.9.0'}
@@ -2067,7 +2074,7 @@ packages:
     dependencies:
       '@babel/compat-data': 7.19.4
       '@babel/core': 7.18.9
-      '@babel/helper-compilation-targets': 7.19.3(@babel/core@7.18.9)
+      '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.18.9)
       '@babel/helper-plugin-utils': 7.21.5
       '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.18.9)
       '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.18.9)
@@ -2081,7 +2088,7 @@ packages:
     dependencies:
       '@babel/compat-data': 7.19.4
       '@babel/core': 7.22.1
-      '@babel/helper-compilation-targets': 7.19.3(@babel/core@7.22.1)
+      '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1)
       '@babel/helper-plugin-utils': 7.21.5
       '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1)
       '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.22.1)
@@ -3887,7 +3894,7 @@ packages:
     dependencies:
       '@babel/compat-data': 7.19.4
       '@babel/core': 7.18.9
-      '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.18.9)
+      '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.18.9)
       '@babel/helper-plugin-utils': 7.21.5
       '@babel/helper-validator-option': 7.21.0
       
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression':
 7.18.6(@babel/core@7.18.9)
@@ -9277,6 +9284,7 @@ packages:
   /esbuild@0.17.19:
     resolution: {integrity: 
sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
     engines: {node: '>=12'}
+    hasBin: true
     requiresBuild: true
     optionalDependencies:
       '@esbuild/android-arm': 0.17.19
@@ -10263,6 +10271,7 @@ packages:
       glob-parent: 5.1.2
       merge2: 1.4.1
       micromatch: 4.0.5
+    dev: true
 
   /fast-glob@3.2.7:
     resolution: {integrity: 
sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==}
@@ -10284,7 +10293,6 @@ packages:
       glob-parent: 5.1.2
       merge2: 1.4.1
       micromatch: 4.0.5
-    dev: true
 
   /fast-json-stable-stringify@2.1.0:
     resolution: {integrity: 
sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@@ -10527,12 +10535,12 @@ packages:
       vue-template-compiler:
         optional: true
     dependencies:
-      '@babel/code-frame': 7.18.6
+      '@babel/code-frame': 7.21.4
       chalk: 2.4.2
       eslint: 8.29.0
       micromatch: 3.1.10
       minimatch: 3.1.2
-      semver: 5.7.1
+      semver: 5.7.2
       tapable: 1.1.3
       typescript: 4.6.4
       webpack: 4.46.0
@@ -10607,7 +10615,7 @@ packages:
     resolution: {integrity: 
sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
     engines: {node: '>=14.14'}
     dependencies:
-      graceful-fs: 4.2.10
+      graceful-fs: 4.2.11
       jsonfile: 6.1.0
       universalify: 2.0.0
     dev: true
@@ -12090,6 +12098,7 @@ packages:
 
   /json5@0.5.1:
     resolution: {integrity: 
sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==}
+    hasBin: true
     dev: true
 
   /json5@1.0.1:
@@ -12813,6 +12822,7 @@ packages:
   /mocha@9.2.2:
     resolution: {integrity: 
sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==}
     engines: {node: '>= 12.0.0'}
+    hasBin: true
     dependencies:
       '@ungap/promise-all-settled': 1.1.2
       ansi-colors: 4.1.1
@@ -13778,6 +13788,7 @@ packages:
   /po2json@0.4.5:
     resolution: {integrity: 
sha512-JH0hgi1fC0t9UvdiyS7kcVly0N1WNey4R2YZ/jPaxQKYm6Cfej7ZTgiEy8LP2JwoEhONceiNS8JH5mWPQkiXeA==}
     engines: {node: '>= 0.8.0'}
+    hasBin: true
     dependencies:
       gettext-parser: 1.1.0
       nomnom: 1.8.1
@@ -13824,7 +13835,7 @@ packages:
       dependency-graph: 0.11.0
       fs-extra: 11.1.1
       get-stdin: 9.0.0
-      globby: 13.1.2
+      globby: 13.2.2
       picocolors: 1.0.0
       postcss: 8.4.23
       postcss-load-config: 4.0.1(postcss@8.4.23)
@@ -13832,7 +13843,7 @@ packages:
       pretty-hrtime: 1.0.3
       read-cache: 1.0.0
       slash: 5.0.1
-      yargs: 17.6.0
+      yargs: 17.7.2
     transitivePeerDependencies:
       - ts-node
     dev: true
@@ -15545,11 +15556,6 @@ packages:
       semver: 6.3.0
     dev: true
 
-  /semver@5.7.1:
-    resolution: {integrity: 
sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
-    hasBin: true
-    dev: true
-
   /semver@5.7.2:
     resolution: {integrity: 
sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
     hasBin: true
@@ -16269,7 +16275,7 @@ packages:
     engines: {node: '>=8'}
     hasBin: true
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.2
+      '@jridgewell/gen-mapping': 0.3.3
       commander: 4.1.1
       glob: 7.1.6
       lines-and-columns: 1.2.4
@@ -16387,7 +16393,7 @@ packages:
       chokidar: 3.5.3
       didyoumean: 1.2.2
       dlv: 1.1.3
-      fast-glob: 3.2.12
+      fast-glob: 3.3.1
       glob-parent: 6.0.2
       is-glob: 4.0.3
       jiti: 1.18.2
@@ -17343,7 +17349,7 @@ packages:
       connect-history-api-fallback: 2.0.0
       default-gateway: 6.0.3
       express: 4.18.2
-      graceful-fs: 4.2.10
+      graceful-fs: 4.2.11
       html-entities: 2.3.3
       http-proxy-middleware: 2.0.6(@types/express@4.17.14)
       ipaddr.js: 2.0.1
@@ -17516,6 +17522,7 @@ packages:
 
   /which@1.3.1:
     resolution: {integrity: 
sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+    hasBin: true
     dependencies:
       isexe: 2.0.0
     dev: true

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]