From 9a8ba184828550e2778382bfb26c43823e3d7a05 Mon Sep 17 00:00:00 2001 From: Viacheslav8895 Date: Mon, 30 Oct 2023 17:28:06 +0200 Subject: [PATCH] viacheslav8895 payment --- payment.js | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 payment.js diff --git a/payment.js b/payment.js new file mode 100644 index 0000000..7eb7afe --- /dev/null +++ b/payment.js @@ -0,0 +1,160 @@ +import styled, { css } from "styled-components"; + +export default function Payment({ payment }) { + // якщо в нас список платежів має + // кількість (на англ length) = 0 + // то тоді ми виводимо іншу верстку + if (payment.length === 0) { + return ( + + Немає транзакцій + + ); + } + + if (payment.length === 1) { + return ( + + У вас одна транзакція + + ); + } + // тут ми виводимо верстку блока всіх платежів + // та за допомогою функції .map() яка приймає тег + // ми для кожного платежу виводимо верстку + return {payment.map(PaymentItem)}; +} + +// ось сама верстка одного платежу +function PaymentItem({ name, amount, type }) { + return ( + + + + + {name} + {/* ось тут ми передаємо параметр type в наш тег */} + {/* який відповідає за тип нашої платіжки (поповненя чи оплата) */} + + {type}${amount} + + + ); +} + +// дизайн для тексту "Немає транзакцій" +const Empty = styled.div` + /* розмір тексту */ + font-size: 16px; + + /* колір */ + color: #aaa; + + /* === */ + + display: flex; + justify-content: center; + align-items: center; +`; + +const PaymentAmount = styled.div` + /* розмір тексту суми транзакції */ + font-size: 20px; + + display: flex; + align-items: center; + justify-content: flex-end; + + /* ось тут ми отримуємо наш переданий параметр type */ + /* та можемо в залежності від type */ + /* змінювати колір тексту */ + + ${({ type }) => { + if (type === "+") + return css` + color: green; + `; + + if (type === "-") + return css` + color: red; + `; + + if (type === "*") + return css` + color: blue; + `; + + // якщо ніякий if() не виконався + // то буде повертатися цей колір #fff + return css` + color: #fff; + `; + }}; +`; + +const PaymentIcon = styled.div` + /* змінити фон іконки транзакції */ + background: linear-gradient(90deg, #51545b 0%, #767a85 90.71%); + + /* ось так можна поставити просто один колір */ + /* background: red; */ + + /* змінити ширину іконки */ + min-width: 60px; + + /* змінити висотку іконки */ + min-height: 60px; + + /* змінити закруглення країв іконки */ + border-radius: 30px; + + /* ==== */ + display: flex; + justify-content: center; + align-items: center; +`; + +const PaymentText = styled.div` + /* змінити розмір тексту транзакції */ + font-size: 18px; + + /* змінити колір транзакції */ + color: #fff; + + /* === */ + + width: 100%; + display: flex; + align-items: center; +`; + +const PaymentList = styled.div` + /* змінити колір блоку транзакцій */ + background: #1e1e1e; + + /* змінити закругленя країв */ + border-top-left-radius: 20px; + border-top-right-radius: 20px; + + /* змінити отступи від границь */ + padding: 40px; + + /* змінити зверху отступ до блока з меню */ + margin-top: 40px; + + /* змінити мінімальну ширину блоку */ + min-height: 120px; + + /* ==== */ + + display: grid; + gap: 24px; +`; + +const PaymentBlock = styled.div` + display: grid; + grid-template-columns: 60px 4fr 1fr; + gap: 0px 20px; + width: 100%; +`;