From 70676538afd016e95d7cc3f8d566ad6300059299 Mon Sep 17 00:00:00 2001 From: sairaj mote Date: Thu, 1 Oct 2020 03:47:55 +0530 Subject: [PATCH] 0.0.46 --- css/main.css | 145 ++++++++++++++++++++--- css/main.min.css | 2 +- css/main.scss | 193 +++++++++++++++++++++++++------ index.html | 294 +++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 558 insertions(+), 76 deletions(-) diff --git a/css/main.css b/css/main.css index 656009f..587e74f 100644 --- a/css/main.css +++ b/css/main.css @@ -39,6 +39,9 @@ body[data-theme=dark] { body[data-theme=dark] .balance:nth-of-type(3) { color: rgba(var(--text-color), 1); } +body[data-theme=dark] .person .person-initials { + color: rgba(var(--text-color), 0.9) !important; +} a { font-weight: 600; @@ -195,6 +198,10 @@ button:disabled ~ .loader { transform: none !important; } +sm-button[variant=outlined] { + --accent-color: rgba(var(--text-color), 1); +} + .loader { fill: none; stroke-width: 10; @@ -622,7 +629,7 @@ details p { box-shadow: 0 0 0 0.4rem rgba(var(--text-color), 0.1) inset; } .balance:nth-of-type(2) { - background: url(bg-art1.svg), linear-gradient(135deg, #fd946a, #ff4857); + background: url(bg-art1.svg) left bottom, linear-gradient(135deg, #fd946a, #ff4857); background-size: cover; } .balance:nth-of-type(2) .tooltip { @@ -631,7 +638,7 @@ details p { .balance:nth-of-type(3) { grid-area: flo; color: rgba(var(--foreground-color), 1); - background: url(bg-art3.svg) bottom no-repeat, linear-gradient(270deg, #2f69e6, #1b0980); + background: url(bg-art3.svg) center no-repeat, linear-gradient(270deg, #2f69e6, #1b0980); background-size: cover; } .balance:nth-of-type(3) .tooltip { @@ -689,7 +696,8 @@ details p { padding: 1.5rem; gap: 2rem 0.2rem; } -.options-tab .option { + +.option { position: relative; display: flex; flex-direction: column; @@ -702,7 +710,7 @@ details p { -webkit-tap-highlight-color: transparent; cursor: pointer; } -.options-tab .option .icon { +.option .icon { height: 3rem; width: 3rem; background: rgba(var(--text-color), 0.06); @@ -710,12 +718,12 @@ details p { padding: 0.8rem; margin-bottom: 0.6rem; } -.options-tab .option h4 { +.option h4 { font-size: 0.85rem; opacity: 0.8; font-weight: 500; } -.options-tab .option:active { +.option:active { transform: scale(0.95); } @@ -1102,6 +1110,10 @@ sm-panel { grid-template-areas: "icon type amount" "icon receiver time"; align-items: center; cursor: pointer; + transition: transform 0.3s; +} +.activity:active { + transform: scale(0.95); } .activity .icon { grid-area: icon; @@ -1220,20 +1232,124 @@ sm-panel { width: max-content; } -#transaction_page .grid:first-of-type { +#transaction_page header { padding: 0.5rem 0; - grid-template-columns: auto 1fr; - grid-template-areas: "back ." "back ."; } -#transaction_page .grid:first-of-type .back-arrow { +#transaction_page header .back-arrow { grid-area: back; } -#transaction_page .grid:first-of-type h4 { +#transaction_page header h4 { text-transform: capitalize; } -#transaction_page .grid:first-of-type h5 { +#transaction_page h5 { font-weight: 400; font-family: "Roboto", sans-serif; + opacity: 0.8; + margin-bottom: 0.2rem; + text-transform: capitalize; +} +#transaction_page #transaction_details { + position: relative; + margin: 1.5rem 0; + padding: 1.5rem; + background-color: rgba(var(--text-color), 0.06); + max-width: 50ch; + border-radius: 0.5rem; +} +#transaction_page #transaction_details .icon { + height: 4rem; + width: 4rem; + padding: 1.2rem; + border-radius: 4rem; + background: rgba(var(--text-color), 0.06); + margin-bottom: 2rem; +} +#transaction_page #transaction_details .flex { + margin-bottom: 1rem; + align-items: baseline; +} +#transaction_page #transaction_details strong { + font-weight: 500; +} +#transaction_page #transaction_details strong:not(:last-of-type) { + margin-bottom: 1rem; +} +#transaction_page .transaction-amount { + font-size: 2rem; + font-weight: 400; +} +#transaction_page #transaction_time { + right: 0; + position: absolute; + margin: 1.5rem; +} + +#people_container { + display: grid; + grid-template-columns: repeat(4, 1fr); + padding: 1.5rem; + gap: 2rem 0.2rem; +} + +#add_person_btn { + cursor: pointer; + display: flex; + flex-direction: column; + text-align: center; + transition: transform 0.3s; + font-size: 0.85rem; + opacity: 0.8; + font-weight: 500; +} +#add_person_btn:active { + transform: scale(0.95); +} +#add_person_btn .icon { + height: 3rem; + width: 3rem; + border-radius: 2rem; + padding: 1rem; + background: rgba(var(--text-color), 0.06); + align-self: center; + margin-bottom: 0.4rem; +} + +.person { + display: flex; + flex-direction: column; + align-items: center; + cursor: pointer; + transition: transform 0.3s; + width: 5rem; +} +.person:active { + transform: scale(0.95); +} +.person .person-initials { + display: flex; + justify-content: center; + height: 3rem; + width: 3rem; + font-size: 1.2rem !important; + font-weight: 500; + align-items: center; + border-radius: 2rem; + margin-bottom: 0.4rem !important; + text-transform: uppercase; +} +.person .person-name { + font-size: 0.85rem; + opacity: 0.8; + font-weight: 500; + text-transform: capitalize; + text-align: center; +} + +#person_popup h3 { + text-transform: capitalize; +} +#person_popup .copy-row { + margin-bottom: 1.5rem; } #activity_page .empty-state, @@ -1278,6 +1394,9 @@ sm-panel { #transaction_page { padding-top: 0; } + #transaction_page header { + padding: 1.5rem 0; + } } @media only screen and (min-width: 640px) { .hide-on-desktop { @@ -1358,7 +1477,7 @@ sm-panel { margin-top: 1rem; } - .options-tab { + .options-tab, #people_container { grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr)); gap: 2rem 0.8rem; } diff --git a/css/main.min.css b/css/main.min.css index 8ab6f09..25b0922 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -*,.activity .activity-amount,.balance h4{font-family:Roboto,sans-serif}a,h1,h2,h3,h4,h5{font-weight:600}.select,button{border-radius:.3rem}.options-tab .option,button{-webkit-tap-highlight-color:transparent;text-transform:capitalize}.action,button{position:relative}.icon,.loader{overflow:visible}*{box-sizing:border-box;padding:0;margin:0}button,h1,h2,h3,h4,h5{font-family:Poppins,sans-serif}:root{scroll-behavior:smooth}body{--accent-color:#4527A0;--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:rgba(var(--foreground-color), 1);--dark-shade:#f4f4f4;--hue:255;--saturation:61%;--lightness:39%;color:rgba(var(--text-color),1);font-size:16px;background-size:cover}body[data-theme=dark]{--accent-color:#a293d0;--text-color:238,238,238;--text-color-light:170,170,170;--foreground-color:26,26,26;--background-color:#111;--dark-shade:#222;--hue:255;--saturation:39%;--lightness:70%;background-color:var(--background-color)}body[data-theme=dark] .balance:nth-of-type(3){color:rgba(var(--text-color),1)}a{text-decoration:none;color:var(--accent-color)}.dark-text{color:#111}h1{font-size:3.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1rem}h5{font-size:.8rem}p{line-height:1.5;max-width:60ch;color:rgba(var(--text-color),.9)}strong{font-weight:500}button{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.2rem;font-weight:600;cursor:pointer;color:var(--accent-color);transition:transform .3s;border:none;background:rgba(var(--text-color),.1)}.action,.align-center{align-items:center}button:focus{outline:solid thin}button:disabled{cursor:default;background:rgba(var(--text-color),.5)}.action,.action[disabled] .primary-btn{background:0 0}button:disabled~.loader{opacity:0}::-moz-focus-inner{border:none}.bottom-padding{padding-bottom:1.5rem}.top-padding{padding-top:1em}.bottom-margin{margin-bottom:1.5rem}.top-margin{margin-top:1.5rem}.flex{display:flex}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}#confirmation,#prompt,.direction-column{flex-direction:column}.justify-right{margin-left:auto}.space-between{justify-content:space-between}.label{margin-bottom:.4rem}.light-text{opacity:.7}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.breakable{word-break:break-all}.separator{padding:.1em}.no-transformations{transform:none!important}.loader{fill:none;stroke-width:10;stroke:var(--accent-color);height:2rem;width:2rem;stroke-dashoffset:230;stroke-dasharray:230;padding:2px;justify-self:center}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes load{50%{stroke-dashoffset:0}100%{stroke-dashoffset:-210}}.action{display:inline-flex;justify-content:center;padding:0}.container-header,.logo,.popup-header{align-items:center}.action h4{padding:.5rem 1.2rem;font-size:.9rem;clip-path:circle(100%);transition:clip-path .3s;border-radius:.2rem}.action .btn{z-index:2}.action .loader{position:absolute;z-index:1;padding:.4em}.clip{clip-path:circle(0)!important}.animate-loader{animation:load 2.6s infinite,rotate 1s infinite linear}.expand{width:100%}.fade-left{animation:fadeleft .3s}.fade-right{animation:faderight .3s}@keyframes faderight{from{opacity:0;transform:translateX(-1em)}to{opacity:1;transform:none}}@keyframes fadeleft{from{opacity:0;transform:translateX(1em)}to{opacity:1;transform:none}}.logo{display:flex}.logo h4{font-weight:500;font-size:clamp(1.1rem,2vw,1.2rem)}.logo .main-logo{height:clamp(1.4rem,2vw,1.6rem);width:clamp(1.4rem,2vw,1.6rem);fill:rgba(var(--text-color),1);stroke:none;margin-right:.2rem}textarea{width:100%;max-width:100%;background:rgba(var(--text-color),.1);border:none;border-radius:.2rem;resize:none;font-size:1rem;line-height:1.6;padding:.8rem}:empty+.empty-state{display:grid}.empty-state{display:none;place-items:center;width:100%}.empty-state svg{stroke:rgba(var(--text-color),.8);height:12em;width:12em}.container-header{display:flex;flex-direction:row;width:100%;padding:1rem 0}.container-header h2{flex:1}.container-header button{align-self:center}.btn{background:var(--accent-color);color:rgba(var(--foreground-color),1);padding:.4em 1em}.back-arrow{stroke:rgba(var(--text-color),1);fill:none;height:2rem;cursor:pointer}.card{border-radius:.6rem;padding:1.5em;background:rgba(var(--foreground-color),1)}.solid-background{background:rgba(var(--foreground-color),1)!important}#confirmation p,#prompt p{margin:1rem}#confirmation h4,#prompt h4{font-weight:500;margin-bottom:1.5rem}#confirmation .flex sm-button:first-of-type,#prompt .flex sm-button:first-of-type{margin-right:.6em;margin-left:auto}.refresh{margin-top:.6em;margin-bottom:1em}sm-popup .illustration{position:relative;height:4rem;width:4rem;padding:1rem;stroke:var(--accent-color);margin-bottom:1rem;border-radius:5rem;background:rgba(var(--text-color),.06)}sm-popup sm-input:not(:last-of-type){margin-bottom:1rem}sm-popup p{margin-block-end:1rem}sm-popup .action h4{padding:.5rem 1rem;font-weight:500}sm-popup .message{margin-bottom:.2rem}sm-popup .message+.copy-row{margin-bottom:1.5rem}sm-popup h5:not(.tag){font-family:Roboto,sans-serif;margin-bottom:.4rem;margin-top:1rem;font-weight:500}.popup-header{padding:1.5rem;padding-bottom:0;display:flex;width:100%}.popup-header .icon{margin-right:1rem;padding:.2rem;stroke-width:10;cursor:pointer}.popup-header button{width:auto;margin-left:auto}#sign_in_popup button,sm-tab-header{margin:1rem 0}details,summary{margin-bottom:1rem}summary{cursor:pointer}details h5{line-height:.6;margin-bottom:0;margin-top:1.2rem!important}details p{font-size:.9rem;line-height:1.4}#sign_in_popup::part(background){background:rgba(var(--foreground-color),1)}#sign_in_popup h3{margin-top:2rem}#sign_in_popup h4{font-weight:500;margin-bottom:3rem}#sign_in_popup p{margin-top:1rem;margin-bottom:0!important}.primary-btn{background:var(--accent-color);justify-content:center;color:rgba(var(--foreground-color),1)}#main_header{align-items:center;padding:clamp(1rem,2vw,2rem) 1rem;justify-content:space-between}.icon{height:1.2rem;width:1.2rem;fill:none;stroke:rgba(var(--text-color),.8);stroke-width:6;stroke-linecap:round;stroke-linejoin:round}#navbar{display:flex;flex-direction:row;align-items:center;justify-content:space-evenly;position:fixed;left:0;right:0;bottom:0;top:auto;z-index:3;background:rgba(var(--foreground-color),1);box-shadow:0 -.5rem 1rem #00010;border-radius:1rem 1rem 0 0}#navbar .navbar-item{position:relative;text-align:center;cursor:pointer;padding:.3rem;padding-top:.8rem;border-radius:.4em;opacity:.6;color:rgba(var(--text-color),1);font-size:.8em;text-transform:capitalize;width:100%;font-weight:600}#navbar .navbar-item h5{margin-top:.4em}#navbar .navbar-item .icon{stroke:rgba(var(--text-color),1)}#navbar .active{opacity:1}.banking{stroke-width:4}#home_page{padding:0 0 4rem}#home_page .left{width:auto;border-radius:.6rem}#home_page .left h3,#home_page .left h4,#home_page .left p{padding:0 1.5rem}#home_page .left h3{font-size:2rem;margin-bottom:1rem}.user-panel{position:relative;padding:1.5rem;padding-top:1rem;align-self:flex-start}.request .action,.request button{align-self:flex-end}.user-panel .icon{stroke:rgba(var(--foreground-color),1)}.user-panel sm-button{border-radius:2rem}.display-balance{grid-template-columns:1fr 1fr;grid-template-areas:". ." "flo flo";gap:.8rem;margin-top:1rem}.display-balance .icon{height:1.4rem;width:1.4rem;padding:.3rem;stroke-width:10;cursor:pointer}.balance{height:10rem;position:relative;display:flex;flex-direction:column;border-radius:1rem;padding:1rem;justify-content:flex-end}.balance h4{font-size:2.5rem;font-weight:500;text-shadow:1px .1rem .2rem #00040;word-break:break-all;flex:1}.balance h5{opacity:.8;margin-bottom:.2rem}.balance .tooltip{border-radius:1rem;color:rgba(var(--text-color),1);margin-left:auto}.balance:nth-of-type(1){background:url(bg-art2.svg) bottom,linear-gradient(200deg,rgba(var(--text-color),.1),rgba(var(--text-color),.2));background-size:cover}.balance:nth-of-type(1) .tooltip{box-shadow:0 0 0 .4rem rgba(var(--text-color),.1) inset}.balance:nth-of-type(2){background:url(bg-art1.svg),linear-gradient(135deg,#fd946a,#ff4857);background-size:cover}.balance:nth-of-type(2) .tooltip{box-shadow:0 0 0 .4rem #ff4857 inset}.balance:nth-of-type(3){grid-area:flo;color:rgba(var(--foreground-color),1);background:url(bg-art3.svg) bottom no-repeat,linear-gradient(270deg,#2f69e6,#1b0980);background-size:cover}.page .container-header,.tooltip{top:0;background:rgba(var(--foreground-color),1)}.balance:nth-of-type(3) .tooltip{box-shadow:0 0 0 .4rem #1b0980 inset}.tooltip{position:absolute;left:0;right:0;bottom:0;cursor:help;display:flex;flex-direction:column;z-index:1;transition:clip-path .4s ease-out;clip-path:circle(.8rem at calc(100% - 1.5rem) 1.4rem);scrollbar-width:thin}.tooltip .tt-icon{display:inline-flex;width:3rem;height:3rem;align-items:center;justify-content:center;margin-left:auto;font-weight:600}.tooltip .tooltip-text{padding:1rem;padding-top:0;line-height:1.4;font-size:.9rem;font-weight:400;overflow-y:auto;max-height:calc(100% - 3rem);max-width:30ch}.tooltip:hover{clip-path:circle(100%)}.user-type{font-weight:500}.options-tab{display:grid;grid-template-columns:repeat(4,1fr);padding:1.5rem;gap:2rem .2rem}.options-tab .option{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;border-radius:.4rem;width:5rem;transition:transform .3s;cursor:pointer}.options-tab .option .icon{height:3rem;width:3rem;background:rgba(var(--text-color),.06);border-radius:2rem;padding:.8rem;margin-bottom:.6rem}.options-tab .option h4{font-size:.85rem;opacity:.8;font-weight:500}.options-tab .option:active{transform:scale(.95)}.request-icon{transform:rotate(180deg)}.notification-dot::after{content:"";position:absolute;z-index:1;top:0;right:0;height:.6em;width:.6em;background-color:#E53935;border-radius:.4em;transition:transform .3s}.shrink.notification-dot::after{transform:scale(0)}#deposit .container-header,#withdraw .container-header{background:linear-gradient(rgba(var(--foreground-color),1) 90%,transparent)}sm-tab-header{position:sticky;top:0;display:inline-flex;background-color:var(--dark-shade);z-index:2;padding:.3rem;border-radius:3rem}sm-tab{text-transform:capitalize}sm-tab::part(tab){padding:.4rem 1.2rem}sm-panel{width:100%}.request{display:inline-flex;flex-direction:column;padding:1.5em;border-radius:.4em;border:1px solid}.request h5{margin-bottom:.2rem;text-transform:capitalize}.request h3,.request h4{margin-bottom:1.5rem}.copy-row h4,.request button{margin-bottom:0}.request h4:last-of-type{margin-bottom:0}.request .amount{font-size:1.4em}.request button{width:auto;margin-top:1.5rem}.request .copy-row{margin-bottom:1.5rem}.request .flex{align-items:center;justify-content:flex-end;margin-top:1.5rem}.request .flex button,.request .flex h5{margin:0}.deposited{color:#007732}.decline-request{margin-right:.5rem!important}.withdrawn{color:#d43125}.container{display:grid;gap:1em;width:100%;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.copy-row,.page .container-header{display:grid;grid-template-columns:1fr auto}.page{padding:1rem 1.5rem;padding-bottom:5rem}.page .container-header{grid-template-areas:". ." "search search";gap:1rem;will-change:auto;z-index:2}.page .container-header .search{grid-area:search}.page .container-header .search input{padding:1em;border:none;width:100%;background:var(--dark-shade);font-size:1rem;font-weight:500;color:rgba(var(--text-color),1);border-radius:.2em}.page .container-header .search input:focus{outline:0;background:rgba(var(--text-color-light),.2)}.copy-row{align-items:center;gap:.5rem;width:auto}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time{margin-bottom:1.5rem!important;font-weight:500}#report_popup{width:32rem}#profile_page{display:flex;flex-direction:column}#profile_page button{align-self:flex-start}.complaint{display:grid;gap:1.5rem 0}.complaint .complaint-actions{align-items:center;margin:1.5rem 0 0}#helpline_page sm-select,.complaint .processed,.complaint .unprocessed{margin-bottom:1.5rem}.complaint .processed{color:#007732}.complaint .unprocessed{color:#d43125}#settings_page p,#transaction_result h5,.activity .activity-time{color:rgba(var(--text-color),.7)}.complaint button .icon{padding:.2rem;margin-right:.5rem;stroke:var(--accent-color);stroke-width:8}.complaints-container{padding-top:1.5rem;display:grid;align-items:flex-start;gap:1.5rem}.complaint-placeholder{animation:pulse infinite .6s alternate}.complaint-placeholder h4,.complaint-placeholder h5{border-radius:.2rem}.complaint-placeholder h5{background:rgba(var(--text-color),.1);padding:.5rem .6rem}.complaint-placeholder h4{background:rgba(var(--text-color),.2);padding:.8rem}.complaint-placeholder .demo-btn{padding:.8rem 3rem}@keyframes pulse{from{opacity:.4}to{opacity:1}}#main_loader{text-align:center;place-content:center;height:100vh;width:100vw;position:fixed;left:0}#main_loader sm-button{margin-left:0;margin-top:1rem}#main_loader svg{height:2rem;width:2rem;stroke:var(--accent-color);stroke-width:6;fill:none;overflow:visible;stroke-linecap:round;stroke-dashoffset:210;stroke-dasharray:210;justify-self:center;align-self:center;margin-bottom:2rem}.activity,.select{align-items:center}#main_loader h3{width:100%;font-weight:400;word-spacing:.16em}#upi_txId_section .copy-row{margin-bottom:1.5rem}@keyframes popup{0%{stroke-dashoffset:50;transform:translateY(4rem) scale(.2,.6)}40%,41%{transform:translateY(0) scale(.2)}50%{stroke-dashoffset:50;transform:translateY(0) scale(1)}100%{stroke-dashoffset:0}}#transaction_result{z-index:12}#transaction_result::part(popup){background-image:url(card-back.svg);background-size:cover;background-position-y:-3rem;background-repeat:no-repeat}.activity,.activity .icon{background:rgba(var(--text-color),.06)}#transaction_result #transaction_heading{margin-bottom:2rem}#transaction_result .copy-row{grid-template-areas:"label label" ". .";margin-top:1rem;gap:0 1rem}#transaction_result .copy-row h4{font-weight:500}#transaction_result h5{grid-area:label}#transaction_result h4,#transaction_result h5,#transaction_result p{text-align:center}#transaction_result>h4{font-size:1.2rem;margin-top:6rem;margin-bottom:.5rem}#transaction_result sm-button{align-self:center;width:auto}#failure_svg,#success_svg{height:5rem;width:5rem;stroke-width:4;align-self:center;stroke:none;stroke-dasharray:50;fill:rgba(var(--foreground-color),1);animation:popup 2s forwards cubic-bezier(.175,.885,.32,1.275)}#success_svg polyline{fill:none;stroke:#00C853}#failure_svg line{stroke:#EF5350}.rupee-symbol{height:1rem;width:1rem;fill:rgba(var(--text-color),.5)}#deposit_rupee .copy-row{margin-bottom:1rem}.activity-container{display:grid;gap:1rem}.activity{display:grid;border-radius:.6rem;padding:1rem 1.2rem;gap:0 1rem;grid-template-columns:auto 1fr auto;grid-template-areas:"icon type amount" "icon receiver time";cursor:pointer}.activity .icon{grid-area:icon;height:3rem;width:3rem;padding:.8rem;background-size:cover;border-radius:2rem}.activity .activity-type{grid-area:type;text-transform:capitalize;font-weight:400;font-size:.8rem}.activity .activity-receiver{grid-area:receiver;font-weight:500;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity .activity-amount{text-align:right;grid-area:amount}.activity .activity-time{text-align:right;grid-area:time;font-weight:500}.back-arrow{stroke-width:10;margin-right:.5rem;padding:.2rem}.select{max-width:50ch;position:relative;display:flex;width:100%;background:rgba(var(--text-color),.06)}.select:first-of-type:not(:last-of-type){border-radius:.3rem .3rem 0 0}.select+.select{margin-top:0;border-radius:0 0 .3rem .3rem;border-top:solid 1px rgba(var(--text-color),.16)}.select label{display:flex;align-items:center;cursor:pointer;flex:1;padding:.8rem 1rem}.select input[type=radio]{display:none}.select input:checked~.radio .outer-ring{stroke:var(--accent-color)}.select input:checked~.radio .inner-disc{transform:none}.select .radio{width:1.2rem;height:1.2rem;fill:none;overflow:visible;margin-right:.6rem}.select .radio .outer-ring{stroke-width:8;stroke:rgba(var(--text-color),.5)}.select .radio .inner-disc{transform-origin:center;fill:var(--accent-color);transform:scale(0);transition:transform .3s cubic-bezier(.175,.885,.32,1.275)}.select .remove{width:3rem;height:2rem;padding:.7rem;cursor:pointer;stroke-width:10}.select .tag{grid-area:tag;opacity:.6;font-weight:500;border:1px solid;padding:.2rem .4rem;border-radius:.3rem;margin-right:.5rem}.select h4{font-weight:400}.add-upi{margin-top:.4rem;justify-self:flex-start;width:max-content}#transaction_page .grid:first-of-type{padding:.5rem 0;grid-template-columns:auto 1fr;grid-template-areas:"back ." "back ."}#transaction_page .grid:first-of-type .back-arrow{grid-area:back}#transaction_page .grid:first-of-type h4{text-transform:capitalize}#transaction_page .grid:first-of-type h5{font-weight:400;font-family:Roboto,sans-serif}#activity_page .empty-state,#request_page .empty-state,#settings_page .empty-state{justify-content:left}#settings_page>h4{margin-top:2rem;margin-bottom:.4rem}#settings_page sm-button{margin-top:.8rem}#settings_page .flex{max-width:60ch}@media only screen and (max-width:640px){#deposit,#home_page{display:grid;gap:1.5rem;grid-template-areas:"." "left";grid-template-columns:minmax(0,1fr)}#deposit .left,#home_page .left{grid-area:left}sm-select{width:100%}.hide-on-mobile{display:none!important}#transaction_page{padding-top:0}}@media only screen and (min-width:640px){.hide-on-desktop{display:none!important}body{padding:0 2rem;margin-left:4rem}sm-popup{background:rgba(var(--foreground-color),1)}#navbar,#navbar .active{background:rgba(var(--text-color),.06)}#confirmation,sm-popup::part(popup){width:24rem}#navbar{justify-content:flex-start;flex-direction:column;align-items:stretch;left:0;bottom:0;top:0;right:auto;border-top:none;border-radius:0;box-shadow:-.5rem 0 .5rem #00008 inset}#navbar .navbar-item{display:flex;width:auto;padding:.8rem 1.2rem}#navbar .logo h4,#navbar .navbar-item h5{display:none}#navbar .logo .main-logo,#navbar .navbar-item .icon{height:1.2rem;width:1.2rem}#navbar .navbar-item:hover{opacity:1}#navbar .logo{margin:1.5rem 1rem}.page{padding-bottom:2rem}#sign_in_popup{width:24rem}#home_page{padding-top:.5rem}#home_page .left{margin-top:1rem}.options-tab{grid-template-columns:repeat(auto-fill,minmax(5rem,1fr));gap:2rem .8rem}.display-balance .balance{height:9rem}#settings_page .copy-row{display:inline-grid}}@media only screen and (min-width:800px){body{margin-left:11rem}.complaint{gap:0 1.5rem;grid-template-columns:1fr 1fr;grid-template-areas:". . " "header header"}.complaint .complaint-actions{grid-area:header}.complaint .left{border-right:1px solid rgba(var(--text-color),.2);padding-right:1.5rem}.complaint .right{display:flex;justify-content:center;flex-direction:column}#navbar .navbar-item h5{font-size:.9rem;margin:0;display:block}#navbar .icon{margin-right:.8rem}#navbar .logo h4{display:block;font-size:1rem}.user-panel{position:sticky;top:1.5rem;padding-top:1.5rem}#deposit,#home_page{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr) 22rem}.activity{width:60ch}}@media only screen and (min-width:1920px){body{font-size:24px}}@media only screen and (min-width:2048px){body{font-size:24px}}@media only screen and (max-width:320px){body{font-size:14px}}@media (any-hover:hover){.navbar-item:hover{background:rgba(var(--text-color),.06)}.remove{opacity:.6}.remove:hover{opacity:1}} \ No newline at end of file +#transaction_page h5,*,.activity .activity-amount,.balance h4{font-family:Roboto,sans-serif}a,h1,h2,h3,h4,h5{font-weight:600}.action,button{display:inline-flex}.complaint-placeholder h5,button,textarea{background:rgba(var(--text-color),.1)}.option,button{-webkit-tap-highlight-color:transparent;transition:transform .3s;text-transform:capitalize}.icon,.loader{overflow:visible;fill:none}*{box-sizing:border-box;padding:0;margin:0}button,h1,h2,h3,h4,h5{font-family:Poppins,sans-serif}:root{scroll-behavior:smooth}body{--accent-color:#4527A0;--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:rgba(var(--foreground-color), 1);--dark-shade:#f4f4f4;--hue:255;--saturation:61%;--lightness:39%;color:rgba(var(--text-color),1);font-size:16px;background-size:cover}body[data-theme=dark]{--accent-color:#a293d0;--text-color:238,238,238;--text-color-light:170,170,170;--foreground-color:26,26,26;--background-color:#111;--dark-shade:#222;--hue:255;--saturation:39%;--lightness:70%;background-color:var(--background-color)}body[data-theme=dark] .balance:nth-of-type(3){color:rgba(var(--text-color),1)}body[data-theme=dark] .person .person-initials{color:rgba(var(--text-color),.9)!important}a{text-decoration:none;color:var(--accent-color)}.dark-text{color:#111}h1{font-size:3.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1rem}h5{font-size:.8rem}p{line-height:1.5;max-width:60ch;color:rgba(var(--text-color),.9)}strong{font-weight:500}button{position:relative;align-items:center;justify-content:center;padding:.6rem 1.2rem;font-weight:600;cursor:pointer;border-radius:.3rem;color:var(--accent-color);border:none}.flex,.logo{display:flex}.btn,.primary-btn{color:rgba(var(--foreground-color),1)}button:focus{outline:solid thin}button:disabled{cursor:default;background:rgba(var(--text-color),.5)}button:disabled~.loader{opacity:0}::-moz-focus-inner{border:none}.bottom-padding{padding-bottom:1.5rem}.top-padding{padding-top:1em}.bottom-margin{margin-bottom:1.5rem}.top-margin{margin-top:1.5rem}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}.align-center{align-items:center}#confirmation,#prompt,.balance,.direction-column{flex-direction:column}.justify-right{margin-left:auto}.space-between{justify-content:space-between}.label{margin-bottom:.4rem}.light-text{opacity:.7}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.breakable{word-break:break-all}.separator{padding:.1em}.no-transformations{transform:none!important}sm-button[variant=outlined]{--accent-color:rgba(var(--text-color), 1)}.loader{stroke-width:10;stroke:var(--accent-color);height:2rem;width:2rem;stroke-dashoffset:230;stroke-dasharray:230;padding:2px;justify-self:center}.action,.logo{align-items:center}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes load{50%{stroke-dashoffset:0}100%{stroke-dashoffset:-210}}.action{position:relative;justify-content:center;padding:0;background:0 0}.action[disabled] .primary-btn{background:0 0}.action h4{padding:.5rem 1.2rem;font-size:.9rem;clip-path:circle(100%);transition:clip-path .3s;border-radius:.2rem}.action .btn{z-index:2}.action .loader{position:absolute;z-index:1;padding:.4em}.clip{clip-path:circle(0)!important}.animate-loader{animation:load 2.6s infinite,rotate 1s infinite linear}.expand{width:100%}.fade-left{animation:fadeleft .3s}.fade-right{animation:faderight .3s}@keyframes faderight{from{opacity:0;transform:translateX(-1em)}to{opacity:1;transform:none}}@keyframes fadeleft{from{opacity:0;transform:translateX(1em)}to{opacity:1;transform:none}}.logo h4{font-weight:500;font-size:clamp(1.1rem,2vw,1.2rem)}.logo .main-logo{height:clamp(1.4rem,2vw,1.6rem);width:clamp(1.4rem,2vw,1.6rem);fill:rgba(var(--text-color),1);stroke:none;margin-right:.2rem}textarea{width:100%;max-width:100%;border:none;border-radius:.2rem;resize:none;font-size:1rem;line-height:1.6;padding:.8rem}:empty+.empty-state{display:grid}.empty-state{display:none;place-items:center;width:100%}.empty-state svg{stroke:rgba(var(--text-color),.8);height:12em;width:12em}.container-header{display:flex;align-items:center;flex-direction:row;width:100%;padding:1rem 0}.container-header h2{flex:1}.container-header button{align-self:center}.btn{background:var(--accent-color);padding:.4em 1em}.back-arrow{stroke:rgba(var(--text-color),1);fill:none;height:2rem;cursor:pointer}.card{border-radius:.6rem;padding:1.5em;background:rgba(var(--foreground-color),1)}.solid-background{background:rgba(var(--foreground-color),1)!important}#confirmation p,#prompt p{margin:1rem}#confirmation h4,#prompt h4{font-weight:500;margin-bottom:1.5rem}#confirmation .flex sm-button:first-of-type,#prompt .flex sm-button:first-of-type{margin-right:.6em;margin-left:auto}.refresh{margin-top:.6em;margin-bottom:1em}sm-popup .illustration{position:relative;height:4rem;width:4rem;padding:1rem;stroke:var(--accent-color);margin-bottom:1rem;border-radius:5rem;background:rgba(var(--text-color),.06)}#main_loader,#navbar{position:fixed;left:0}sm-popup sm-input:not(:last-of-type){margin-bottom:1rem}sm-popup p{margin-block-end:1rem}sm-popup .action h4{padding:.5rem 1rem;font-weight:500}sm-popup .message{margin-bottom:.2rem}sm-popup .message+.copy-row{margin-bottom:1.5rem}sm-popup h5:not(.tag){font-family:Roboto,sans-serif;margin-bottom:.4rem;margin-top:1rem;font-weight:500}.popup-header{padding:1.5rem;padding-bottom:0;display:flex;align-items:center;width:100%}.popup-header .icon{margin-right:1rem;padding:.2rem;stroke-width:10;cursor:pointer}.popup-header button{width:auto;margin-left:auto}details,summary{margin-bottom:1rem}summary{cursor:pointer}details h5{line-height:.6;margin-bottom:0;margin-top:1.2rem!important}details p{font-size:.9rem;line-height:1.4}#sign_in_popup::part(background){background:rgba(var(--foreground-color),1)}#sign_in_popup h3{margin-top:2rem}#sign_in_popup h4{font-weight:500;margin-bottom:3rem}#sign_in_popup button{margin:1rem 0}#sign_in_popup p{margin-top:1rem;margin-bottom:0!important}.primary-btn{background:var(--accent-color);justify-content:center}#main_header{align-items:center;padding:clamp(1rem,2vw,2rem) 1rem;justify-content:space-between}.icon{height:1.2rem;width:1.2rem;stroke:rgba(var(--text-color),.8);stroke-width:6;stroke-linecap:round;stroke-linejoin:round}#navbar{display:flex;flex-direction:row;align-items:center;justify-content:space-evenly;right:0;bottom:0;top:auto;z-index:3;background:rgba(var(--foreground-color),1);box-shadow:0 -.5rem 1rem #00010;border-radius:1rem 1rem 0 0}#navbar .navbar-item{position:relative;text-align:center;cursor:pointer;padding:.3rem;padding-top:.8rem;border-radius:.4em;opacity:.6;color:rgba(var(--text-color),1);font-size:.8em;text-transform:capitalize;width:100%;font-weight:600}#navbar .navbar-item h5{margin-top:.4em}#navbar .navbar-item .icon{stroke:rgba(var(--text-color),1)}#navbar .active{opacity:1}.banking{stroke-width:4}#home_page{padding:0 0 4rem}#home_page .left{width:auto;border-radius:.6rem}#home_page .left h3,#home_page .left h4,#home_page .left p{padding:0 1.5rem}#home_page .left h3{font-size:2rem;margin-bottom:1rem}.user-panel{position:relative;padding:1.5rem;padding-top:1rem;align-self:flex-start}.request .action,.request button{align-self:flex-end}.user-panel .icon{stroke:rgba(var(--foreground-color),1)}.user-panel sm-button{border-radius:2rem}.display-balance{grid-template-columns:1fr 1fr;grid-template-areas:". ." "flo flo";gap:.8rem;margin-top:1rem}.display-balance .icon{height:1.4rem;width:1.4rem;padding:.3rem;stroke-width:10;cursor:pointer}.balance{height:10rem;position:relative;display:flex;border-radius:1rem;padding:1rem;justify-content:flex-end}.balance h4{font-size:2.5rem;font-weight:500;text-shadow:1px .1rem .2rem #00040;word-break:break-all;flex:1}.balance h5{opacity:.8;margin-bottom:.2rem}.balance .tooltip{border-radius:1rem;color:rgba(var(--text-color),1);margin-left:auto}.balance:nth-of-type(1){background:url(bg-art2.svg) bottom,linear-gradient(200deg,rgba(var(--text-color),.1),rgba(var(--text-color),.2));background-size:cover}.balance:nth-of-type(1) .tooltip{box-shadow:0 0 0 .4rem rgba(var(--text-color),.1) inset}.balance:nth-of-type(2){background:url(bg-art1.svg) left bottom,linear-gradient(135deg,#fd946a,#ff4857);background-size:cover}.balance:nth-of-type(2) .tooltip{box-shadow:0 0 0 .4rem #ff4857 inset}.balance:nth-of-type(3){grid-area:flo;color:rgba(var(--foreground-color),1);background:url(bg-art3.svg) center no-repeat,linear-gradient(270deg,#2f69e6,#1b0980);background-size:cover}.complaint .processed,.deposited{color:#007732}.page .container-header,.tooltip{top:0;background:rgba(var(--foreground-color),1)}.balance:nth-of-type(3) .tooltip{box-shadow:0 0 0 .4rem #1b0980 inset}.tooltip{position:absolute;left:0;right:0;bottom:0;cursor:help;display:flex;flex-direction:column;z-index:1;transition:clip-path .4s ease-out;clip-path:circle(.8rem at calc(100% - 1.5rem) 1.4rem);scrollbar-width:thin}.tooltip .tt-icon{display:inline-flex;width:3rem;height:3rem;align-items:center;justify-content:center;margin-left:auto;font-weight:600}.tooltip .tooltip-text{padding:1rem;padding-top:0;line-height:1.4;font-size:.9rem;font-weight:400;overflow-y:auto;max-height:calc(100% - 3rem);max-width:30ch}.tooltip:hover{clip-path:circle(100%)}.user-type{font-weight:500}.options-tab{display:grid;grid-template-columns:repeat(4,1fr);padding:1.5rem;gap:2rem .2rem}.option{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;border-radius:.4rem;width:5rem;cursor:pointer}.option .icon{height:3rem;width:3rem;background:rgba(var(--text-color),.06);border-radius:2rem;padding:.8rem;margin-bottom:.6rem}.option h4{font-size:.85rem;opacity:.8;font-weight:500}.option:active{transform:scale(.95)}.request-icon{transform:rotate(180deg)}.notification-dot::after{content:"";position:absolute;z-index:1;top:0;right:0;height:.6em;width:.6em;background-color:#E53935;border-radius:.4em;transition:transform .3s}.shrink.notification-dot::after{transform:scale(0)}#deposit .container-header,#withdraw .container-header{background:linear-gradient(rgba(var(--foreground-color),1) 90%,transparent)}sm-tab-header{position:sticky;top:0;display:inline-flex;background-color:var(--dark-shade);z-index:2;padding:.3rem;margin:1rem 0;border-radius:3rem}sm-tab{text-transform:capitalize}sm-tab::part(tab){padding:.4rem 1.2rem}sm-panel{width:100%}.request{display:inline-flex;flex-direction:column;padding:1.5em;border-radius:.4em;border:1px solid}.request h5{margin-bottom:.2rem;text-transform:capitalize}.request h3,.request h4{margin-bottom:1.5rem}.copy-row h4,.request button{margin-bottom:0}.request h4:last-of-type{margin-bottom:0}.request .amount{font-size:1.4em}.request button{width:auto;margin-top:1.5rem}.request .copy-row{margin-bottom:1.5rem}.request .flex{align-items:center;justify-content:flex-end;margin-top:1.5rem}.request .flex button,.request .flex h5{margin:0}.decline-request{margin-right:.5rem!important}.withdrawn{color:#d43125}.container{display:grid;gap:1em;width:100%;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.copy-row,.page .container-header{display:grid;grid-template-columns:1fr auto}.page{padding:1rem 1.5rem;padding-bottom:5rem}.page .container-header{grid-template-areas:". ." "search search";gap:1rem;will-change:auto;z-index:2}.page .container-header .search{grid-area:search}.page .container-header .search input{padding:1em;border:none;width:100%;background:var(--dark-shade);font-size:1rem;font-weight:500;color:rgba(var(--text-color),1);border-radius:.2em}.page .container-header .search input:focus{outline:0;background:rgba(var(--text-color-light),.2)}.copy-row{align-items:center;gap:.5rem;width:auto}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time{margin-bottom:1.5rem!important;font-weight:500}#report_popup{width:32rem}#profile_page{display:flex;flex-direction:column}#profile_page button{align-self:flex-start}.complaint{display:grid;gap:1.5rem 0}.complaint .complaint-actions{align-items:center;margin:1.5rem 0 0}#helpline_page sm-select,.complaint .processed,.complaint .unprocessed{margin-bottom:1.5rem}.complaint .unprocessed{color:#d43125}#settings_page p,#transaction_result h5,.activity .activity-time{color:rgba(var(--text-color),.7)}.complaint button .icon{padding:.2rem;margin-right:.5rem;stroke:var(--accent-color);stroke-width:8}.complaints-container{padding-top:1.5rem;display:grid;align-items:flex-start;gap:1.5rem}.complaint-placeholder{animation:pulse infinite .6s alternate}.complaint-placeholder h4,.complaint-placeholder h5{border-radius:.2rem}.complaint-placeholder h5{padding:.5rem .6rem}.complaint-placeholder h4{background:rgba(var(--text-color),.2);padding:.8rem}.complaint-placeholder .demo-btn{padding:.8rem 3rem}@keyframes pulse{from{opacity:.4}to{opacity:1}}#main_loader{text-align:center;place-content:center;height:100vh;width:100vw}#main_loader sm-button{margin-left:0;margin-top:1rem}#main_loader svg{height:2rem;width:2rem;stroke:var(--accent-color);stroke-width:6;fill:none;overflow:visible;stroke-linecap:round;stroke-dashoffset:210;stroke-dasharray:210;justify-self:center;align-self:center;margin-bottom:2rem}.activity,.select{align-items:center}#main_loader h3{width:100%;font-weight:400;word-spacing:.16em}#upi_txId_section .copy-row{margin-bottom:1.5rem}@keyframes popup{0%{stroke-dashoffset:50;transform:translateY(4rem) scale(.2,.6)}40%,41%{transform:translateY(0) scale(.2)}50%{stroke-dashoffset:50;transform:translateY(0) scale(1)}100%{stroke-dashoffset:0}}#transaction_result{z-index:12}#transaction_result::part(popup){background-image:url(card-back.svg);background-size:cover;background-position-y:-3rem;background-repeat:no-repeat}.activity,.activity .icon{background:rgba(var(--text-color),.06)}#transaction_result #transaction_heading{margin-bottom:2rem}#transaction_result .copy-row{grid-template-areas:"label label" ". .";margin-top:1rem;gap:0 1rem}#transaction_result .copy-row h4{font-weight:500}#transaction_result h5{grid-area:label}#transaction_result h4,#transaction_result h5,#transaction_result p{text-align:center}#transaction_result>h4{font-size:1.2rem;margin-top:6rem;margin-bottom:.5rem}#transaction_result sm-button{align-self:center;width:auto}#failure_svg,#success_svg{height:5rem;width:5rem;stroke-width:4;align-self:center;stroke:none;stroke-dasharray:50;fill:rgba(var(--foreground-color),1);animation:popup 2s forwards cubic-bezier(.175,.885,.32,1.275)}#success_svg polyline{fill:none;stroke:#00C853}#failure_svg line{stroke:#EF5350}.rupee-symbol{height:1rem;width:1rem;fill:rgba(var(--text-color),.5)}#deposit_rupee .copy-row{margin-bottom:1rem}.activity-container{display:grid;gap:1rem}.activity{display:grid;border-radius:.6rem;padding:1rem 1.2rem;gap:0 1rem;grid-template-columns:auto 1fr auto;grid-template-areas:"icon type amount" "icon receiver time";cursor:pointer;transition:transform .3s}.activity:active{transform:scale(.95)}.activity .icon{grid-area:icon;height:3rem;width:3rem;padding:.8rem;background-size:cover;border-radius:2rem}#add_person_btn .icon,#transaction_page #transaction_details .icon,.select{background:rgba(var(--text-color),.06)}.activity .activity-type{grid-area:type;text-transform:capitalize;font-weight:400;font-size:.8rem}.activity .activity-receiver{grid-area:receiver;font-weight:500;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity .activity-amount{text-align:right;grid-area:amount}.activity .activity-time{text-align:right;grid-area:time;font-weight:500}#add_person_btn,.person .person-name{text-align:center;opacity:.8;font-weight:500}.back-arrow{stroke-width:10;margin-right:.5rem;padding:.2rem}.select{max-width:50ch;position:relative;display:flex;width:100%;border-radius:.3rem}.select:first-of-type:not(:last-of-type){border-radius:.3rem .3rem 0 0}.select+.select{margin-top:0;border-radius:0 0 .3rem .3rem;border-top:solid 1px rgba(var(--text-color),.16)}.select label{display:flex;align-items:center;cursor:pointer;flex:1;padding:.8rem 1rem}.select input[type=radio]{display:none}.select input:checked~.radio .outer-ring{stroke:var(--accent-color)}.select input:checked~.radio .inner-disc{transform:none}.select .radio{width:1.2rem;height:1.2rem;fill:none;overflow:visible;margin-right:.6rem}.select .radio .outer-ring{stroke-width:8;stroke:rgba(var(--text-color),.5)}.select .radio .inner-disc{transform-origin:center;fill:var(--accent-color);transform:scale(0);transition:transform .3s cubic-bezier(.175,.885,.32,1.275)}#add_person_btn:active,.person:active{transform:scale(.95)}#add_person_btn,.person{cursor:pointer;transition:transform .3s}.select .remove{width:3rem;height:2rem;padding:.7rem;cursor:pointer;stroke-width:10}.select .tag{grid-area:tag;opacity:.6;font-weight:500;border:1px solid;padding:.2rem .4rem;border-radius:.3rem;margin-right:.5rem}.select h4{font-weight:400}.add-upi{margin-top:.4rem;justify-self:flex-start;width:max-content}#transaction_page header{padding:.5rem 0}#transaction_page header .back-arrow{grid-area:back}#transaction_page header h4{text-transform:capitalize}#transaction_page h5{font-weight:400;opacity:.8;margin-bottom:.2rem;text-transform:capitalize}#transaction_page #transaction_details{position:relative;margin:1.5rem 0;padding:1.5rem;background-color:rgba(var(--text-color),.06);max-width:50ch;border-radius:.5rem}#transaction_page #transaction_details .icon{height:4rem;width:4rem;padding:1.2rem;border-radius:4rem;margin-bottom:2rem}#transaction_page #transaction_details .flex{margin-bottom:1rem;align-items:baseline}#transaction_page #transaction_details strong{font-weight:500}#transaction_page #transaction_details strong:not(:last-of-type){margin-bottom:1rem}#transaction_page .transaction-amount{font-size:2rem;font-weight:400}#transaction_page #transaction_time{right:0;position:absolute;margin:1.5rem}#people_container{display:grid;grid-template-columns:repeat(4,1fr);padding:1.5rem;gap:2rem .2rem}#add_person_btn{display:flex;flex-direction:column;font-size:.85rem}#add_person_btn .icon{height:3rem;width:3rem;border-radius:2rem;padding:1rem;align-self:center;margin-bottom:.4rem}.person{display:flex;flex-direction:column;align-items:center;width:5rem}.person .person-initials{display:flex;justify-content:center;height:3rem;width:3rem;font-size:1.2rem!important;font-weight:500;align-items:center;border-radius:2rem;margin-bottom:.4rem!important;text-transform:uppercase}#person_popup h3,.person .person-name{text-transform:capitalize}.person .person-name{font-size:.85rem}#person_popup .copy-row{margin-bottom:1.5rem}#activity_page .empty-state,#request_page .empty-state,#settings_page .empty-state{justify-content:left}#settings_page>h4{margin-top:2rem;margin-bottom:.4rem}#settings_page sm-button{margin-top:.8rem}#settings_page .flex{max-width:60ch}@media only screen and (max-width:640px){#deposit,#home_page{display:grid;gap:1.5rem;grid-template-areas:"." "left";grid-template-columns:minmax(0,1fr)}#deposit .left,#home_page .left{grid-area:left}sm-select{width:100%}.hide-on-mobile{display:none!important}#transaction_page{padding-top:0}#transaction_page header{padding:1.5rem 0}}@media only screen and (min-width:640px){.hide-on-desktop{display:none!important}body{padding:0 2rem;margin-left:4rem}sm-popup{background:rgba(var(--foreground-color),1)}#navbar,#navbar .active{background:rgba(var(--text-color),.06)}#confirmation,sm-popup::part(popup){width:24rem}#navbar{justify-content:flex-start;flex-direction:column;align-items:stretch;left:0;bottom:0;top:0;right:auto;border-top:none;border-radius:0;box-shadow:-.5rem 0 .5rem #00008 inset}#navbar .navbar-item{display:flex;width:auto;padding:.8rem 1.2rem}#navbar .logo h4,#navbar .navbar-item h5{display:none}#navbar .logo .main-logo,#navbar .navbar-item .icon{height:1.2rem;width:1.2rem}#navbar .navbar-item:hover{opacity:1}#navbar .logo{margin:1.5rem 1rem}.page{padding-bottom:2rem}#sign_in_popup{width:24rem}#home_page{padding-top:.5rem}#home_page .left{margin-top:1rem}#people_container,.options-tab{grid-template-columns:repeat(auto-fill,minmax(5rem,1fr));gap:2rem .8rem}.display-balance .balance{height:9rem}#settings_page .copy-row{display:inline-grid}}@media only screen and (min-width:800px){body{margin-left:11rem}.complaint{gap:0 1.5rem;grid-template-columns:1fr 1fr;grid-template-areas:". . " "header header"}.complaint .complaint-actions{grid-area:header}.complaint .left{border-right:1px solid rgba(var(--text-color),.2);padding-right:1.5rem}.complaint .right{display:flex;justify-content:center;flex-direction:column}#navbar .navbar-item h5{font-size:.9rem;margin:0;display:block}#navbar .icon{margin-right:.8rem}#navbar .logo h4{display:block;font-size:1rem}.user-panel{position:sticky;top:1.5rem;padding-top:1.5rem}#deposit,#home_page{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr) 22rem}.activity{width:60ch}}@media only screen and (min-width:1920px){body{font-size:24px}}@media only screen and (min-width:2048px){body{font-size:24px}}@media only screen and (max-width:320px){body{font-size:14px}}@media (any-hover:hover){.navbar-item:hover{background:rgba(var(--text-color),.06)}.remove{opacity:.6}.remove:hover{opacity:1}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index 59940db..9b45d48 100644 --- a/css/main.scss +++ b/css/main.scss @@ -37,6 +37,11 @@ body[data-theme="dark"]{ .balance:nth-of-type(3){ color: rgba(var(--text-color), 1); } + .person{ + .person-initials{ + color: rgba(var(--text-color), 0.9) !important; + } + } } a { @@ -194,6 +199,10 @@ button { transform: none !important; } +sm-button[variant="outlined"]{ + --accent-color: rgba(var(--text-color), 1); +} + .loader { fill: none; stroke-width: 10; @@ -643,7 +652,7 @@ details{ } } &:nth-of-type(2){ - background: url(bg-art1.svg), linear-gradient(135deg, #fd946a, #ff4857); + background: url(bg-art1.svg) left bottom, linear-gradient(135deg, #fd946a, #ff4857); background-size: cover; .tooltip{ box-shadow: 0 0 0 0.4rem #ff4857 inset; @@ -652,7 +661,7 @@ details{ &:nth-of-type(3){ grid-area: flo; color: rgba(var(--foreground-color), 1); - background: url(bg-art3.svg) bottom no-repeat, linear-gradient(270deg, #2f69e6, #1b0980); + background: url(bg-art3.svg) center no-repeat, linear-gradient(270deg, #2f69e6, #1b0980); background-size: cover; .tooltip{ box-shadow: 0 0 0 0.4rem#1b0980 inset; @@ -710,36 +719,36 @@ details{ grid-template-columns: repeat(4, 1fr); padding: 1.5rem; gap: 2rem 0.2rem; - .option { - position: relative; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - border-radius: 0.4rem; - width: 5rem; - text-transform: capitalize; - transition: transform 0.3s; - -webkit-tap-highlight-color: transparent; - cursor: pointer; - .icon { - height: 3rem; - width: 3rem; - background: rgba(var(--text-color), 0.06); - border-radius: 2rem; - padding: 0.8rem; - margin-bottom: 0.6rem; - } +} +.option { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + border-radius: 0.4rem; + width: 5rem; + text-transform: capitalize; + transition: transform 0.3s; + -webkit-tap-highlight-color: transparent; + cursor: pointer; + .icon { + height: 3rem; + width: 3rem; + background: rgba(var(--text-color), 0.06); + border-radius: 2rem; + padding: 0.8rem; + margin-bottom: 0.6rem; + } - h4 { - font-size: 0.85rem; - opacity: 0.8; - font-weight: 500; - } + h4 { + font-size: 0.85rem; + opacity: 0.8; + font-weight: 500; + } - &:active { - transform: scale(0.95); - } + &:active { + transform: scale(0.95); } } @@ -1164,6 +1173,10 @@ sm-panel{ grid-template-areas: 'icon type amount' 'icon receiver time'; align-items: center; cursor: pointer; + transition: transform 0.3s; + &:active{ + transform: scale(0.95); + } .icon{ grid-area: icon; height: 3rem; @@ -1280,20 +1293,123 @@ sm-panel{ } #transaction_page{ - .grid:first-of-type{ + header{ padding: 0.5rem 0; - grid-template-columns: auto 1fr; - grid-template-areas: 'back .' 'back .'; .back-arrow{ grid-area: back; } h4{ text-transform: capitalize; } - h5{ - font-weight: 400; - font-family: 'Roboto', sans-serif; + } + h5{ + font-weight: 400; + font-family: 'Roboto', sans-serif; + opacity: 0.8; + margin-bottom: 0.2rem; + text-transform: capitalize; + } + #transaction_details{ + position: relative; + margin: 1.5rem 0; + padding: 1.5rem; + background-color: rgba(var(--text-color), 0.06); + max-width: 50ch; + border-radius: 0.5rem; + .icon{ + height: 4rem; + width: 4rem; + padding: 1.2rem; + border-radius: 4rem; + background: rgba(var(--text-color), 0.06); + margin-bottom: 2rem; } + .flex{ + margin-bottom: 1rem; + align-items: baseline; + } + strong{ + font-weight: 500; + } + strong:not(:last-of-type){ + margin-bottom: 1rem; + } + } + .transaction-amount{ + font-size: 2rem; + font-weight: 400; + } + #transaction_time{ + right: 0; + position: absolute; + margin: 1.5rem; + } +} +#people_container{ + display: grid; + grid-template-columns: repeat(4, 1fr); + padding: 1.5rem; + gap: 2rem 0.2rem; +} +#add_person_btn{ + cursor: pointer; + display: flex; + flex-direction: column; + text-align: center; + transition: transform 0.3s; + font-size: 0.85rem; + opacity: 0.8; + font-weight: 500; + &:active{ + transform: scale(0.95); + } + .icon{ + height: 3rem; + width: 3rem; + border-radius: 2rem; + padding: 1rem; + background: rgba(var(--text-color), 0.06); + align-self: center; + margin-bottom: 0.4rem; + } +} +.person{ + display: flex; + flex-direction: column; + align-items: center; + cursor: pointer; + transition: transform 0.3s; + width: 5rem; + &:active{ + transform: scale(0.95); + } + .person-initials{ + display: flex; + justify-content: center; + height: 3rem; + width: 3rem; + font-size: 1.2rem !important; + font-weight: 500; + align-items: center; + border-radius: 2rem; + margin-bottom: 0.4rem !important; + text-transform: uppercase; + } + .person-name{ + font-size: 0.85rem; + opacity: 0.8; + font-weight: 500; + text-transform: capitalize; + text-align: center; + } +} + +#person_popup{ + h3{ + text-transform: capitalize; + } + .copy-row{ + margin-bottom: 1.5rem; } } @@ -1337,6 +1453,9 @@ sm-panel{ } #transaction_page{ padding-top: 0; + header{ + padding: 1.5rem 0; + } } } @@ -1414,7 +1533,7 @@ sm-panel{ margin-top: 1rem; } } - .options-tab{ + .options-tab, #people_container{ grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr)); gap: 2rem 0.8rem; } diff --git a/index.html b/index.html index d340dc2..403bcc0 100644 --- a/index.html +++ b/index.html @@ -328,6 +328,7 @@ Done + + + + + + + + +

+
FLO ID
+
+

+ + Copy + + + +
+
Rupee actions
+
+
+ + + +

Send

+
+
+ + + +

Request

+
+
+
+ +
+ Report @@ -896,6 +967,7 @@ userFloIdContainers.forEach(container => container.textContent = myFloID) defaultUPI = localStorage.getItem(`defaultUPI${myFloID}`) renderUserUPI() + renderAllContacts() hideLoader() await token_app.actions.doShreeGanesh(); }).catch(error => console.error(error)) @@ -963,7 +1035,7 @@ return card; }, activityCard(obj){ - let {type, amount, timeStamp, receiver} = obj; + let {type, amount, timeStamp, receiver, upi_txid, receiverUPI} = obj; let card = document.createElement('div'), composition = ``, icon, @@ -971,7 +1043,14 @@ transaction, className card.classList.add('activity') - setAttributes(card, {'data-type': type, 'data-vector-clock': timeStamp}) + setAttributes(card, { + 'data-type': type, + 'data-vector-clock': timeStamp, + 'data-receiver': receiver, + 'data-amount': amount, + 'data-upi-txid': upi_txid, + 'data-receiver-upi': receiverUPI + }) switch(type){ case 'sent': icon = ` @@ -1329,6 +1408,18 @@

` return card; + }, + contact(floId, name){ + console.log(floId, name) + let card = document.createElement('div') + card.classList.add('person') + setAttributes(card, {'data-flo-id': floId, 'data-name': name}) + let color = randomHsl() + card.innerHTML = ` +

${name.charAt(0)}

+

${name}

+ ` + return card } } @@ -1494,6 +1585,15 @@ } } + function randomHsl(saturation = 90, lightness = 50) { + let hue = Math.random() * 360 + let color = { + primary: `hsla( ${hue}, ${saturation}%, ${lightness}%, 1)`, + light : `hsla( ${hue}, ${saturation}%, 90%, 0.6)` + } + return color; + } + function clearAllInputs(parent) { if (parent.querySelectorAll("textarea")) parent.querySelectorAll("textarea").forEach((field) => { @@ -1661,6 +1761,23 @@ } }) + //Function for handling contact click event + + const showPersonName = document.getElementById('show_person_name'), + showPersonFloId = document.getElementById('show_person_flo_id') + peopleContainer.addEventListener('click', e => { + if(e.target.closest('.person')){ + let person = e.target.closest('.person') + showPersonName.textContent = person.dataset.name + showPersonFloId.textContent = person.dataset.floId + showPopup('person_popup') + } + if(e.target.closest('#add_person_btn')){ + showPopup('add_person_popup') + + } + }) + // Function for confirming deposit requests document.getElementById('pending_deposits_container').addEventListener('click', async (e) => { if (e.target.closest('.confirm-deposit-btn')) @@ -1707,7 +1824,14 @@ document.getElementById('activity_page').addEventListener('click', (e) => { if (e.target.closest('.activity')) { currentRequest = e.target.closest('.activity') - showTransactionDetails({type: currentRequest.dataset.type, timeStamp: currentRequest.dataset.vectorClock}) + showTransactionDetails({ + type: currentRequest.dataset.type, + timeStamp: currentRequest.dataset.vectorClock, + amount: currentRequest.dataset.amount, + receiver: currentRequest.dataset.receiver, + upiTxId: currentRequest.dataset.upiTxid, + receiverUPI: currentRequest.dataset.receiverUpi + }) } }) // Function for reporting complain @@ -1818,14 +1942,95 @@ const transactionPage = document.getElementById('transaction_page'), transactionType = document.getElementById('transaction_type'), - transactionTime = document.getElementById('transaction_time') + transactionDetails = document.getElementById('transaction_details') function showTransactionDetails(obj){ - let {type, timeStamp, } = obj; - if(type === 'payCashier') - type = 'Paid through cashier' + let {type, timeStamp, amount, receiver, upiTxId, receiverUPI} = obj; + let composition = ``, + icon, + transaction, + className + + switch(type){ + case 'sent': + icon = ` + + + + ` + transaction = 'Sent to' + break; + case 'deposit': + icon = ` + + deposit + + + + + + + ` + type = 'deposited' + transaction = 'Deposited to' + break; + case 'withdraw': + icon = ` + + withdraw + + + + + + + + ` + type = 'withdrawn' + transaction = 'withdrawn to' + break; + case 'payCashier': + icon = ` + + + + + ` + className = 'withdrawn' + transaction = 'Paid to' + type = 'Paid through cashier' + break; + } + + composition = `${icon} +
${type}
+
+ ₹ ${amount} +
` + + if(receiver !== 'undefined') + composition +=` +
${transaction}
${receiver}` + + if(upiTxId !== 'undefined') + composition += ` +
UPI transaction ID
+ ${upiTxId} + ` + + if(receiverUPI !== 'undefined') + composition += ` +
Sent to UPI ID
+ ${receiverUPI} + ` + composition += `
${formatedTime(timeStamp)}
` + transactionDetails.innerHTML = composition transactionType.textContent = type - transactionTime.textContent = formatedTime(timeStamp) showPage('transaction_page') } @@ -1926,6 +2131,41 @@ } + const contactFlo = document.getElementById('person_flo_id'), + contactName = document.getElementById('person_name') + async function addPerson(){ + compactIDB.addData('contacts', {name: contactName.value}, contactFlo.value) + .then(success => { + notify('Contact added', 'success') + renderAllContacts() + hidePopup() + }) + .catch(error => { + notify('Contact already added', 'error') + }) + } + + const peopleContainer = document.getElementById('people_container') + async function renderAllContacts(){ + const allContacts = await compactIDB.readAllData('contacts') + peopleContainer.innerHTML = `` + for(contact in allContacts){ + frag.append(render.contact(contact, allContacts[contact].name)) + } + peopleContainer.append(frag) + let addPersonButton = document.createElement('div') + addPersonButton.id="add_person_btn" + addPersonButton.innerHTML = ` + + add Contact + + + + Add + ` + peopleContainer.prepend(addPersonButton) + } + function signIn() { return new Promise((resolve, reject) => { hideLoader() @@ -1943,10 +2183,10 @@ document.querySelector('main').classList.add('hide-completely') document.getElementById('navbar').classList.add('hide-completely') document.getElementById('main_header').classList.add('hide-completely') - localStorage.removeItem(`defaultUPI${myFloID}`) floDapps.clearCredentials() compactIDB.deleteDB().then((message) => { delete token_app.master_configurations; + localStorage.removeItem(`defaultUPI${myFloID}`) onLoadStartUp() notifications.clearAll() notify('Logged out') @@ -9821,7 +10061,7 @@ } }); }, - addContact: function (id, floID, KB = this.supernodeKBucket) { + addPerson: function (id, floID, KB = this.supernodeKBucket) { const contact = { id: id, floID: floID @@ -9835,7 +10075,7 @@ } catch (e) { decodedId = address; } - this.addContact(decodedId, address, KB); + this.addPerson(decodedId, address, KB); }, isNodePresent: function (flo_id, KB = this.supernodeKBucket) { let kArray = KB.toArray(); @@ -10847,7 +11087,9 @@ cash_sent_details: {}, pay_thru_cashier: {}, //user UPIs - userUPIs: {} + userUPIs: {}, + //contacts + contacts: {} } //add other given objectStores for (o in this.appObs) @@ -12337,7 +12579,8 @@ let request_object = { user_flo_id: myFloID, upi_txid: upi_txid, - deposit_amount: token_amount_to_buy.value + deposit_amount: token_amount_to_buy.value, + cashier_upi } if (typeof upi_txid === "string" && upi_txid.length > 1) { floCloudAPI.sendGeneralData(request_object, token_app.master_configurations @@ -12347,7 +12590,7 @@ hidePopup() showTransactionStatus('success', 'Deposit request sent.', 'It may take upto 48 hours for deposited amount to be reflected in your account.') btnLoading('request_tokens_btn', 'stop') - depositActivityContainer.prepend(render.activityCard({type: 'deposit', amount: request_object.deposit_amount, timeStamp: `${Date.now()}_${myFloID}}`, upi_txid})) + depositActivityContainer.prepend(render.activityCard({type: 'deposit', amount: request_object.deposit_amount, timeStamp: `${Date.now()}_${myFloID}}`, upi_txid, receiver: cashier_upi})) }) return true; } @@ -12469,7 +12712,7 @@ showTransactionStatus('success', 'Pay through cashier Request sent.', `Sent to: ${recvr_id}
through cashier UPI: ${cashier_upi}.

