/* This file is part of GNU Taler (C) 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 */ import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { styled } from "@linaria/react"; import { Fragment, h, VNode } from "preact"; import { AmountField } from "../../components/AmountField.js"; import { EnabledBySettings } from "../../components/EnabledBySettings.js"; import { SelectList } from "../../components/SelectList.js"; import { Input, LightText, LinkPrimary, SvgIcon, } from "../../components/styled/index.js"; import { Button } from "../../mui/Button.js"; import { Grid } from "../../mui/Grid.js"; import { Paper } from "../../mui/Paper.js"; import { Pages } from "../../NavigationBar.js"; import arrowIcon from "../../svg/chevron-down.inline.svg"; import bankIcon from "../../svg/ri-bank-line.inline.svg"; import { assertUnreachable } from "../../utils/index.js"; import { Contact, State } from "./index.js"; export function SelectCurrencyView({ currencies, onCurrencySelected, }: State.SelectCurrency): VNode { const { i18n } = useTranslationContext(); return (

Choose a currency to proceed or add another exchange

onCurrencySelected(v)} />

Add an exchange
); } const Container = styled.div` display: flex; flex-direction: column; & > * { margin: 8px; } `; const ContactTable = styled.table` width: 100%; & > tr > td { padding: 8px; & > div:not([data-disabled]):hover { background-color: lightblue; } color: black; div[data-disabled] > * { color: gray; } } & > tr:nth-child(2n) { background: #ebebeb; } `; const MediaExample = styled.div` text-size-adjust: 100%; color: inherit; font-family: inherit; font-size: inherit; line-height: inherit; text-transform: none; text-align: left; box-sizing: border-box; align-items: center; display: flex; padding: 8px 8px; &[data-disabled]:hover { cursor: inherit; } cursor: pointer; `; const MediaLeft = styled.div` text-size-adjust: 100%; color: inherit; font-family: inherit; font-size: inherit; line-height: inherit; text-transform: none; text-align: left; box-sizing: border-box; padding-right: 8px; display: block; `; const MediaBody = styled.div` text-size-adjust: 100%; font-family: inherit; text-transform: none; text-align: left; box-sizing: border-box; flex: 1 1; font-size: 14px; font-weight: 500; line-height: 1.42857; `; const MediaRight = styled.div` text-size-adjust: 100%; color: inherit; font-family: inherit; font-size: inherit; line-height: inherit; text-transform: none; text-align: left; box-sizing: border-box; padding-left: 8px; `; const CircleDiv = styled.div` box-sizing: border-box; align-items: center; background-position: 50%; background-repeat: no-repeat; background-size: cover; border-radius: 50%; display: flex; justify-content: center; margin-left: auto; margin-right: auto; overflow: hidden; text-align: center; text-decoration: none; text-transform: uppercase; transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease; font-size: 16px; background-color: #86a7bd1a; height: 40px; line-height: 40px; width: 40px; border: none; `; export function ReadyView(props: State.Ready): VNode { switch (props.type) { case "get": return ReadyGetView(props); case "send": return ReadySendView(props); default: assertUnreachable(props.type); } } export function ReadyGetView({ amountHandler, goToBank, goToWallet, selectCurrency, previous, }: State.Ready): VNode { const { i18n } = useTranslationContext(); return (

Specify the amount and the origin

{previous.length > 0 ? (

Use previous origins:

{previous.map((info, i) => ( ))}
) : undefined} {previous.length > 0 ? (

Or specify the origin of the money

) : (

Specify the origin of the money

)}

From my bank account

From another wallet

From a

taler://peer-push-credit
URI

Enter URI here
); } export function ReadySendView({ amountHandler, goToBank, goToWallet, previous, selectMax, }: State.Ready): VNode { const { i18n } = useTranslationContext(); return (

Specify the amount and the destination

{previous.length > 0 ? (

Use previous destinations:

{previous.map((info, i) => ( ))}
) : undefined} {previous.length > 0 ? (

Or specify the destination of the money

) : (

Specify the destination of the money

)}

To my bank account

To another wallet

); } function RowExample({ info, disabled, }: { info: Contact; disabled?: boolean; }): VNode { const icon = info.icon_type === "bank" ? bankIcon : undefined; return ( {icon !== undefined ? ( ) : ( A )} {info.name} {info.description} ); }