From 5cd2a9fcf2ebe526a5fc5ad6d86105cf38140cc4 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Thu, 9 May 2024 11:37:13 +0200 Subject: [PATCH 01/31] frontend: prepare for responsive font-size In order to change the CSS to change the codebase to use rem, using 'The 62.5% Font Size Trick' we need to first convert all existing rem units back to px. This is so that we don't accidentally already have rem values. If the default base font size is 16px, 1rem equals 16px. Changing back to pixel first makes it much easier to use the 62.5% trick where 1rem = 10px. This refactoring should not introduce any visual change and just converted rem to px. I.e. 1.5rem is now 24px as 1rem currently equals 16px. Also simplified terms.module.css a bit as the title was defined multiple times. --- .../web/src/components/guide/guide.module.css | 8 ++++---- frontends/web/src/components/password.module.css | 2 +- .../pillbuttongroup/pillbuttongroup.module.css | 2 +- .../web/src/components/terms/terms.module.css | 16 +++++----------- .../web/src/routes/account/add/add.module.css | 2 +- .../web/src/routes/account/info/info.module.css | 2 +- .../account/summary/accountssummary.module.css | 2 +- .../src/routes/account/summary/chart.module.css | 14 +++++++------- .../account/summary/percentage-diff.module.css | 8 ++++---- .../web/src/routes/device/bitbox01/check.jsx | 2 +- .../routes/device/components/backups.module.css | 2 +- frontends/web/src/style/variables.css | 8 ++++---- 12 files changed, 31 insertions(+), 37 deletions(-) diff --git a/frontends/web/src/components/guide/guide.module.css b/frontends/web/src/components/guide/guide.module.css index 67cdacd66f..85129d0eb1 100644 --- a/frontends/web/src/components/guide/guide.module.css +++ b/frontends/web/src/components/guide/guide.module.css @@ -80,10 +80,9 @@ } .content h2 { - font-size: 1.1em; + font-size: var(--size-subheader); font-weight: 400; - line-height: 1.2em; - margin: 0px; + margin: 0; } .guide p { @@ -115,6 +114,7 @@ .entryTitle .entryToggle { align-items: center; display: flex; + font-size: var(--size-subheader); flex-direction: row; font-weight: bold; justify-content: flex-start; @@ -198,6 +198,6 @@ @media screen and (max-width: 640px) { .guide h2 { - font-size: 1.05em; + font-size: var(--size-default); } } diff --git a/frontends/web/src/components/password.module.css b/frontends/web/src/components/password.module.css index 313232864d..09fda96a40 100644 --- a/frontends/web/src/components/password.module.css +++ b/frontends/web/src/components/password.module.css @@ -4,5 +4,5 @@ line-height: 42px; position: absolute; right: 0; - width: 2rem; + width: 32px; } diff --git a/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css b/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css index f0c72a8581..8c92b25549 100644 --- a/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css +++ b/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css @@ -9,7 +9,7 @@ appearance: none; background: var(--background-secondary); border: 2px solid var(--background-secondary); - border-radius: 2rem; + border-radius: 32px; color: var(--color-default); font-size: var(--size-default); line-height: 1.75; diff --git a/frontends/web/src/components/terms/terms.module.css b/frontends/web/src/components/terms/terms.module.css index 8ca16394e5..c31ecf7580 100644 --- a/frontends/web/src/components/terms/terms.module.css +++ b/frontends/web/src/components/terms/terms.module.css @@ -12,12 +12,6 @@ width: 100%; } -.title { - font-size: 2rem; - font-weight: 400; - text-align: center; -} - .disclaimer { background-color: var(--background-secondary); flex-basis: 100%; @@ -30,19 +24,19 @@ padding: var(--space-quarter) 1em 1em 1em; } -.disclaimer .title { - font-size: .875rem; +.title { + font-size: 14px; font-weight: bold; text-align: left; } .disclaimer p { - font-size: .875rem; + font-size: 14px; line-height: 1.5; } .disclaimer p + .title { - margin: 2.5rem 0 0 0; + margin: 40px 0 0 0; } .table { @@ -51,7 +45,7 @@ .table table { border-collapse: collapse; - font-size: .875rem; + font-size: 14px; text-align: left; } diff --git a/frontends/web/src/routes/account/add/add.module.css b/frontends/web/src/routes/account/add/add.module.css index 070334489c..d43d2f0569 100644 --- a/frontends/web/src/routes/account/add/add.module.css +++ b/frontends/web/src/routes/account/add/add.module.css @@ -13,7 +13,7 @@ .successCheck { background-color: var(--color-success); - border: .5rem solid var(--color-success); + border: 8px solid var(--color-success); border-radius: 100px; } diff --git a/frontends/web/src/routes/account/info/info.module.css b/frontends/web/src/routes/account/info/info.module.css index 26b0e0b507..c3771b8606 100644 --- a/frontends/web/src/routes/account/info/info.module.css +++ b/frontends/web/src/routes/account/info/info.module.css @@ -33,7 +33,7 @@ clear: both; display: flex; justify-content: space-between; - min-height: 3.5rem; + min-height: 56px; } .verifyButton { diff --git a/frontends/web/src/routes/account/summary/accountssummary.module.css b/frontends/web/src/routes/account/summary/accountssummary.module.css index d65da56922..4a01d318d0 100644 --- a/frontends/web/src/routes/account/summary/accountssummary.module.css +++ b/frontends/web/src/routes/account/summary/accountssummary.module.css @@ -193,7 +193,7 @@ } .coinName img { - left: -2rem; + left: -32px; position: absolute; top: -3px; } diff --git a/frontends/web/src/routes/account/summary/chart.module.css b/frontends/web/src/routes/account/summary/chart.module.css index 5ee251b2be..cee0637e48 100644 --- a/frontends/web/src/routes/account/summary/chart.module.css +++ b/frontends/web/src/routes/account/summary/chart.module.css @@ -82,7 +82,7 @@ } .totalValue { - font-size: 2rem; + font-size: 32px; display: flex; align-items: flex-end; } @@ -91,8 +91,8 @@ color: var(--color-secondary); display: inline-block; margin-bottom: 3px; - font-size: 1.4rem; - padding: 0 .25rem; + font-size: 22px; + padding: 0 4px; } .chartCanvas { @@ -113,7 +113,7 @@ font-size: var(--size-small); margin-top: -25px; min-width: 140px; - padding: .75rem .6rem; + padding: 12px 10px; pointer-events: none; position: absolute; text-align: center; @@ -123,14 +123,14 @@ .toolTipValue { font-weight: normal; - font-size: 1rem; - margin: 0 0 .25rem 0; + font-size: 16px; + margin: 0 0 4px 0; } .toolTipUnit { color: var(--color-secondary); font-size: var(--size-small); - padding: 0 .125rem; + padding: 0 2px; } .toolTipTime { diff --git a/frontends/web/src/routes/account/summary/percentage-diff.module.css b/frontends/web/src/routes/account/summary/percentage-diff.module.css index fb032d8493..d4380296b2 100644 --- a/frontends/web/src/routes/account/summary/percentage-diff.module.css +++ b/frontends/web/src/routes/account/summary/percentage-diff.module.css @@ -1,6 +1,6 @@ .arrow img { - margin-right: .25rem; + margin-right: 4px; vertical-align: text-bottom; } @@ -13,10 +13,10 @@ } .diffValue { - font-size: 1.2rem; + font-size: 19px; } .diffUnit { - font-size: 1rem; - padding: 0 .25rem; + font-size: 16px; + padding: 0 4px; } diff --git a/frontends/web/src/routes/device/bitbox01/check.jsx b/frontends/web/src/routes/device/bitbox01/check.jsx index f34a14270d..c829018178 100644 --- a/frontends/web/src/routes/device/bitbox01/check.jsx +++ b/frontends/web/src/routes/device/bitbox01/check.jsx @@ -99,7 +99,7 @@ class Check extends Component { onClose={this.abort}> { message ? (
-