Once the cashier receives your payment, they will transfer it to intended receiver.`); - payCashierActivityContainer.prepend(render.activityCard({type: 'payCashier', amount: amount_to_pay, timeStamp: `${Date.now()}_${myFloID}`, receiver: recvr_id, upi_txid: req_object.upi_txid})) + payCashierActivityContainer.prepend(render.activityCard({type: 'payCashier', amount: amount_to_pay, timeStamp: `${Date.now()}_${myFloID}`, receiver: recvr_id, receiverUPI: req_object.upi_txid})) } } catch (error) { @@ -12500,9 +12743,10 @@ for (usr_deposits of deposit_msg) { let { upi_txid, - deposit_amount + deposit_amount, + cashier_upi } = usr_deposits.message; - frag.append(render.activityCard({type: 'deposit', amount: deposit_amount, timeStamp: usr_deposits.vectorClock, upi_txid})) + frag.append(render.activityCard({type: 'deposit', amount: deposit_amount, timeStamp: usr_deposits.vectorClock, upi_txid, receiver: cashier_upi})) } depositActivityContainer.innerHTML = ``; @@ -12525,7 +12769,7 @@ upi_txid, amount } = cashier_message.message; - frag.append(render.activityCard({type: 'payCashier', amount, timeStamp: cashier_message.vectorClock, receiver: receiver_flo_id, upi_txid})) + frag.append(render.activityCard({type: 'payCashier', amount, timeStamp: cashier_message.vectorClock, receiver: receiver_flo_id, receiverUPI: upi_txid})) } payCashierActivityContainer.innerHTML = ``;