diff options
26 files changed, 95 insertions, 31 deletions
diff --git a/packages/demobank-ui/src/components/Cashouts/views.tsx b/packages/demobank-ui/src/components/Cashouts/views.tsx index 80eea6379..db1fdbfc5 100644 --- a/packages/demobank-ui/src/components/Cashouts/views.tsx +++ b/packages/demobank-ui/src/components/Cashouts/views.tsx @@ -153,6 +153,7 @@ export function ReadyView({ class="border-b border-gray-200 hover:bg-gray-200 last:border-none" > <a + name="cashout details" href={routeCashoutDetails.url({ cid: String(item.id), })} diff --git a/packages/demobank-ui/src/components/Transactions/views.tsx b/packages/demobank-ui/src/components/Transactions/views.tsx index 53e437523..036cca4f7 100644 --- a/packages/demobank-ui/src/components/Transactions/views.tsx +++ b/packages/demobank-ui/src/components/Transactions/views.tsx @@ -136,6 +136,7 @@ export function ReadyView({ {item.negative ? i18n.str`to` : i18n.str`from`}{" "} {!routeCreateWireTransfer ? item.counterpart : <a + name={`transfer to ${item.counterpart}`} href={routeCreateWireTransfer.url({ destination: item.counterpart, })} @@ -172,6 +173,7 @@ export function ReadyView({ <td class="hidden sm:table-cell px-3 py-3.5 text-sm text-gray-500"> {!routeCreateWireTransfer ? item.counterpart : <a + name={`wire transfer to ${item.counterpart}`} href={routeCreateWireTransfer.url({ destination: item.counterpart, })} @@ -199,6 +201,7 @@ export function ReadyView({ > <div class="flex flex-1 justify-between sm:justify-end"> <button + name="first page" class="relative disabled:bg-gray-100 disabled:text-gray-500 inline-flex items-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus-visible:outline-offset-0" disabled={!onPrev} onClick={onPrev} @@ -206,6 +209,7 @@ export function ReadyView({ <i18n.Translate>First page</i18n.Translate> </button> <button + name="next page" class="relative disabled:bg-gray-100 disabled:text-gray-500 ml-3 inline-flex items-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus-visible:outline-offset-0" disabled={!onNext} onClick={onNext} diff --git a/packages/demobank-ui/src/pages/AccountPage/views.tsx b/packages/demobank-ui/src/pages/AccountPage/views.tsx index 7694ca1d3..4f411940f 100644 --- a/packages/demobank-ui/src/pages/AccountPage/views.tsx +++ b/packages/demobank-ui/src/pages/AccountPage/views.tsx @@ -50,7 +50,7 @@ function ShowDemoInfo({ routePublicAccounts }: { This part of the demo shows how a bank that supports Taler directly would work. In addition to using your own bank account, you can also see the transaction history of some{" "} - <a href={routePublicAccounts.url({})}>Public Accounts</a>. + <a name="public account" href={routePublicAccounts.url({})}>Public Accounts</a>. </i18n.Translate> ) : ( <i18n.Translate> @@ -97,6 +97,7 @@ function ShowPedingOperation({ routeSolveSecondFactor }: { </i18n.Translate>{" "} <a class="font-semibold text-yellow-700 hover:text-yellow-600" + name="complete operation" href={routeSolveSecondFactor.url({})} > <i18n.Translate>this page</i18n.Translate> diff --git a/packages/demobank-ui/src/pages/BankFrame.tsx b/packages/demobank-ui/src/pages/BankFrame.tsx index f16e0e9bf..266eab636 100644 --- a/packages/demobank-ui/src/pages/BankFrame.tsx +++ b/packages/demobank-ui/src/pages/BankFrame.tsx @@ -117,6 +117,7 @@ export function BankFrame({ </span> <button type="button" + name={`${set} switch`} data-enabled={isOn} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -190,7 +191,7 @@ function WelcomeAccount({ account, routeAccountDetails }: { } if (result.type === "fail") { return ( - <a + <a name="account details" href={routeAccountDetails.url({})} class="underline underline-offset-2" > @@ -199,7 +200,7 @@ function WelcomeAccount({ account, routeAccountDetails }: { ); } return ( - <a + <a name="account details" href={routeAccountDetails.url({})} class="underline underline-offset-2" > diff --git a/packages/demobank-ui/src/pages/DownloadStats.tsx b/packages/demobank-ui/src/pages/DownloadStats.tsx index e53f1f4e2..9bdc04123 100644 --- a/packages/demobank-ui/src/pages/DownloadStats.tsx +++ b/packages/demobank-ui/src/pages/DownloadStats.tsx @@ -112,6 +112,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`hour switch`} data-enabled={options.hourMetric} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -145,6 +146,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`day switch`} data-enabled={!!options.dayMetric} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -175,6 +177,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`month switch`} data-enabled={!!options.monthMetric} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -208,6 +211,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`year switch`} data-enabled={!!options.yearMetric} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -241,6 +245,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`header switch`} data-enabled={!!options.includeHeader} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -276,6 +281,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`compare switch`} data-enabled={!!options.compareWithPrevious} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -309,6 +315,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </span> <button type="button" + name={`fail switch`} data-enabled={!!options.endOnFirstFail} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -334,7 +341,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </div> <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> - <a + <a name="cancel" href={routeCancel.url({})} class="text-sm font-semibold leading-6 text-gray-900" > @@ -342,6 +349,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { </a> <button type="submit" + name="download" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={lastStep !== undefined} onClick={async () => { @@ -394,6 +402,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { href={ "data:text/plain;charset=utf-8," + encodeURIComponent(downloaded) } + name="save file" download={"bank-stats.csv"} > <Attention title={i18n.str`Download completed`}> @@ -450,9 +459,9 @@ async function fetchAllStatus( // await delay() const previous = options.compareWithPrevious ? await api.getMonitor(token, { - timeframe: frame.timeframe, - which: frame.moment.previous, - }) + timeframe: frame.timeframe, + which: frame.moment.previous, + }) : undefined; if (previous && previous.type === "fail" && options.endOnFirstFail) { diff --git a/packages/demobank-ui/src/pages/LoginForm.tsx b/packages/demobank-ui/src/pages/LoginForm.tsx index 8acc79cfc..6d732f5e8 100644 --- a/packages/demobank-ui/src/pages/LoginForm.tsx +++ b/packages/demobank-ui/src/pages/LoginForm.tsx @@ -70,8 +70,8 @@ export function LoginForm({ username: !username ? i18n.str`Missing username` : // : !USERNAME_REGEX.test(username) - // ? i18n.str`Use letters and numbers only, and start with a lowercase letter` - undefined, + // ? i18n.str`Use letters and numbers only, and start with a lowercase letter` + undefined, password: !password ? i18n.str`Missing password` : undefined, }) ?? busy; @@ -202,6 +202,7 @@ export function LoginForm({ <div class="flex justify-between"> <button type="submit" + name="cancel" class="rounded-md bg-white-600 px-3 py-1.5 text-sm font-semibold leading-6 text-black shadow-sm hover:bg-gray-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600" onClick={(e) => { e.preventDefault(); @@ -213,6 +214,7 @@ export function LoginForm({ <button type="submit" + name="check" class="rounded-md bg-indigo-600 disabled:bg-gray-300 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" disabled={!!errors} onClick={async (e) => { @@ -227,6 +229,7 @@ export function LoginForm({ <div> <button type="submit" + name="login" class="flex w-full justify-center rounded-md bg-indigo-600 disabled:bg-gray-300 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" disabled={!!errors} onClick={(e) => { @@ -242,6 +245,7 @@ export function LoginForm({ {config.allow_registrations && routeRegister && ( <a + name="register" href={routeRegister.url({})} class="flex justify-center border-t mt-4 rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" > diff --git a/packages/demobank-ui/src/pages/OperationState/views.tsx b/packages/demobank-ui/src/pages/OperationState/views.tsx index 40d974a17..d086c3dd1 100644 --- a/packages/demobank-ui/src/pages/OperationState/views.tsx +++ b/packages/demobank-ui/src/pages/OperationState/views.tsx @@ -174,6 +174,7 @@ export function NeedConfirmationView({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <button type="button" + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" onClick={(e) => { e.preventDefault(); @@ -184,6 +185,7 @@ export function NeedConfirmationView({ </button> <button type="submit" + name="transfer" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" onClick={(e) => { e.preventDefault(); @@ -290,6 +292,7 @@ export function ConfirmedView({ routeClose }: State.Confirmed) { </span> <button type="button" + name="toggle withdrawal" data-enabled={!settings.showWithdrawalSuccess} class="bg-indigo-600 data-[enabled=false]:bg-gray-200 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" role="switch" @@ -315,6 +318,7 @@ export function ConfirmedView({ routeClose }: State.Confirmed) { <a href={routeClose.url({})} type="button" + name="close" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Close</i18n.Translate> @@ -376,6 +380,7 @@ export function ReadyView({ <div class="flex justify-end mt-4"> <button type="button" + name="cancel" class="inline-flex items-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500" onClick={onAbort} > @@ -399,6 +404,7 @@ export function ReadyView({ <div class="mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center"> <a href={talerWithdrawUri} + name="start" class="inline-flex items-center disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Start</i18n.Translate> diff --git a/packages/demobank-ui/src/pages/PaymentOptions.tsx b/packages/demobank-ui/src/pages/PaymentOptions.tsx index a508845e1..10be1245f 100644 --- a/packages/demobank-ui/src/pages/PaymentOptions.tsx +++ b/packages/demobank-ui/src/pages/PaymentOptions.tsx @@ -101,7 +101,7 @@ export function PaymentOptions({ <div class="px-4 mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-4"> {/* <!-- Active: "border-indigo-600 ring-2 ring-indigo-600", Not Active: "border-gray-300" --> */} - <a href={routeChargeWallet.url({})}> + <a name="charge wallet" href={routeChargeWallet.url({})}> <label class={ "relative flex cursor-pointer rounded-lg border bg-white p-4 shadow-sm focus:outline-none" + @@ -156,7 +156,7 @@ export function PaymentOptions({ </label> </a> - <a href={routeWireTransfer.url({})}> + <a name="wire transfer" href={routeWireTransfer.url({})}> <label class={ "relative flex cursor-pointer rounded-lg border bg-white p-4 shadow-sm focus:outline-none" + diff --git a/packages/demobank-ui/src/pages/PaytoWireTransferForm.tsx b/packages/demobank-ui/src/pages/PaytoWireTransferForm.tsx index 9f5ac421d..9fe3453a5 100644 --- a/packages/demobank-ui/src/pages/PaytoWireTransferForm.tsx +++ b/packages/demobank-ui/src/pages/PaytoWireTransferForm.tsx @@ -484,6 +484,7 @@ export function PaytoWireTransferForm({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> {routeCancel ? ( <a + name="cancel" href={routeCancel.url({})} class="text-sm font-semibold leading-6 text-gray-900" > @@ -494,6 +495,7 @@ export function PaytoWireTransferForm({ )} <button type="submit" + name="send" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={isRawPayto ? !!errorsPayto : !!errorsWire} onClick={(e) => { diff --git a/packages/demobank-ui/src/pages/ProfileNavigation.tsx b/packages/demobank-ui/src/pages/ProfileNavigation.tsx index 94669584a..7c52f4eaa 100644 --- a/packages/demobank-ui/src/pages/ProfileNavigation.tsx +++ b/packages/demobank-ui/src/pages/ProfileNavigation.tsx @@ -100,6 +100,7 @@ export function ProfileNavigation({ aria-label="Tabs" > <a + name="my account details" href={routeMyAccountDetails.url({})} data-selected={current == "details"} class="rounded-l-lg text-gray-500 hover:text-gray-700 data-[selected=true]:text-gray-900 group relative min-w-0 flex-1 overflow-hidden bg-white py-4 px-4 text-center text-sm font-medium hover:bg-gray-50 focus:z-10" @@ -115,6 +116,7 @@ export function ProfileNavigation({ </a> {!config.allow_deletions ? undefined : ( <a + name="my account delete" href={routeMyAccountDelete.url({})} data-selected={current == "delete"} aria-current="page" @@ -131,6 +133,7 @@ export function ProfileNavigation({ </a> )} <a + name="my account password" href={routeMyAccountPassword.url({})} data-selected={current == "credentials"} aria-current="page" @@ -147,6 +150,7 @@ export function ProfileNavigation({ </a> {config.allow_conversion && nonAdminUser ? ( <a + name="my account cashout" href={routeMyAccountCashout.url({})} data-selected={current == "cashouts"} class="rounded-r-lg text-gray-500 hover:text-gray-700 data-[selected=true]:text-gray-900 group relative min-w-0 flex-1 overflow-hidden bg-white py-4 px-4 text-center text-sm font-medium hover:bg-gray-50 focus:z-10" diff --git a/packages/demobank-ui/src/pages/PublicHistoriesPage.tsx b/packages/demobank-ui/src/pages/PublicHistoriesPage.tsx index 2864cac65..f330cbc74 100644 --- a/packages/demobank-ui/src/pages/PublicHistoriesPage.tsx +++ b/packages/demobank-ui/src/pages/PublicHistoriesPage.tsx @@ -63,6 +63,7 @@ export function PublicHistoriesPage(): VNode { > <a href="#" + name={`show account ${account.username}`} class="pure-menu-link" onClick={() => setShowAccount(account.username)} > diff --git a/packages/demobank-ui/src/pages/QrCodeSection.tsx b/packages/demobank-ui/src/pages/QrCodeSection.tsx index b439003a0..d20b269a8 100644 --- a/packages/demobank-ui/src/pages/QrCodeSection.tsx +++ b/packages/demobank-ui/src/pages/QrCodeSection.tsx @@ -111,6 +111,7 @@ export function QrCodeSection({ </i18n.Translate>{" "} <a class="font-semibold text-gray-500 hover:text-gray-400" + name="wallet page" href="https://taler.net/en/wallet.html" > <i18n.Translate>this page</i18n.Translate> @@ -121,6 +122,7 @@ export function QrCodeSection({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 pt-2 mt-2 "> <button type="button" + name="cancel" // class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md px-3 py-2 text-sm font-semibold text-black shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600" class="text-sm font-semibold leading-6 text-gray-900" onClick={doAbort} @@ -129,6 +131,7 @@ export function QrCodeSection({ </button> <a href={talerWithdrawUri} + name="withdraw" class="inline-flex items-center disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Withdraw</i18n.Translate> diff --git a/packages/demobank-ui/src/pages/RegistrationPage.tsx b/packages/demobank-ui/src/pages/RegistrationPage.tsx index b7b02b76d..29e71413c 100644 --- a/packages/demobank-ui/src/pages/RegistrationPage.tsx +++ b/packages/demobank-ui/src/pages/RegistrationPage.tsx @@ -426,6 +426,7 @@ function RegistrationForm({ <div class="flex w-full justify-between"> <a + name="cancel" href={routeCancel.url({})} class="ring-1 ring-gray-600 rounded-md bg-white disabled:bg-gray-300 px-3 py-1.5 text-sm font-semibold leading-6 text-black shadow-sm hover:bg-white-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2" > @@ -433,6 +434,7 @@ function RegistrationForm({ </a> <button type="submit" + name="register" class=" rounded-md bg-indigo-600 disabled:bg-gray-300 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" disabled={!!errors} onClick={async (e) => { @@ -450,6 +452,7 @@ function RegistrationForm({ <p class="mt-10 text-center text-sm text-gray-500 border-t"> <button type="submit" + name="create random" class="flex mt-4 w-full justify-center rounded-md bg-green-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600" onClick={(e) => { e.preventDefault(); diff --git a/packages/demobank-ui/src/pages/SolveChallengePage.tsx b/packages/demobank-ui/src/pages/SolveChallengePage.tsx index 61decf586..c7cd7e660 100644 --- a/packages/demobank-ui/src/pages/SolveChallengePage.tsx +++ b/packages/demobank-ui/src/pages/SolveChallengePage.tsx @@ -68,6 +68,7 @@ export function SolveChallengePage({ <span>no challenge to solve </span> <a href={routeClose.url({})} + name="close" class="inline-flex items-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500" > <i18n.Translate>Continue</i18n.Translate> @@ -301,12 +302,14 @@ export function SolveChallengePage({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeClose.url({})} + name="cancel" class="inline-flex items-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="confirm" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={!!errors} onClick={(e) => { @@ -344,7 +347,7 @@ function ChallengeDetails({ <div class="flex justify-between"> <button type="button" - // class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md px-3 py-2 text-sm font-semibold text-black shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600" + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" onClick={onCancel} > @@ -353,6 +356,7 @@ function ChallengeDetails({ {challenge.info ? ( <button type="submit" + name="send again" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" onClick={(e) => { onStart(); @@ -364,6 +368,7 @@ function ChallengeDetails({ ) : ( <button type="submit" + name="send code" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" onClick={(e) => { onStart(); diff --git a/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx b/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx index be1528db8..196ee9d63 100644 --- a/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx +++ b/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx @@ -92,6 +92,7 @@ function OldWithdrawalForm({ </i18n.Translate>{" "} <a class="font-semibold text-yellow-700 hover:text-yellow-600" + name="complete operation" href={url} // onClick={(e) => { // e.preventDefault() @@ -210,6 +211,7 @@ function OldWithdrawalForm({ <div class="sm:inline"> <button type="button" + name="set 50" class=" inline-flex px-6 py-4 text-sm items-center rounded-l-md bg-white text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10" onClick={(e) => { e.preventDefault(); @@ -220,6 +222,7 @@ function OldWithdrawalForm({ </button> <button type="button" + name="set 25" class=" -ml-px -mr-px inline-flex px-6 py-4 text-sm items-center rounded-r-md sm:rounded-none bg-white text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10" onClick={(e) => { e.preventDefault(); @@ -232,6 +235,7 @@ function OldWithdrawalForm({ <div class="mt-4 sm:inline"> <button type="button" + name="set 10" class=" -ml-px -mr-px inline-flex px-6 py-4 text-sm items-center rounded-l-md sm:rounded-none bg-white text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10" onClick={(e) => { e.preventDefault(); @@ -242,6 +246,7 @@ function OldWithdrawalForm({ </button> <button type="button" + name="set 5" class=" inline-flex px-6 py-4 text-sm items-center rounded-r-md bg-white text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10" onClick={(e) => { e.preventDefault(); @@ -256,12 +261,14 @@ function OldWithdrawalForm({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeCancel.url({})} + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="continue" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" // disabled={isRawPayto ? !!errorsPayto : !!errorsWire} onClick={(e) => { @@ -323,6 +330,7 @@ export function WalletWithdrawForm({ </i18n.Translate>{" "} <a target="_blank" + name="wallet page" rel="noreferrer noopener" class="font-semibold text-blue-700 hover:text-blue-600" href="https://taler.net/en/wallet.html" diff --git a/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx b/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx index e8fff1901..e4631fcc8 100644 --- a/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx +++ b/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx @@ -291,6 +291,7 @@ export function WithdrawalConfirmationQuestion({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <button type="button" + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" onClick={doCancel} > @@ -298,6 +299,7 @@ export function WithdrawalConfirmationQuestion({ </button> <button type="submit" + name="transfer" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" onClick={(e) => { e.preventDefault(); diff --git a/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx b/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx index 8faa91d07..e6323631c 100644 --- a/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx +++ b/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx @@ -111,6 +111,7 @@ export function WithdrawalQRCode({ <div class="mt-5 sm:mt-6"> <a href={routeClose.url({})} + name="continue" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Continue</i18n.Translate> @@ -161,6 +162,7 @@ export function WithdrawalQRCode({ <div class="mt-5 sm:mt-6"> <a href={routeClose.url({})} + name="done" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Done</i18n.Translate> @@ -293,6 +295,7 @@ export function OperationNotFound({ <div class="mt-5 sm:mt-6"> <a href={routeClose.url({})} + name="continue to dashboard" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Cotinue to dashboard</i18n.Translate> diff --git a/packages/demobank-ui/src/pages/account/ShowAccountDetails.tsx b/packages/demobank-ui/src/pages/account/ShowAccountDetails.tsx index 70fd85ee8..8cd758c75 100644 --- a/packages/demobank-ui/src/pages/account/ShowAccountDetails.tsx +++ b/packages/demobank-ui/src/pages/account/ShowAccountDetails.tsx @@ -69,7 +69,6 @@ export function ShowAccountDetails({ ? credentials.username === account : false; - // const [update, setUpdate] = useState(false); const [submitAccount, setSubmitAccount] = useState< TalerCorebankApi.AccountReconfiguration | undefined >(); @@ -203,24 +202,6 @@ export function ShowAccountDetails({ <i18n.Translate>Change details</i18n.Translate> </span> </span> - {/* <button - type="button" - data-enabled={!update} - class="bg-indigo-600 data-[enabled=true]:bg-gray-200 relative inline-flex h-5 w-10 flex-shrink-0 cursor-pointer rounded-full ring-2 border-gray-600 transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2" - role="switch" - aria-checked="false" - aria-labelledby="availability-label" - aria-describedby="availability-description" - onClick={() => { - setUpdate(!update); - }} - > - <span - aria-hidden="true" - data-enabled={!update} - class="translate-x-5 data-[enabled=true]:translate-x-0 pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out" - ></span> - </button> */} </div> </h2> </div> @@ -235,12 +216,14 @@ export function ShowAccountDetails({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeClose.url({})} + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="update" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={!submitAccount} onClick={doUpdate} diff --git a/packages/demobank-ui/src/pages/account/UpdateAccountPassword.tsx b/packages/demobank-ui/src/pages/account/UpdateAccountPassword.tsx index 3ce9b1094..0e04ae088 100644 --- a/packages/demobank-ui/src/pages/account/UpdateAccountPassword.tsx +++ b/packages/demobank-ui/src/pages/account/UpdateAccountPassword.tsx @@ -269,12 +269,14 @@ export function UpdateAccountPassword({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeClose.url({})} + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="change" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={!!errors} onClick={(e) => { diff --git a/packages/demobank-ui/src/pages/admin/AccountForm.tsx b/packages/demobank-ui/src/pages/admin/AccountForm.tsx index 8bdd65175..de30d473d 100644 --- a/packages/demobank-ui/src/pages/admin/AccountForm.tsx +++ b/packages/demobank-ui/src/pages/admin/AccountForm.tsx @@ -647,6 +647,7 @@ export function AccountForm<PurposeType extends keyof ChangeByPurposeType>({ </span> <button type="button" + name="is public" data-enabled={ form.isPublic ?? defaultValue.isPublic ? "true" : "false" } @@ -687,6 +688,7 @@ export function AccountForm<PurposeType extends keyof ChangeByPurposeType>({ </span> <button type="button" + name="is exchange" data-enabled={ form.isExchange ?? defaultValue.isExchange ? "true" diff --git a/packages/demobank-ui/src/pages/admin/AccountList.tsx b/packages/demobank-ui/src/pages/admin/AccountList.tsx index 5528b5226..4e3f4afe3 100644 --- a/packages/demobank-ui/src/pages/admin/AccountList.tsx +++ b/packages/demobank-ui/src/pages/admin/AccountList.tsx @@ -81,6 +81,7 @@ export function AccountList({ <div class="mt-4 sm:ml-16 sm:mt-0 sm:flex-none"> <a href={routeCreate.url({})} + name="create account" type="button" class="block rounded-md bg-indigo-600 px-3 py-2 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" > @@ -128,6 +129,7 @@ export function AccountList({ <tr key={idx}> <td class="whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-900 sm:pl-0"> <a + name={`show account ${item.username}`} href={routeShowAccount.url({ account: item.username, })} @@ -163,6 +165,7 @@ export function AccountList({ </td> <td class="relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-0"> <a + name={`update password ${item.username}`} href={routeUpdatePasswordAccount.url({ account: item.username, })} @@ -175,6 +178,7 @@ export function AccountList({ <Fragment> <a + name={`show cashout ${item.username}`} href={routeShowCashoutsAccount.url({ account: item.username, })} @@ -187,6 +191,7 @@ export function AccountList({ : undefined} {noBalance ? ( <a + name={`remove account ${item.username}`} href={routeRemoveAccount.url({ account: item.username, })} diff --git a/packages/demobank-ui/src/pages/admin/AdminHome.tsx b/packages/demobank-ui/src/pages/admin/AdminHome.tsx index 35106edeb..2df8ac112 100644 --- a/packages/demobank-ui/src/pages/admin/AdminHome.tsx +++ b/packages/demobank-ui/src/pages/admin/AdminHome.tsx @@ -238,6 +238,7 @@ function Metrics({ routeDownloadStats }: { > <button type="button" + name="set last hour" onClick={(e) => { e.preventDefault(); setMetricType(TalerCorebankApi.MonitorTimeframeParam.hour); @@ -260,6 +261,7 @@ function Metrics({ routeDownloadStats }: { </button> <button type="button" + name="set last day" onClick={(e) => { e.preventDefault(); setMetricType(TalerCorebankApi.MonitorTimeframeParam.day); @@ -282,6 +284,7 @@ function Metrics({ routeDownloadStats }: { </button> <button type="button" + name="set last month" onClick={(e) => { e.preventDefault(); setMetricType(TalerCorebankApi.MonitorTimeframeParam.month); @@ -304,6 +307,7 @@ function Metrics({ routeDownloadStats }: { </button> <button type="button" + name="set last year" onClick={(e) => { e.preventDefault(); setMetricType(TalerCorebankApi.MonitorTimeframeParam.year); @@ -390,6 +394,7 @@ function Metrics({ routeDownloadStats }: { <div class="flex justify-end mt-2"> <a href={routeDownloadStats.url({})} + name="download stats" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Download stats as CSV</i18n.Translate> diff --git a/packages/demobank-ui/src/pages/admin/CreateNewAccount.tsx b/packages/demobank-ui/src/pages/admin/CreateNewAccount.tsx index 23d5a1e90..8773df50a 100644 --- a/packages/demobank-ui/src/pages/admin/CreateNewAccount.tsx +++ b/packages/demobank-ui/src/pages/admin/CreateNewAccount.tsx @@ -163,6 +163,7 @@ export function CreateNewAccount({ <div class="mt-5 sm:mt-6"> <a href={routeCancel.url({})} + name="close" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Close</i18n.Translate> @@ -191,12 +192,14 @@ export function CreateNewAccount({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeCancel.url({})} + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="create" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={!submitAccount} onClick={(e) => { diff --git a/packages/demobank-ui/src/pages/admin/RemoveAccount.tsx b/packages/demobank-ui/src/pages/admin/RemoveAccount.tsx index e62b6dc03..7fc5961cb 100644 --- a/packages/demobank-ui/src/pages/admin/RemoveAccount.tsx +++ b/packages/demobank-ui/src/pages/admin/RemoveAccount.tsx @@ -100,6 +100,7 @@ export function RemoveAccount({ <div class="mt-5 sm:mt-6"> <a href={routeCancel.url({})} + name="close" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Close</i18n.Translate> @@ -238,12 +239,14 @@ export function RemoveAccount({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeCancel.url({})} + name="cancel" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Cancel</i18n.Translate> </a> <button type="submit" + name="delete" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600" disabled={!!errors} onClick={(e) => { diff --git a/packages/demobank-ui/src/pages/business/CreateCashout.tsx b/packages/demobank-ui/src/pages/business/CreateCashout.tsx index 6d538575b..8dcdf5296 100644 --- a/packages/demobank-ui/src/pages/business/CreateCashout.tsx +++ b/packages/demobank-ui/src/pages/business/CreateCashout.tsx @@ -100,6 +100,7 @@ export function CreateCashout({ <div class="mt-5 sm:mt-6"> <a href={routeClose.url({})} + name="close" class="inline-flex w-full justify-center rounded-md bg-indigo-600 px-3 py-2 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" > <i18n.Translate>Close</i18n.Translate> @@ -676,6 +677,7 @@ export function CreateCashout({ <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8"> <a href={routeClose.url({})} + name="cancel" type="button" class="text-sm font-semibold leading-6 text-gray-900" > @@ -683,6 +685,7 @@ export function CreateCashout({ </a> <button type="submit" + name="cashout" class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 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" disabled={!!errors} onClick={(e) => { diff --git a/packages/demobank-ui/src/pages/business/ShowCashoutDetails.tsx b/packages/demobank-ui/src/pages/business/ShowCashoutDetails.tsx index 1e70886ad..d841ae319 100644 --- a/packages/demobank-ui/src/pages/business/ShowCashoutDetails.tsx +++ b/packages/demobank-ui/src/pages/business/ShowCashoutDetails.tsx @@ -179,6 +179,7 @@ export function ShowCashoutDetails({ id, routeClose }: Props): VNode { <div style={{ display: "flex", justifyContent: "space-between" }}> <a href={routeClose.url({})} + name="close" class="text-sm font-semibold leading-6 text-gray-900" > <i18n.Translate>Close</i18n.Translate> |