{message}

+

{message}

From 8a7506920af1f7921429271b8ad31413636b2146 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Fri, 17 Oct 2025 13:44:30 +0200 Subject: [PATCH 13/31] frontend: improve account-summary in scaled up mode --- .../amount/amount-with-unit.module.css | 1 - .../web/src/components/badge/badge.module.css | 2 +- .../hideamountsbutton.module.css | 4 +-- .../keystore/connected-keystore.tsx | 2 +- .../src/components/layout/header.module.css | 4 +-- .../pillbuttongroup.module.css | 25 ++++++------------- .../src/components/status/status.module.css | 9 +++---- .../summary/accountssummary.module.css | 12 ++------- .../routes/account/summary/chart.module.css | 6 ++--- .../summary/percentage-diff.module.css | 12 ++++++--- 10 files changed, 31 insertions(+), 46 deletions(-) diff --git a/frontends/web/src/components/amount/amount-with-unit.module.css b/frontends/web/src/components/amount/amount-with-unit.module.css index 754d8d60ff..35f1428f14 100644 --- a/frontends/web/src/components/amount/amount-with-unit.module.css +++ b/frontends/web/src/components/amount/amount-with-unit.module.css @@ -1,6 +1,5 @@ .rates { cursor: default; - line-height: 1; margin: 0; max-width: 100%; white-space: nowrap; diff --git a/frontends/web/src/components/badge/badge.module.css b/frontends/web/src/components/badge/badge.module.css index cb0e7f7c33..cfa4022436 100644 --- a/frontends/web/src/components/badge/badge.module.css +++ b/frontends/web/src/components/badge/badge.module.css @@ -19,7 +19,7 @@ } .badgeIcon { - max-width: 10px; + max-width: 1rem; } .withChildren .badgeIcon { diff --git a/frontends/web/src/components/hideamountsbutton/hideamountsbutton.module.css b/frontends/web/src/components/hideamountsbutton/hideamountsbutton.module.css index 14268ba5f4..f530ae5ab0 100644 --- a/frontends/web/src/components/hideamountsbutton/hideamountsbutton.module.css +++ b/frontends/web/src/components/hideamountsbutton/hideamountsbutton.module.css @@ -6,8 +6,8 @@ } .button img { - width: 18px; - height: 18px; + max-height: var(--size-default); + width: var(--size-default); } .buttonText { diff --git a/frontends/web/src/components/keystore/connected-keystore.tsx b/frontends/web/src/components/keystore/connected-keystore.tsx index 6bd8405492..6e2c274338 100644 --- a/frontends/web/src/components/keystore/connected-keystore.tsx +++ b/frontends/web/src/components/keystore/connected-keystore.tsx @@ -53,7 +53,7 @@ export const ConnectedKeystore = ({ <> {' '} } + icon={props => } title={t('device.keystoreConnected')} type="success"> {connectedIconOnly ? undefined : t('device.keystoreConnected')} diff --git a/frontends/web/src/components/layout/header.module.css b/frontends/web/src/components/layout/header.module.css index 02468bb69e..bb2f2221a5 100644 --- a/frontends/web/src/components/layout/header.module.css +++ b/frontends/web/src/components/layout/header.module.css @@ -28,9 +28,9 @@ } .guideClose img { - width: 18px; - height: 18px; color: var(--color-blue); + max-height: var(--size-default); + width: var(--size-default); } .guideCloseText { diff --git a/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css b/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css index 8c92b25549..f415d5e2e8 100644 --- a/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css +++ b/frontends/web/src/components/pillbuttongroup/pillbuttongroup.module.css @@ -3,31 +3,27 @@ display: flex; flex-wrap: wrap; flex-grow: 1; + gap: var(--spacing-half); } .pillbuttongroup button { appearance: none; background: var(--background-secondary); - border: 2px solid var(--background-secondary); - border-radius: 32px; + border: 0.1rem solid var(--background-secondary); + border-radius: 36px; color: var(--color-default); - font-size: var(--size-default); + font-size: min(var(--size-default), 18px); line-height: 1.75; margin-bottom: var(--spacing-half); - margin-left: var(--spacing-half); } .pillbuttongroup.medium button { - padding: 0 calc(var(--spacing-default) * .75); + padding: 0 12px; } .pillbuttongroup.large button { - font-size: calc(var(--size-default) + 1px); - padding: 2px calc(var(--spacing-default) * 1.5); -} - -.pillbuttongroup button:first-child { - margin-left: 0; + font-size: min(calc(var(--size-default) + 1px), 24px); + padding: 2px 24px; } .pillbuttongroup button:hover:not([disabled]) { @@ -60,10 +56,3 @@ border-color: var(--background-secondary); color: var(--color-disabled); } - -@media (max-width: 768px) { - .pillbuttongroup.lg button { - font-size: calc(var(--size-default)); - padding: 2px calc(var(--spacing-default) * 1.25); - } -} \ No newline at end of file diff --git a/frontends/web/src/components/status/status.module.css b/frontends/web/src/components/status/status.module.css index b208875a3a..207178ddd6 100644 --- a/frontends/web/src/components/status/status.module.css +++ b/frontends/web/src/components/status/status.module.css @@ -7,17 +7,16 @@ display: flex; width: 100%; } -.container.withCloseBtn { - padding-right: 60px; -} .closeButton { background-color: transparent; border: none; margin-left: auto; + padding: 0; } .closeButton img { - width: 16px; - height: 16px; + height: var(--size-default); + margin-right: 0; + width: var(--size-default); } diff --git a/frontends/web/src/routes/account/summary/accountssummary.module.css b/frontends/web/src/routes/account/summary/accountssummary.module.css index d2b23c9b27..ecbccf75c4 100644 --- a/frontends/web/src/routes/account/summary/accountssummary.module.css +++ b/frontends/web/src/routes/account/summary/accountssummary.module.css @@ -101,13 +101,13 @@ } .coinName { + align-items: center; display: flex; } .coinName img { flex-shrink: 0; margin-right: var(--spacing-default); - vertical-align: middle; } .coinUnit { @@ -169,6 +169,7 @@ .table tbody td { display: flex; + flex-wrap: wrap; justify-content: space-between; height: auto; padding-bottom: 0; @@ -188,13 +189,4 @@ padding-bottom: var(--spacing-default); } - .coinName { - position: relative; - } - - .coinName img { - left: -32px; - position: absolute; - top: -3px; - } } diff --git a/frontends/web/src/routes/account/summary/chart.module.css b/frontends/web/src/routes/account/summary/chart.module.css index 0290f6150a..6c94aa0ecd 100644 --- a/frontends/web/src/routes/account/summary/chart.module.css +++ b/frontends/web/src/routes/account/summary/chart.module.css @@ -82,16 +82,16 @@ } .totalValue { - font-size: 3.2rem; - display: flex; align-items: flex-end; + display: flex; + font-size: min(3.2rem, 40px); } .totalUnit { color: var(--color-secondary); display: inline-block; + font-size: min(2rem, 25px); margin-bottom: 3px; - font-size: 2.2rem; padding: 0 4px; } diff --git a/frontends/web/src/routes/account/summary/percentage-diff.module.css b/frontends/web/src/routes/account/summary/percentage-diff.module.css index 25fc979e1a..f4b591229d 100644 --- a/frontends/web/src/routes/account/summary/percentage-diff.module.css +++ b/frontends/web/src/routes/account/summary/percentage-diff.module.css @@ -1,7 +1,13 @@ +.arrow { + line-height: 1; + vertical-align: text-bottom; +} + .arrow img { + height: min(2rem, 25px); margin-right: 4px; - vertical-align: text-bottom; + width: min(2rem, 25px); } .up { @@ -13,10 +19,10 @@ } .diffValue { - font-size: 1.9rem; + font-size: min(2rem, 25px); } .diffUnit { - font-size: 1.6rem; + font-size: min(1.6rem, 20px); /* var(--size-default); */ padding: 0 4px; } From 878b15f5c4711283a090f6ce4090b209ca88559a Mon Sep 17 00:00:00 2001 From: thisconnect Date: Wed, 22 Oct 2025 10:11:49 +0200 Subject: [PATCH 14/31] frontend: make guide component responsive Changed the layout slightly on small screen as there was custom font-size defined, introduced in: bfc3fed83a1ba771c7ac35e41dfadf36769c41fe --- frontends/web/src/components/guide/entry.tsx | 8 ++- .../web/src/components/guide/guide.module.css | 58 +++++++------------ 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/frontends/web/src/components/guide/entry.tsx b/frontends/web/src/components/guide/entry.tsx index b356cf563e..a9ee90292b 100644 --- a/frontends/web/src/components/guide/entry.tsx +++ b/frontends/web/src/components/guide/entry.tsx @@ -47,10 +47,12 @@ export const Entry = (props: TProps) => { return (
-
{shown ? '–' : '+'}
-
-

{entry.title}

+
+ {shown ? '–' : '+'}
+

+ {entry.title} +

{shown ? ( diff --git a/frontends/web/src/components/guide/guide.module.css b/frontends/web/src/components/guide/guide.module.css index 6903a6e05f..e2bb003268 100644 --- a/frontends/web/src/components/guide/guide.module.css +++ b/frontends/web/src/components/guide/guide.module.css @@ -12,15 +12,16 @@ .close { display: flex; - height: 24px; + height: 2.4rem; + margin-left: var(--space-eight); + min-height: 0; padding: 4px; - width: 24px; + width: 2.4rem; } .close img { - height: 20px; - margin-left: calc(var(--space-quarter) / 2); - width: 20px; + height: min(2rem, 36px); + width: min(2rem, 36px); } .wrapper { @@ -61,11 +62,6 @@ margin: 0; } -.header a { - cursor: pointer; - font-size: 2rem; -} - .content { display: flex; flex-direction: column; @@ -74,17 +70,6 @@ padding-bottom: env(safe-area-inset-bottom, 0); } -.content h1 { - font-size: 1.5em; - margin-top: 0px; -} - -.content h2 { - font-size: var(--size-subheader); - font-weight: 400; - margin: 0; -} - .guide p { font-size: var(--size-default); margin: 0.4em 0; @@ -94,36 +79,39 @@ margin-right: 0; } -.entry { - margin-top: var(--space-default); -} - .appendix { padding-top: var(--space-half); margin-top: auto; } +.entry { + margin-top: var(--space-default); +} + .entryTitle { align-items: flex-start; cursor: default; display: flex; flex-direction: row; + font-size: var(--size-subheader); justify-content: flex-start; } -.entryTitle .entryToggle { +.entryToggle { align-items: center; display: flex; - font-size: var(--size-subheader); - flex-direction: row; font-weight: bold; + flex-direction: row; justify-content: flex-start; - line-height: 1.2em; - width: 16px; + line-height: 1.2; + width: var(--size-small); } -.entryTitle .entryTitleText { +.entryTitleText { flex: 1; + font-size: var(--size-subheader); + font-weight: 400; + margin: 0; } .entryContent { @@ -131,7 +119,7 @@ display: flex; flex-direction: row; justify-content: flex-start; - padding-left: 16px; + padding-left: var(--size-small); } .expanded { @@ -195,9 +183,3 @@ padding-right: var(--space-half); } } - -@media screen and (max-width: 640px) { - .guide h2 { - font-size: var(--size-default); - } -} From acec824a57e832ad5662e1c734c25162023b9463 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Mon, 10 Nov 2025 12:43:21 +0100 Subject: [PATCH 15/31] frontend: make marketplace related components responsive Also removed some unused CSS. --- .../groupedaccountselector.module.css | 5 +- .../web/src/components/terms/terms.module.css | 16 +- .../routes/market/components/deals.module.css | 2 +- .../market/components/vendor-deals.module.css | 140 +----------------- .../routes/market/components/vendor-deals.tsx | 2 +- .../web/src/routes/market/market.module.css | 7 +- 6 files changed, 23 insertions(+), 149 deletions(-) diff --git a/frontends/web/src/components/groupedaccountselector/groupedaccountselector.module.css b/frontends/web/src/components/groupedaccountselector/groupedaccountselector.module.css index 5828fefddf..992b73f301 100644 --- a/frontends/web/src/components/groupedaccountselector/groupedaccountselector.module.css +++ b/frontends/web/src/components/groupedaccountselector/groupedaccountselector.module.css @@ -6,6 +6,7 @@ } .balanceSingleValue { + margin-left: var(--space-quarter); margin-right: var(--space-quarter); } @@ -26,12 +27,13 @@ } .select { + font-size: min(var(--size-default), 24px); margin-bottom: var(--space-half); } .select :global(.react-select__group-heading) { color: var(--color-default); - font-size: var(--size-default); + font-size: min(var(--size-default), 24px); margin: 0; padding-right: var(--space-quarter); text-transform: unset; @@ -72,6 +74,7 @@ .select :global(.react-select__control) { background-color: var(--background-secondary); + min-height: var(--input-height); padding: var(--space-quarter) var(--space-eight); } diff --git a/frontends/web/src/components/terms/terms.module.css b/frontends/web/src/components/terms/terms.module.css index 92584f7c6d..52d879c96f 100644 --- a/frontends/web/src/components/terms/terms.module.css +++ b/frontends/web/src/components/terms/terms.module.css @@ -1,4 +1,5 @@ .disclaimerContainer { + --size-default: min(1.4rem, 24px); align-items: center; display: flex; flex-basis: 100%; @@ -21,22 +22,22 @@ margin: 0 0 var(--space-default) 0; max-width: 660px; overflow: auto; - padding: var(--space-quarter) 1em 1em 1em; + padding: var(--space-quarter) var(--space-half) var(--space-half) var(--space-half); } .title { - font-size: 1.4rem; + font-size: var(--size-default); font-weight: bold; text-align: left; } .disclaimer p { - font-size: 1.4rem; + font-size: var(--size-default); line-height: 1.5; } .disclaimer p + .title { - margin: 4rem 0 0 0; + margin: 64px 0 0 0; } .table { @@ -45,7 +46,7 @@ .table table { border-collapse: collapse; - font-size: 1.4rem; + font-size: var(--size-default); text-align: left; } @@ -64,6 +65,11 @@ padding-left: 0; } +.table td:last-child, +.table th:last-child { + padding-right: 0; +} + .nowrap { white-space: nowrap; } diff --git a/frontends/web/src/routes/market/components/deals.module.css b/frontends/web/src/routes/market/components/deals.module.css index 0b042b5d54..b120203039 100644 --- a/frontends/web/src/routes/market/components/deals.module.css +++ b/frontends/web/src/routes/market/components/deals.module.css @@ -4,7 +4,7 @@ .noExchangeText { color: var(--color-gray-alt); - line-height: 22px; + line-height: 1.375; margin: 0; text-align: center; margin-top: calc((var(--space-eight) + var(--space-half))); diff --git a/frontends/web/src/routes/market/components/vendor-deals.module.css b/frontends/web/src/routes/market/components/vendor-deals.module.css index b4b43c50c3..0b2cc86205 100644 --- a/frontends/web/src/routes/market/components/vendor-deals.module.css +++ b/frontends/web/src/routes/market/components/vendor-deals.module.css @@ -1,8 +1,10 @@ -.container, .paymentMethodContainer { +.container, +.paymentMethodContainer { display: flex; } .exchangeName { + margin: 0; width: 110px; } @@ -18,22 +20,6 @@ position: relative; } -.infoButton { - background: none; - border: none; - cursor: pointer; - padding: 0; - position: absolute; - right: calc(var(--space-default) * -1); - top: 50%; - transform: translateY(-50%); - -} - -.outerContainer { - position: relative; -} - .paymentMethodsContainer { display: flex; flex-direction: column; @@ -42,7 +28,8 @@ padding-right: var(--space-quarter); } -.paymentMethodName, .dealDescription { +.paymentMethodName, +.dealDescription { color: var(--color-default); display: inline-block; font-weight: 400; @@ -57,123 +44,6 @@ margin-top: var(--space-eight); } - -.radio { - --size-default: 1.4rem; - background-color: var(--background-secondary); - border: 1px solid var(--background-quaternary); - display: block; - padding: 8px; -} - -.radio:hover, .radio *:hover { - cursor: pointer; -} - -.radio input { - display: none; -} - -.radio input + label { - display: inline-flex; - flex-direction: column; - font-size: var(--size-default); - line-height: 1.5; - margin: 0; - padding-left: calc(var(--space-half) + var(--space-quarter)); - position: relative; -} - -.radio input + label::before, -.radio input + label::after { - background: var(--background-secondary); - content: ''; - display: inline-block; - width: 12px; - height: 12px; - position: absolute; - top: 4px; - left: 0; - transition: all 100ms ease; -} - -.radio input + label::before { - border: 1px solid var(--background-tertiary); - border-radius: 1em; -} - -.radio input + label::after { - background: var(--color-info); - border-radius: 1em; - width: 10px; - height: 10px; - position: absolute; - top: 6px; - left: 2px; - opacity: 0; - transform: scale(0); -} - -.radioLabel { - width: 100%; -} - -.text { - margin: 0; -} - -/* checked */ - -.radio[aria-checked="true"] { - background-color: var(--background-focus); -} - -.radio:focus { - position: relative; - z-index: 2; -} - -.radio input:checked + label::before { - background-color: var(--background-secondary); -} - -.radio input:checked + label::after { - opacity: 1; - transform: scale(1); -} - -/* focus */ - -.radio input[type="radio"]:focus + label::before { - box-shadow: 0px 0px 2px 2px var(--color-info); - outline: none; - outline-offset: 0; -} - -.radio input[type="radio"]:checked:focus + label::before { - box-shadow: 0px 0px 2px 2px var(--color-info); -} - -/* disabled */ - -.radio input:disabled + label::before { - background: rgb(248, 248, 248); - border-color: rgb(220, 220, 220); - cursor: not-allowed; -} - -.radio[aria-disabled="true"] { - background-color: #FFF; -} - -.radio[aria-disabled="true"], .radio[aria-disabled="true"] * { - cursor: not-allowed; -} - -span[role="radio"]:focus{ - outline-color: var(--color-blue); -} - @media (max-width: 400px) { .exchangeName { width: 150px; diff --git a/frontends/web/src/routes/market/components/vendor-deals.tsx b/frontends/web/src/routes/market/components/vendor-deals.tsx index bef29fb63b..95011ea3c9 100644 --- a/frontends/web/src/routes/market/components/vendor-deals.tsx +++ b/frontends/web/src/routes/market/components/vendor-deals.tsx @@ -97,7 +97,7 @@ export const VendorDeals = ({ return (
-

+

{getVendorFormattedName(vendorName)}

diff --git a/frontends/web/src/routes/market/market.module.css b/frontends/web/src/routes/market/market.module.css index a63bd30856..22f45e03e6 100644 --- a/frontends/web/src/routes/market/market.module.css +++ b/frontends/web/src/routes/market/market.module.css @@ -1,8 +1,3 @@ -.exchangeContainer, -.exchangeContainer p { - --size-default: 1.4rem; -} - .exchangeContainer { padding-left: var(--space-half); padding-right: 40px; @@ -10,7 +5,7 @@ .label { color: var(--color-gray-alt); - line-height: 22px; + line-height: 1.375; margin: 0; margin-bottom: var(--space-eight); } From ee0b93cca84bc3ab5be12634b9e034f35f772397 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Mon, 10 Nov 2025 12:44:29 +0100 Subject: [PATCH 16/31] frontend: make dialog related components responsive --- .../src/components/dialog/dialog.module.css | 63 +------------------ .../components/language/language.module.css | 4 -- 2 files changed, 3 insertions(+), 64 deletions(-) diff --git a/frontends/web/src/components/dialog/dialog.module.css b/frontends/web/src/components/dialog/dialog.module.css index ee91952604..67adbaba66 100644 --- a/frontends/web/src/components/dialog/dialog.module.css +++ b/frontends/web/src/components/dialog/dialog.module.css @@ -33,15 +33,9 @@ } /* guard dialog and wait-dialog from view styles */ @media (min-width: 1200px) { - .header .title { - --size-subheader: 1.6rem; - } .modal { margin-left: var(--sidebar-width-large); } - .modal .contentContainer p { - --size-default: 1.4rem; - } } .modal.small { @@ -96,13 +90,11 @@ .header .closeButton, .header .closeButton img { - width: 18px; - height: 18px; + width: var(--size-subheader); + height: var(--size-subheader); } .contentContainer { - font-size: var(--size-default); - font-weight: 400; padding: var(--space-half); } @@ -139,55 +131,6 @@ font-weight: 400; } -.modalContent p { - font-size: var(--size-default); - font-weight: 400; -} - -.modalContent > *:first-child { - margin-top: 0; -} - -.detail { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - min-height: var(--item-height); - padding: var(--space-half); -} - -.detail:not(:first-child) { - border-bottom: solid 1px var(--background); -} - -.detail label { - white-space: nowrap; - margin-right: var(--space-half) !important; -} - -.detail label, -.detail p { - margin: 0; - line-height: 1; -} - -.detail.description > span { - text-align: right; -} - -.buttons { - padding: var(--space-quarter); -} - -.buttons button:first-child { - margin-right: 10px; -} - -.buttons button { - width: 50%; -} - .dialogButtons { display: flex; flex-direction: row-reverse; @@ -239,4 +182,4 @@ .contentContainer.slim { padding-bottom: calc(env(safe-area-inset-bottom, 0)); } -} \ No newline at end of file +} diff --git a/frontends/web/src/components/language/language.module.css b/frontends/web/src/components/language/language.module.css index 8f63edd402..7b482f3f89 100644 --- a/frontends/web/src/components/language/language.module.css +++ b/frontends/web/src/components/language/language.module.css @@ -52,8 +52,4 @@ .link { font-size: var(--size-smaller); } - - .language { - font-size: var(--size-small) !important; - } } \ No newline at end of file From fcb925573f3dc0c39a3e4cb335948c6fd2d441a3 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Mon, 10 Nov 2025 12:44:59 +0100 Subject: [PATCH 17/31] frontend: make settings related components responsive --- .../actionable-item.module.css | 1 - .../src/components/message/message.module.css | 4 ++-- .../web/src/routes/account/add/add.module.css | 4 ++-- .../account/add/components/steps.module.css | 2 +- .../web/src/routes/device/bitbox02/bip85.tsx | 2 +- .../src/routes/device/bitbox02/passphrase.tsx | 2 +- .../routes/device/bitbox02/recovery-words.tsx | 6 +++-- .../unlock-software-keystore.module.css | 2 ++ .../activecurrenciesdropdown.module.css | 3 ++- .../languageDropDownSetting.module.css | 3 ++- .../factory-reset-setting.module.css | 2 +- .../components/mobile-header.module.css | 2 +- .../settingsItem/settingsItem.module.css | 4 +++- .../settings/manage-accounts.module.css | 22 ++++++++++++++----- .../src/routes/settings/manage-accounts.tsx | 6 +++-- frontends/web/src/style/layout.css | 2 +- 16 files changed, 43 insertions(+), 24 deletions(-) diff --git a/frontends/web/src/components/actionable-item/actionable-item.module.css b/frontends/web/src/components/actionable-item/actionable-item.module.css index e9567cd6a4..e783b23674 100644 --- a/frontends/web/src/components/actionable-item/actionable-item.module.css +++ b/frontends/web/src/components/actionable-item/actionable-item.module.css @@ -1,5 +1,4 @@ .container { - --size-default: 1.4rem; align-items: center; background-color: var(--background-secondary); border: none; diff --git a/frontends/web/src/components/message/message.module.css b/frontends/web/src/components/message/message.module.css index 490c4943d8..842b497640 100644 --- a/frontends/web/src/components/message/message.module.css +++ b/frontends/web/src/components/message/message.module.css @@ -19,8 +19,8 @@ } .message img { - margin-right: 4px; - max-width: 30px; + margin-right: var(--space-quarter); + max-width: var(--size-header); } .message p:last-child { diff --git a/frontends/web/src/routes/account/add/add.module.css b/frontends/web/src/routes/account/add/add.module.css index d43d2f0569..96f48416bf 100644 --- a/frontends/web/src/routes/account/add/add.module.css +++ b/frontends/web/src/routes/account/add/add.module.css @@ -1,8 +1,8 @@ .manageContainer { - flex-basis: 490px; + /* flex-basis: 490px; */ flex-shrink: 1; margin-bottom: var(--header-height); - min-height: 390px; + min-height: 490px; max-height: 100%; } diff --git a/frontends/web/src/routes/account/add/components/steps.module.css b/frontends/web/src/routes/account/add/components/steps.module.css index 0480c56c43..680e85b565 100644 --- a/frontends/web/src/routes/account/add/components/steps.module.css +++ b/frontends/web/src/routes/account/add/components/steps.module.css @@ -108,7 +108,7 @@ } .content { - font-size: var(--size-smaller); + font-size: var(--size-small); line-height: 1; margin: 0; min-width: 90px; diff --git a/frontends/web/src/routes/device/bitbox02/bip85.tsx b/frontends/web/src/routes/device/bitbox02/bip85.tsx index c4cdbda991..13f2015178 100644 --- a/frontends/web/src/routes/device/bitbox02/bip85.tsx +++ b/frontends/web/src/routes/device/bitbox02/bip85.tsx @@ -52,7 +52,7 @@ export const Bip85 = ({ key="bip85-info-what" fullscreen verticallyCentered> - + diff --git a/frontends/web/src/routes/device/bitbox02/passphrase.tsx b/frontends/web/src/routes/device/bitbox02/passphrase.tsx index 07e4e81ffe..4e0ca84dc8 100644 --- a/frontends/web/src/routes/device/bitbox02/passphrase.tsx +++ b/frontends/web/src/routes/device/bitbox02/passphrase.tsx @@ -31,7 +31,7 @@ import { Message } from '@/components/message/message'; // The enable wizard has five steps that can be navigated by clicking // 'back' or 'continue'. On the last step the passphrase will be enabled. const FINAL_INFO_STEP = 5; -const CONTENT_MIN_HEIGHT = '38em'; +const CONTENT_MIN_HEIGHT = 'min(38em, 100vh)'; type TProps = { deviceID: string; diff --git a/frontends/web/src/routes/device/bitbox02/recovery-words.tsx b/frontends/web/src/routes/device/bitbox02/recovery-words.tsx index f51cf0a087..0667703041 100644 --- a/frontends/web/src/routes/device/bitbox02/recovery-words.tsx +++ b/frontends/web/src/routes/device/bitbox02/recovery-words.tsx @@ -26,6 +26,8 @@ import { Button, Checkbox } from '@/components/forms'; import { PointToBitBox02 } from '@/components/icon'; import { Message } from '@/components/message/message'; +const CONTENT_MIN_HEIGHT = 'min(35em, 100vh)'; + type TProps = { deviceID: string; }; @@ -53,7 +55,7 @@ export const RecoveryWords = ({ deviceID }: TProps) => { @@ -79,7 +81,7 @@ export const RecoveryWords = ({ deviceID }: TProps) => { diff --git a/frontends/web/src/routes/settings/components/advanced-settings/unlock-software-keystore.module.css b/frontends/web/src/routes/settings/components/advanced-settings/unlock-software-keystore.module.css index 2e92836d4a..18076a06b3 100644 --- a/frontends/web/src/routes/settings/components/advanced-settings/unlock-software-keystore.module.css +++ b/frontends/web/src/routes/settings/components/advanced-settings/unlock-software-keystore.module.css @@ -20,10 +20,12 @@ .chevronRight { bottom: 0; + height: var(--size-subheader); margin: auto; position: absolute; right: var(--space-quarter); top: 3px; + width: var(--size-subheader); } .ejectIconRight { diff --git a/frontends/web/src/routes/settings/components/appearance/activecurrenciesdropdown.module.css b/frontends/web/src/routes/settings/components/appearance/activecurrenciesdropdown.module.css index 417a28d4f2..17ae58220d 100644 --- a/frontends/web/src/routes/settings/components/appearance/activecurrenciesdropdown.module.css +++ b/frontends/web/src/routes/settings/components/appearance/activecurrenciesdropdown.module.css @@ -10,7 +10,8 @@ } .defaultLabel { - font-size: var(--size-smaller); + font-size: var(--size-small); margin: 0; text-transform: capitalize; + word-break: keep-all; } diff --git a/frontends/web/src/routes/settings/components/appearance/languageDropDownSetting.module.css b/frontends/web/src/routes/settings/components/appearance/languageDropDownSetting.module.css index 16adc80f15..3daac18d29 100644 --- a/frontends/web/src/routes/settings/components/appearance/languageDropDownSetting.module.css +++ b/frontends/web/src/routes/settings/components/appearance/languageDropDownSetting.module.css @@ -3,5 +3,6 @@ } .container img { - margin-right: var(--space-eight); + width: var(--size-default); + margin-right: var(--space-quarter); } \ No newline at end of file diff --git a/frontends/web/src/routes/settings/components/device-settings/factory-reset-setting.module.css b/frontends/web/src/routes/settings/components/device-settings/factory-reset-setting.module.css index 9052a9aac8..58e4db1636 100644 --- a/frontends/web/src/routes/settings/components/device-settings/factory-reset-setting.module.css +++ b/frontends/web/src/routes/settings/components/device-settings/factory-reset-setting.module.css @@ -1,10 +1,10 @@ .settingNameContainer { + align-items: center; display: flex; } .settingName { color: var(--color-swissred); - font-size: 1.6rem; margin: 0; margin-left: var(--space-quarter); } \ No newline at end of file diff --git a/frontends/web/src/routes/settings/components/mobile-header.module.css b/frontends/web/src/routes/settings/components/mobile-header.module.css index 8b5a2e7fcd..894f16ab5e 100644 --- a/frontends/web/src/routes/settings/components/mobile-header.module.css +++ b/frontends/web/src/routes/settings/components/mobile-header.module.css @@ -19,7 +19,7 @@ } .backButton img { - height: 24px; + height: var(--size-subheader); } .backButton:focus { diff --git a/frontends/web/src/routes/settings/components/settingsItem/settingsItem.module.css b/frontends/web/src/routes/settings/components/settingsItem/settingsItem.module.css index 4c9265aad6..54196f3489 100644 --- a/frontends/web/src/routes/settings/components/settingsItem/settingsItem.module.css +++ b/frontends/web/src/routes/settings/components/settingsItem/settingsItem.module.css @@ -19,10 +19,12 @@ .chevronRight { bottom: 0; + height: var(--size-subheader); margin: auto; position: absolute; right: var(--space-half); top: 3px; + width: var(--size-subheader); } .content { @@ -32,7 +34,7 @@ .primaryText { color: var(--color-default); - font-size: 1.6rem; + font-size: var(--size-default); margin: 0; } diff --git a/frontends/web/src/routes/settings/manage-accounts.module.css b/frontends/web/src/routes/settings/manage-accounts.module.css index a5d224ff0e..8ce0a75769 100644 --- a/frontends/web/src/routes/settings/manage-accounts.module.css +++ b/frontends/web/src/routes/settings/manage-accounts.module.css @@ -58,6 +58,7 @@ } .coinLogo { + display: block; position: relative; z-index: 2; } @@ -77,26 +78,28 @@ .editBtn img { margin-right: var(--space-quarter); - max-width: 18px; - height: auto; + height: var(--size-default); vertical-align: text-bottom; } .toggleLabel { - align-items: center; + align-items: baseline; display: flex; justify-content: space-between; } .toggleLabelText { + align-items: baseline; color: var(--color-secondary); + display: flex; } .toggleLabelText img { color: var(--color-secondary); margin-right: var(--space-quarter); - max-width: 18px; - vertical-align: bottom; + max-height: var(--size-default); + height: auto; + width: var(--size-default); } .toggle { @@ -150,7 +153,7 @@ .token::before { background-color: #ddd; content: ""; - height: 22px; + height: 4.2rem; left: 10px; position: absolute; top: -13px; @@ -163,6 +166,13 @@ top: -7px; } +.tokenIcon, +.token img { + background: var(--background-secondary); + outline: 5px solid var(--background-secondary); + position: relative; +} + .token img:first-child { margin-right: 0; } diff --git a/frontends/web/src/routes/settings/manage-accounts.tsx b/frontends/web/src/routes/settings/manage-accounts.tsx index d6ffbe8b7e..1a5445643f 100644 --- a/frontends/web/src/routes/settings/manage-accounts.tsx +++ b/frontends/web/src/routes/settings/manage-accounts.tsx @@ -186,7 +186,7 @@ export const ManageAccounts = ({ accounts, devices, hasAccounts }: Props) => { ({account.coinUnit})
-
+
{!account.active ? (

{t('generic.enabled_false')} @@ -288,7 +288,9 @@ export const ManageAccounts = ({ accounts, devices, hasAccounts }: Props) => { htmlFor={currentlyEditedAccount.code}> - {t('newSettings.appearance.enableAccount.title')} + + {t('newSettings.appearance.enableAccount.title')} + Date: Mon, 10 Nov 2025 18:16:50 +0100 Subject: [PATCH 18/31] frontend: improve sidebar in responsive mode Sidebar can appear on Android tablets, fixed some styles related to the sidebar component. Also removed anmiation all (transition) on sidebar labels. Kept only icons should animate opacity. --- .../src/components/keystore/connected-keystore.tsx | 7 ++++++- .../web/src/components/sidebar/sidebar.module.css | 14 +++++--------- frontends/web/src/style/layout.css | 3 ++- frontends/web/src/style/variables.css | 1 + 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/frontends/web/src/components/keystore/connected-keystore.tsx b/frontends/web/src/components/keystore/connected-keystore.tsx index 6e2c274338..f1dfc964a7 100644 --- a/frontends/web/src/components/keystore/connected-keystore.tsx +++ b/frontends/web/src/components/keystore/connected-keystore.tsx @@ -53,7 +53,12 @@ export const ConnectedKeystore = ({ <> {' '} } + icon={props => ( + + )} title={t('device.keystoreConnected')} type="success"> {connectedIconOnly ? undefined : t('device.keystoreConnected')} diff --git a/frontends/web/src/components/sidebar/sidebar.module.css b/frontends/web/src/components/sidebar/sidebar.module.css index 3a01efcbce..ddde005919 100644 --- a/frontends/web/src/components/sidebar/sidebar.module.css +++ b/frontends/web/src/components/sidebar/sidebar.module.css @@ -93,9 +93,8 @@ } .sidebarHeader { - font-size: 12px; - line-height: 1.3333; color: var(--color-secondary); + font-size: var(--size-smaller); } .sidebarIconVisible { @@ -112,15 +111,15 @@ .sidebarItem > a, .sidebarItem > button { - background-color: transparent; align-items: center; + background-color: transparent; border-radius: 2px; color: white; cursor: default; display: flex; flex-direction: row; - height: var(--sidebar-item-height); justify-content: center; + min-height: var(--sidebar-item-height); overflow: hidden; position: relative; text-decoration: none; @@ -180,15 +179,12 @@ a.sidebarActive .single img, } .sidebarLabel { - background-color: transparent; color: var(--color-light); - line-height: 1; flex: 1; - padding-top: 0; - padding-right: var(--space-default); font-size: var(--size-default); font-weight: 400; - transition: all 0.2s ease; + padding-right: var(--space-half); + padding-top: 0; word-break: break-word; } diff --git a/frontends/web/src/style/layout.css b/frontends/web/src/style/layout.css index 10792c699a..0b3b09a5db 100644 --- a/frontends/web/src/style/layout.css +++ b/frontends/web/src/style/layout.css @@ -348,14 +348,15 @@ button, textarea { } .stacked img { + display: block; transition: opacity 0.2s ease; } .stacked img:last-child { + left: 50%; opacity: 0; position: absolute; top: 0; - left: 50%; transform: translateX(-50%); } diff --git a/frontends/web/src/style/variables.css b/frontends/web/src/style/variables.css index d75032e6f6..5dcd766614 100644 --- a/frontends/web/src/style/variables.css +++ b/frontends/web/src/style/variables.css @@ -73,6 +73,7 @@ --sidebar-item-height: 52px; --sidebar-icon-margin: 14px; --sidebar-icon-size: 24px; + --sidebar-icon-size: min(2.4rem, 28px); /* header */ --header-height: 70px; From cf7362761230fcf3d45ec479b8b92252c4903ab7 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Tue, 11 Nov 2025 10:44:37 +0100 Subject: [PATCH 19/31] test: unclear what to do with view css variable overwrites --- .../web/src/components/view/view.module.css | 16 ---------------- frontends/web/src/style/variables.css | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/frontends/web/src/components/view/view.module.css b/frontends/web/src/components/view/view.module.css index 2a9ca62955..027f95ca9f 100644 --- a/frontends/web/src/components/view/view.module.css +++ b/frontends/web/src/components/view/view.module.css @@ -293,22 +293,6 @@ margin: 0 auto; } -@media (min-width: 1200px) { - .title { - --size-subheader: 2.8rem; - } - .header, - .inner p { - --size-default: 2rem; - } - .fullscreen { - --size-default: 1.8rem; - } - .inner footer p { - --size-default: 1.4rem; - } -} - .footer { align-items: center; display: flex; diff --git a/frontends/web/src/style/variables.css b/frontends/web/src/style/variables.css index 5dcd766614..5efbe40c1c 100644 --- a/frontends/web/src/style/variables.css +++ b/frontends/web/src/style/variables.css @@ -214,3 +214,20 @@ --size-default: min(1.6rem, 28px); } } +/* +@media (min-width: 1200px) { + .title { + --size-subheader: 2.8rem; + } + .header, + .inner p { + --size-default: 2rem; + } + .fullscreen { + --size-default: 1.8rem; + } + .inner footer p { + --size-default: 1.4rem; + } +} +*/ \ No newline at end of file From 089668fc4596f2988661fb01dde98f9c4d4c46a2 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Tue, 11 Nov 2025 11:41:18 +0100 Subject: [PATCH 20/31] frontend: improve all-accounts overlay in responsive mode --- .../web/src/routes/accounts/all-accounts.module.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontends/web/src/routes/accounts/all-accounts.module.css b/frontends/web/src/routes/accounts/all-accounts.module.css index 4eaa17d6a9..f8c8c44d6d 100644 --- a/frontends/web/src/routes/accounts/all-accounts.module.css +++ b/frontends/web/src/routes/accounts/all-accounts.module.css @@ -1,7 +1,6 @@ .container { display: flex; flex-direction: column; - font-size: var(--size-small); gap: var(--space-half); width: 100%; } @@ -57,7 +56,7 @@ flex-basis: auto; flex-shrink: 0; flex-grow: 1; - font-size: 1.6rem; + font-size: var(--size-default); justify-content: flex-end; margin-left: auto; overflow: hidden; @@ -67,12 +66,13 @@ .chevron { color: var(--color-mediumgray); flex-shrink: 0; - font-size: 1.8rem; - margin-left: 4px; - margin-top: 6px; margin-right: -8px; } +.chevron img { + display: block; +} + .emptyState { display: flex; flex-direction: column; From 5729c43279d2a7f989a8cad26a6c49c300ab86f2 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Tue, 11 Nov 2025 11:51:46 +0100 Subject: [PATCH 21/31] frontend: make account-overview responsive Visually changed search input height also in default mode, so it uses the same height as all other input fields. --- .../amount/conversion-amount.module.css | 8 +- .../headerssync/headerssync.module.css | 3 +- .../components/details.module.css | 90 +++++++++++++++++++ .../transactions/transaction.module.css | 6 +- .../web/src/routes/account/account.module.css | 13 +-- .../src/routes/account/info/info.module.css | 1 + 6 files changed, 103 insertions(+), 18 deletions(-) create mode 100644 frontends/web/src/components/transactions/components/details.module.css diff --git a/frontends/web/src/components/amount/conversion-amount.module.css b/frontends/web/src/components/amount/conversion-amount.module.css index 56a03653f4..ec24484d86 100644 --- a/frontends/web/src/components/amount/conversion-amount.module.css +++ b/frontends/web/src/components/amount/conversion-amount.module.css @@ -15,18 +15,18 @@ .txUnit { color: var(--color-secondary); font-size: var(--size-small); - line-height: 1.285714; + /* line-height: 1.285714; */ white-space: nowrap; } .txConversionAmount .txUnit { - font-size: 1.2rem; + font-size: var(--size-smaller); flex-shrink: 0; } .txSmallInlineIcon img { - max-height: 15px; - max-width: 15px; + max-height: 1.5rem; + max-width: 1.5rem; vertical-align: text-bottom; } .txConversionAmount .txSmallInlineIcon { diff --git a/frontends/web/src/components/headerssync/headerssync.module.css b/frontends/web/src/components/headerssync/headerssync.module.css index 1bd4dcca90..34f9268af4 100644 --- a/frontends/web/src/components/headerssync/headerssync.module.css +++ b/frontends/web/src/components/headerssync/headerssync.module.css @@ -19,7 +19,7 @@ } .syncMessage { - height: 16px; + height: var(--size-default); width: 100%; max-width: var(--content-width); font-size: var(--size-smaller); @@ -32,7 +32,6 @@ .syncText { display: inline-block; - height: 100%; font-variant: tabular-nums; } diff --git a/frontends/web/src/components/transactions/components/details.module.css b/frontends/web/src/components/transactions/components/details.module.css new file mode 100644 index 0000000000..fb041d2beb --- /dev/null +++ b/frontends/web/src/components/transactions/components/details.module.css @@ -0,0 +1,90 @@ +.currencyUnit { + color: var(--color-secondary); + font-variant: normal; +} + +.detail, +.detailInput { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + min-height: var(--item-height); + padding: var(--space-half); +} + +.detailInput { + padding: 0 0 0 var(--space-half); +} + +.detailInput label { + flex-shrink: 0; + margin-bottom: 0; +} + +.textOnlyInput { + margin: 0; +} + +.textOnlyInput input { + border: none; +} + +.editButton { + background: none; + border: none; + height: 20px; + margin-right: var(--space-half); + padding: 0; + -webkit-appearance: none; + width: 20px; +} + +.editButton:focus { + outline: none; +} + +.editButton img { + opacity: 0.4; + vertical-align: text-bottom; + outline: none; +} + +.editButton:hover img { + opacity: 0.55; +} + + +.detail:not(:first-child) { + border-top: solid 1px var(--background); +} + +.detail label { + margin-right: var(--space-half) !important; + word-break: keep-all; +} + +.detail label, +.detail p { + margin: 0; + line-height: 1; +} + +.detail.addresses { + align-items: baseline; + padding-bottom: 0; + padding-right: 0; + padding-top: 0; +} + +.addresses label { + padding: var(--space-half) 0; +} + +.detailAddresses { + flex-grow: 1; +} + +.detailAddress + .detailAddress { + margin-top: calc(var(--space-quarter) * -1); +} diff --git a/frontends/web/src/components/transactions/transaction.module.css b/frontends/web/src/components/transactions/transaction.module.css index b6d8cff977..b883589fde 100644 --- a/frontends/web/src/components/transactions/transaction.module.css +++ b/frontends/web/src/components/transactions/transaction.module.css @@ -81,7 +81,7 @@ .txAmount { align-items: baseline; - font-size: 1.6rem; + font-size: var(--size-default); font-variant: tabular-nums; gap: 3px; justify-content: flex-end; @@ -116,7 +116,7 @@ } .txNoteText { color: var(--color-default); - font-size: 1.6rem; + font-size: var(--size-default); line-height: 1.25; } @media (max-width: 560px) { @@ -180,7 +180,7 @@ } .txType { color: var(--color-default); - font-size: 1.6rem; + font-size: var(--size-default); line-height: 1.25; } diff --git a/frontends/web/src/routes/account/account.module.css b/frontends/web/src/routes/account/account.module.css index 072f5e509f..a81079fda6 100644 --- a/frontends/web/src/routes/account/account.module.css +++ b/frontends/web/src/routes/account/account.module.css @@ -32,7 +32,7 @@ } .loupe { - width: 17px; + width: var(--size-default); } @media (max-width: 768px) { @@ -54,7 +54,6 @@ } .actionsContainer { - --size-default: 1.4rem; display: flex; flex-grow: 1; flex-shrink: 0; @@ -88,9 +87,9 @@ } .accountIcon { - width: 18px; - height: 18px; + height: var(--size-default); margin-right: var(--space-eight); + width: var(--size-default); } .errorLoadTransactions { @@ -102,7 +101,7 @@ color: var(--color-secondary); display: flex; justify-content: space-between; - margin-bottom: var(--space-quarter) !important; /* overwrite default subTitle margin */ + margin-bottom: 0 !important; /* overwrite default subTitle margin */ } .titleWithButton button { padding-left: var(--space-half); @@ -181,10 +180,6 @@ width: 100%; } -.searchInput input { - height: 40px; -} - .searchInput:focus { outline: none; border-color: var(--color-primary); diff --git a/frontends/web/src/routes/account/info/info.module.css b/frontends/web/src/routes/account/info/info.module.css index 157e6eeacd..e3dd4546b3 100644 --- a/frontends/web/src/routes/account/info/info.module.css +++ b/frontends/web/src/routes/account/info/info.module.css @@ -43,6 +43,7 @@ .entry { align-items: baseline; display: flex; + flex-wrap: wrap; justify-content: space-between; margin-bottom: var(--space-half); } From 9e72fbb6c402dcdd51098fd26ad7f8e609abb9de Mon Sep 17 00:00:00 2001 From: thisconnect Date: Tue, 11 Nov 2025 15:30:24 +0100 Subject: [PATCH 22/31] frontend: make recieve view responsive --- .../routes/account/receive/receive.module.css | 25 +++++++------------ .../src/routes/account/receive/receive.tsx | 16 ++++++------ 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/frontends/web/src/routes/account/receive/receive.module.css b/frontends/web/src/routes/account/receive/receive.module.css index e2578d1cdd..02c17887d0 100644 --- a/frontends/web/src/routes/account/receive/receive.module.css +++ b/frontends/web/src/routes/account/receive/receive.module.css @@ -19,21 +19,6 @@ min-height: 260px; } -.arrowLeft, -.arrowRight { - width: 16px; - position: relative; - top: 3px; -} - -.arrowLeft { - margin-right: 3px; -} - -.arrowRight { - margin-left: 3px; -} - .previous, .next { appearance: none; @@ -46,6 +31,13 @@ text-decoration: none; } +.previous img, +.next img { + display: block; + height: min(2.4rem, 36px); + width: min(2.4rem, 36px); +} + .hide { position: absolute; top: 0; @@ -62,11 +54,12 @@ color: var(--color-secondary); cursor: pointer; display: inline-block; + font-size: var(--size-small); text-align: center; text-decoration: underline; padding: var(--space-quarter); } .messageContainer { - margin-top: var(--spacing-default); + margin-top: var(--spacing-half); } \ No newline at end of file diff --git a/frontends/web/src/routes/account/receive/receive.tsx b/frontends/web/src/routes/account/receive/receive.tsx index ce9351d8be..1a278519c2 100644 --- a/frontends/web/src/routes/account/receive/receive.tsx +++ b/frontends/web/src/routes/account/receive/receive.tsx @@ -75,11 +75,9 @@ const AddressTypeDialog = ({ {t(`receive.scriptType.${scriptType}`)} {scriptType === 'p2tr' && addressType === i && ( -

- - {t('receive.taprootWarning')} - -
+ + {t('receive.taprootWarning')} + )}
))} @@ -237,9 +235,9 @@ export const Receive = ({ className={style.previous} onClick={previous}> {(verifying || activeIndex === 0) ? ( - + ) : ( - + )} )} @@ -251,9 +249,9 @@ export const Receive = ({ className={style.next} onClick={e => next(e, currentAddresses.length)}> {(verifying || activeIndex >= currentAddresses.length - 1) ? ( - + ) : ( - + )} )} From d4cacd451c79af5acf2f6cdf375cf07000935ce6 Mon Sep 17 00:00:00 2001 From: thisconnect Date: Wed, 12 Nov 2025 10:44:40 +0100 Subject: [PATCH 23/31] frontend: improve send view in responsive mode --- .../mobile-fullscreen-selector.module.css | 1 + .../forms/input-with-dropdown.module.css | 8 +++--- .../account/send/coin-control.module.css | 6 ++++ .../src/routes/account/send/coin-control.tsx | 3 +- .../components/confirm/confirm.module.css | 3 ++ .../send/components/confirm/confirm.tsx | 4 ++- .../inputs/receiver-address-input.module.css | 16 ++++------- .../src/routes/account/send/send.module.css | 28 ++++++++++++++++--- .../web/src/routes/account/send/send.tsx | 26 +++++++++-------- .../src/routes/account/send/utxos.module.css | 9 ++++-- frontends/web/src/style/variables.css | 1 + 11 files changed, 70 insertions(+), 35 deletions(-) create mode 100644 frontends/web/src/routes/account/send/coin-control.module.css diff --git a/frontends/web/src/components/dropdown/mobile-fullscreen-selector.module.css b/frontends/web/src/components/dropdown/mobile-fullscreen-selector.module.css index 1b44160753..3ec28ee1bf 100644 --- a/frontends/web/src/components/dropdown/mobile-fullscreen-selector.module.css +++ b/frontends/web/src/components/dropdown/mobile-fullscreen-selector.module.css @@ -78,6 +78,7 @@ text-align: center; left: 50%; transform: translateX(-50%); + width: calc(100% - 87px); } .searchContainer { diff --git a/frontends/web/src/components/forms/input-with-dropdown.module.css b/frontends/web/src/components/forms/input-with-dropdown.module.css index 2e86907ff3..1a0b821b55 100644 --- a/frontends/web/src/components/forms/input-with-dropdown.module.css +++ b/frontends/web/src/components/forms/input-with-dropdown.module.css @@ -16,12 +16,12 @@ input.inputField { font-family: var(--font-family); font-size: var(--size-default); font-weight: 400; - height: 52px !important; + height: var(--input-height); padding: 0 var(--space-half); width: 100%; transition: border-color .2s ease-out; will-change: border-color; - padding-left: 50px; + padding-left: var(--input-qr-button); padding-right: 0; } @@ -79,7 +79,7 @@ input.inputField::placeholder { .dropdown :global(.react-select__single-value) { color: var(--color-blue); display: flex; - font-size: 14px; + font-size: var(--size-small); justify-content: flex-end; max-width: 100%; overflow: hidden; @@ -117,7 +117,7 @@ input.inputField::placeholder { border: 1px solid var(--background-quaternary); border-left: hidden; display: flex; - height: 52px; + height: var(--input-height); justify-content: center; padding-left: 0; transition: border-color .2s ease-out; diff --git a/frontends/web/src/routes/account/send/coin-control.module.css b/frontends/web/src/routes/account/send/coin-control.module.css new file mode 100644 index 0000000000..59bc2de0a4 --- /dev/null +++ b/frontends/web/src/routes/account/send/coin-control.module.css @@ -0,0 +1,6 @@ +.coinControlButton { + font-size: var(--size-subheader); + min-height: 0; + padding-left: 0; + padding-right: 0; +} diff --git a/frontends/web/src/routes/account/send/coin-control.tsx b/frontends/web/src/routes/account/send/coin-control.tsx index 48e124d13d..d369ff9aba 100644 --- a/frontends/web/src/routes/account/send/coin-control.tsx +++ b/frontends/web/src/routes/account/send/coin-control.tsx @@ -21,6 +21,7 @@ import { getConfig } from '@/utils/config'; import { Button } from '@/components/forms'; import { TSelectedUTXOs, UTXOs } from './utxos'; import { isBitcoinBased } from '../utils'; +import style from './coin-control.module.css'; type TProps = { account: TAccount; @@ -68,7 +69,7 @@ export const CoinControl = ({ }} onChange={onSelectedUTXOsChange} />