diff --git a/src/pages/card/ui/CardPage.module.css b/src/pages/card/ui/CardPage.module.css index d1fb713..c7171ed 100644 --- a/src/pages/card/ui/CardPage.module.css +++ b/src/pages/card/ui/CardPage.module.css @@ -1,3 +1,30 @@ +.card { + position: relative; + width: 100%; + max-width: 28rem; +} +.cardActions { + position: absolute; + top: 4.5rem; + right: clamp(1.1rem, 3vw, 1.6rem); + padding: 4px; + border: 1px solid var(--mantine-color-gray-3); + border-radius: var(--mantine-radius-lg); + background: var(--mantine-color-white); + box-shadow: 0 3px 12px #0000001a; +} +@media (hover: hover) and (pointer: fine) { + .cardActions { + opacity: 0; + pointer-events: none; + } + .card:hover .cardActions, + .card:focus-within .cardActions { + opacity: 1; + pointer-events: auto; + } +} + .wrap { overflow-wrap: anywhere; min-width: 0; @@ -21,7 +48,21 @@ .operations[data-pending] { opacity: 0.55; } +@media (pointer: coarse) { + .cardActions button { + min-width: 36px; + min-height: 36px; + } +} @media (prefers-reduced-motion: no-preference) { + .cardActions { + transition: opacity 180ms ease; + } + .page button { + transition: + background-color 180ms ease, + color 180ms ease; + } .operations { animation: operations-appear 200ms ease-out; transition: opacity 150ms ease; diff --git a/src/pages/card/ui/CardPage.view.tsx b/src/pages/card/ui/CardPage.view.tsx index 74c0c9f..61305c1 100644 --- a/src/pages/card/ui/CardPage.view.tsx +++ b/src/pages/card/ui/CardPage.view.tsx @@ -4,7 +4,6 @@ import { Button, Group, Pagination, - Paper, Select, Skeleton, Stack, @@ -124,41 +123,76 @@ const CardPageView: FC = (props) => { ); } return ( - - - - - {card.name} - + + + + {card.name} + +
- {t("bank.manualBalance")} - - - - + + - {vm.archiveError ? ( - void vm.card.refetch()} - /> - ) : null} - {card.archivedAt && {t("bank.archiveHint")}} - - +
+ {vm.archiveError ? ( + void vm.card.refetch()} + /> + ) : null} + {card.archivedAt && {t("bank.archiveHint")}} +
{vm.card.isError && ( {t("bank.refreshError")} @@ -185,7 +219,30 @@ const CardPageView: FC = (props) => { retry={() => void vm.summary.refetch()} /> - {t("bank.operations")} + + {t("bank.operations")} + vm.setOperation("new")} + > + + +