Browse Source
Co-authored-by: barhen <barhen@outlook.com> Reviewed-on: #13 Co-authored-by: Benjamin Arhen <barhen@outlook.com> Co-committed-by: Benjamin Arhen <barhen@outlook.com>pull/14/head
Benjamin Arhen
1 year ago
34 changed files with 1075 additions and 193 deletions
@ -0,0 +1,10 @@ |
|||||
|
using Microsoft.AspNetCore.Components; |
||||
|
|
||||
|
namespace Biskilog_Accounting.Client.Elements |
||||
|
{ |
||||
|
public partial class Footer |
||||
|
{ |
||||
|
[Parameter] |
||||
|
public EventCallback OnClickCallback { get; set; } |
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
ul { |
||||
|
flex-direction: column; |
||||
|
background: #3f7672; |
||||
|
top: 1rem; |
||||
|
border-radius: 10px; |
||||
|
list-style-type: none; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
position: absolute; |
||||
|
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
li { |
||||
|
padding: 8px; |
||||
|
border-bottom: 1px solid #ffffff; /* Border between items */ |
||||
|
} |
||||
|
|
||||
|
li:last-child { |
||||
|
border-bottom: none; /* Remove border from the last item */ |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
color: #ffffff; /* Dropdown item text color */ |
||||
|
text-decoration: none; |
||||
|
display: block; |
||||
|
padding: 8px; |
||||
|
cursor:pointer; |
||||
|
} |
||||
|
|
||||
|
a:hover { |
||||
|
color:#003445; /* Hover background color */ |
||||
|
} |
||||
|
|
||||
|
/* Show the dropdown when the container is clicked */ |
||||
|
.show ul { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
.hidden { |
||||
|
display: none; |
||||
|
} |
@ -1,6 +1,6 @@ |
|||||
@namespace Biskilog_Accounting |
@namespace Biskilog_Accounting |
||||
@inherits LayoutComponentBase |
@inherits LayoutComponentBase |
||||
|
|
||||
<main style="background-color: #eee;height:100vh;"> |
<main style="background-color: #fff;height:100vh;"> |
||||
@Body |
@Body |
||||
</main> |
</main> |
@ -0,0 +1,24 @@ |
|||||
|
@page "/phoneauthtab" |
||||
|
|
||||
|
<form> |
||||
|
<div class="input-div"> |
||||
|
<input type="tel" id="phone" name="telphone" placeholder="888 888 8888" pattern="[0-9]{3} [0-9]{3} [0-9]{4}" maxlength="12" class="input-box" /><br /> |
||||
|
<span class="hidden">x</span> |
||||
|
</div> |
||||
|
<div class="input-div"> |
||||
|
<input type="number" id="code" class="input-box" placeholder="Enter OTP" maxlength="6" /><br /> |
||||
|
<span class="hidden">x</span> |
||||
|
</div> |
||||
|
</form> |
||||
|
|
||||
|
<button type="button" class="sign-in-gbutton-colored" > |
||||
|
<div style="display: inline-flex;"> |
||||
|
<i></i> |
||||
|
<span class="sign-in-gbutton-title">Submit</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
|
||||
|
@code { |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,214 @@ |
|||||
|
@font-face { |
||||
|
font-family: "titleFont"; |
||||
|
src: url("../fonts/Rockwill.otf"); |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.form-section { |
||||
|
border: rgb(186, 190, 197) 0.5px solid; |
||||
|
min-height: 690px; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
margin: auto; |
||||
|
max-width: 400px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.form-section h2 { |
||||
|
font-size: 24pt; |
||||
|
font-weight: 800; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 17px; |
||||
|
margin-top: 20px; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.title-section { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
font-size: medium; |
||||
|
font-family: "titleFont"; |
||||
|
color: rgb(186, 190, 197); |
||||
|
} |
||||
|
|
||||
|
.title-section a { |
||||
|
font-size: 30pt; |
||||
|
text-decoration: none; |
||||
|
color: rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.title-section a img { |
||||
|
margin: auto !important; |
||||
|
height: 80px !important; |
||||
|
max-width: 80px !important; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(255, 255, 255); |
||||
|
border: 2px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
width: 100%; |
||||
|
max-width: 310px; |
||||
|
height: inherit; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(7, 7, 154); |
||||
|
border: 1px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
color: white; |
||||
|
width: 50%; |
||||
|
max-width: 310px; |
||||
|
height: 40px; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
transition: width 1.5s ease; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored div > i { |
||||
|
width: 20px; |
||||
|
margin: 5px; |
||||
|
background-repeat: no-repeat; |
||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwYzIuNzk2IDAgNC44OTMgMi4xODQgNC45OTYgNS4yNjJMMTMgNS41VjdoMWEyIDIgMCAwIDEgMiAydjlhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDFWNS41QzMgMi4yOTggNS4xMzMgMCA4IDBabTYgOUgydjloMTJWOVptLTYgMmEyIDIgMCAwIDEgMS4wMDEgMy43MzJMOSAxNS4yYzAgLjQ0Mi0uNDQ4LjgtMSAuOC0uNTEzIDAtLjkzNi0uMzA5LS45OTMtLjcwN0w3IDE1LjJ2LS40NjhBMiAyIDAgMCAxIDggMTFabTAtOUM2LjMzMiAyIDUuMDg4IDMuMjc3IDUuMDA1IDUuMjgyTDUgNS41VjdoNlY1LjVDMTEgMy4zNyA5LjcyOCAyIDggMloiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg=="); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored:hover { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-title { |
||||
|
font-size: 15px; |
||||
|
margin: 7px; |
||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-image { |
||||
|
height: 35px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before, |
||||
|
.line-styled-div ::after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
border-bottom: 2px solid rgb(186, 190, 197); |
||||
|
width: 150px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before { |
||||
|
margin: 7px 40px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::after { |
||||
|
margin: 7px -190px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div span { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
color: rgb(186, 190, 197); |
||||
|
font: 1em sans-serif; |
||||
|
} |
||||
|
|
||||
|
.tab button { |
||||
|
font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
color: rgb(132, 134, 139); |
||||
|
background-color: inherit; |
||||
|
float: left; |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
cursor: pointer; |
||||
|
padding: 14px 16px; |
||||
|
transition: 0.3s; |
||||
|
min-width: 180px; |
||||
|
} |
||||
|
|
||||
|
.tab button :hover { |
||||
|
border-bottom: 1px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tab button.active { |
||||
|
border-bottom: 3px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tabcontent { |
||||
|
display: none; |
||||
|
padding: 6px 12px; |
||||
|
border: 1px solid #ccc; |
||||
|
border-top: none; |
||||
|
} |
||||
|
|
||||
|
.input-box { |
||||
|
font-size: 15px; |
||||
|
width: 280px; |
||||
|
border: 0px; |
||||
|
outline: none; |
||||
|
background: transparent; |
||||
|
} |
||||
|
|
||||
|
.input-box :active { |
||||
|
border: 0px; |
||||
|
} |
||||
|
|
||||
|
.input-div { |
||||
|
margin-top: 28px; |
||||
|
border: 1.9px solid rgb(132, 134, 139); |
||||
|
min-height: 20px; |
||||
|
padding: 9px; |
||||
|
border-radius: 8px; |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.input-div span { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
border-radius: 30px; |
||||
|
color: #d52b1f; |
||||
|
border: 1px solid #d52b1f; |
||||
|
text-align: center; |
||||
|
font: 1rem sans-serif; |
||||
|
} |
||||
|
|
||||
|
.input-div.error { |
||||
|
border: 1.9px solid #d52b1f; |
||||
|
background-color: #fbeceb; |
||||
|
} |
||||
|
|
||||
|
.input-div.error input { |
||||
|
background-color: #fbeceb; |
||||
|
} |
||||
|
|
||||
|
.input-div-check { |
||||
|
margin-top: 15px; |
||||
|
font-size: 18px; |
||||
|
display: flex; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.input-div-check input { |
||||
|
width: 30px; |
||||
|
height: 25px; |
||||
|
display: flex; |
||||
|
margin-right: 25px; |
||||
|
} |
||||
|
|
||||
|
.input-div-check label { |
||||
|
margin-top: 4.5px; |
||||
|
color: rgb(132, 134, 139); |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
@ -0,0 +1,24 @@ |
|||||
|
|
||||
|
<div class="tab"> |
||||
|
<button class="@(GetTabClass(0))" onclick="@(() => SwitchTabs(0))">Email or User ID</button> |
||||
|
<button class="@(GetTabClass(1))" onclick="@(() => SwitchTabs(1))">Phone</button> |
||||
|
</div> |
||||
|
|
||||
|
@if (activeTab == 0) |
||||
|
{ |
||||
|
<UsernameTab /> |
||||
|
} |
||||
|
else if (activeTab == 1) |
||||
|
{ |
||||
|
<PhoneAuthTab /> |
||||
|
} |
||||
|
@code { |
||||
|
private int activeTab = 0; |
||||
|
|
||||
|
private string GetTabClass(int tabId) => tabId == activeTab ? "tablinks active" : "tablinks"; |
||||
|
|
||||
|
private void SwitchTabs(int tabId) |
||||
|
{ |
||||
|
activeTab = tabId; |
||||
|
} |
||||
|
} |
@ -0,0 +1,153 @@ |
|||||
|
@font-face { |
||||
|
font-family: "titleFont"; |
||||
|
src: url("../fonts/Rockwill.otf"); |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.form-section { |
||||
|
border: rgb(186, 190, 197) 0.5px solid; |
||||
|
min-height: 690px; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
margin: auto; |
||||
|
max-width: 400px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.form-section h2 { |
||||
|
font-size: 24pt; |
||||
|
font-weight: 800; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 17px; |
||||
|
margin-top: 20px; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.title-section { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
font-size: medium; |
||||
|
font-family: "titleFont"; |
||||
|
color: rgb(186, 190, 197); |
||||
|
} |
||||
|
|
||||
|
.title-section a { |
||||
|
font-size: 30pt; |
||||
|
text-decoration: none; |
||||
|
color: rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.title-section a img { |
||||
|
margin: auto !important; |
||||
|
height: 80px !important; |
||||
|
max-width: 80px !important; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(255, 255, 255); |
||||
|
border: 2px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
width: 100%; |
||||
|
max-width: 310px; |
||||
|
height: inherit; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(7, 7, 154); |
||||
|
border: 1px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
color: white; |
||||
|
width: 50%; |
||||
|
max-width: 310px; |
||||
|
height: 40px; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
transition: width 1.5s ease; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored div > i { |
||||
|
width: 20px; |
||||
|
margin: 5px; |
||||
|
background-repeat: no-repeat; |
||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwYzIuNzk2IDAgNC44OTMgMi4xODQgNC45OTYgNS4yNjJMMTMgNS41VjdoMWEyIDIgMCAwIDEgMiAydjlhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDFWNS41QzMgMi4yOTggNS4xMzMgMCA4IDBabTYgOUgydjloMTJWOVptLTYgMmEyIDIgMCAwIDEgMS4wMDEgMy43MzJMOSAxNS4yYzAgLjQ0Mi0uNDQ4LjgtMSAuOC0uNTEzIDAtLjkzNi0uMzA5LS45OTMtLjcwN0w3IDE1LjJ2LS40NjhBMiAyIDAgMCAxIDggMTFabTAtOUM2LjMzMiAyIDUuMDg4IDMuMjc3IDUuMDA1IDUuMjgyTDUgNS41VjdoNlY1LjVDMTEgMy4zNyA5LjcyOCAyIDggMloiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg=="); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored:hover { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-title { |
||||
|
font-size: 15px; |
||||
|
margin: 7px; |
||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-image { |
||||
|
height: 35px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before, |
||||
|
.line-styled-div ::after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
border-bottom: 2px solid rgb(186, 190, 197); |
||||
|
width: 150px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before { |
||||
|
margin: 7px 40px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::after { |
||||
|
margin: 7px -190px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div span { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
color: rgb(186, 190, 197); |
||||
|
font: 1em sans-serif; |
||||
|
} |
||||
|
|
||||
|
.tab button { |
||||
|
font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
color: rgb(132, 134, 139); |
||||
|
background-color: inherit; |
||||
|
float: left; |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
cursor: pointer; |
||||
|
padding: 14px 16px; |
||||
|
transition: 0.3s; |
||||
|
min-width: 180px; |
||||
|
} |
||||
|
|
||||
|
.tab button :hover { |
||||
|
border-bottom: 1px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tab button.active { |
||||
|
border-bottom: 3px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tabcontent { |
||||
|
display: none; |
||||
|
padding: 6px 12px; |
||||
|
border: 1px solid #ccc; |
||||
|
border-top: none; |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
@using Biskilog_Accounting.Shared.Interfaces |
||||
|
@using Biskilog_Accounting.Client.Pages.Auth.Components |
||||
|
@inject NavigationManager m_navigationManager |
||||
|
@layout AuthLayout |
||||
|
@inject HttpClient m_http |
||||
|
@inject ITokenService m_tokenService |
||||
|
<form> |
||||
|
<div class="input-div"> |
||||
|
<input type="text" id="emailId" class="input-box" placeholder="Email or User ID" autocomplete="username email" @oninput="@(args => usernameInput(args.Value.ToString()))" @onkeydown="@Enter" /><br /> |
||||
|
<span class="@m_usernameErrorClass">x</span> |
||||
|
</div> |
||||
|
<div class="input-div"> |
||||
|
<input type="password" id="password" class="input-box" placeholder="Password" autocomplete="current-password" @oninput="@(args => passwordInput(args.Value.ToString()))" @onkeydown="@Enter" /><br /> |
||||
|
<span class="@m_passwordErrorClass">x</span> |
||||
|
</div> |
||||
|
<div class="input-div-check"> |
||||
|
<input type="checkbox" id="rememberme-checkbox" name="rememberme-checkbox" class="input-box" /><br /> |
||||
|
<label for="rememberme-checkbox">Remember me</label> |
||||
|
</div> |
||||
|
</form> |
||||
|
|
||||
|
<button type="button" class="sign-in-gbutton-colored" @onclick="Authenticate"> |
||||
|
<div style="display: inline-flex;"> |
||||
|
<i></i> |
||||
|
<span class="sign-in-gbutton-title">Sign In</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
<a class="reset-link">Forgot your password?</a> |
||||
|
|
@ -0,0 +1,195 @@ |
|||||
|
@font-face { |
||||
|
font-family: "titleFont"; |
||||
|
src: url("../fonts/Rockwill.otf"); |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.form-section { |
||||
|
border: rgb(186, 190, 197) 0.5px solid; |
||||
|
min-height: 690px; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
margin: auto; |
||||
|
max-width: 400px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.form-section h2 { |
||||
|
font-size: 24pt; |
||||
|
font-weight: 800; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 17px; |
||||
|
margin-top: 20px; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.title-section { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
font-size: medium; |
||||
|
font-family: "titleFont"; |
||||
|
color: rgb(186, 190, 197); |
||||
|
} |
||||
|
|
||||
|
.title-section a { |
||||
|
font-size: 30pt; |
||||
|
text-decoration: none; |
||||
|
color: rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.title-section a img { |
||||
|
margin: auto !important; |
||||
|
height: 80px !important; |
||||
|
max-width: 80px !important; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(255, 255, 255); |
||||
|
border: 2px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
width: 100%; |
||||
|
max-width: 310px; |
||||
|
height: inherit; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(7, 7, 154); |
||||
|
border: 1px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
color: white; |
||||
|
width: 50%; |
||||
|
max-width: 310px; |
||||
|
height: 40px; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
transition: width 1.5s ease; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored div > i { |
||||
|
width: 20px; |
||||
|
margin: 5px; |
||||
|
background-repeat: no-repeat; |
||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwYzIuNzk2IDAgNC44OTMgMi4xODQgNC45OTYgNS4yNjJMMTMgNS41VjdoMWEyIDIgMCAwIDEgMiAydjlhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDFWNS41QzMgMi4yOTggNS4xMzMgMCA4IDBabTYgOUgydjloMTJWOVptLTYgMmEyIDIgMCAwIDEgMS4wMDEgMy43MzJMOSAxNS4yYzAgLjQ0Mi0uNDQ4LjgtMSAuOC0uNTEzIDAtLjkzNi0uMzA5LS45OTMtLjcwN0w3IDE1LjJ2LS40NjhBMiAyIDAgMCAxIDggMTFabTAtOUM2LjMzMiAyIDUuMDg4IDMuMjc3IDUuMDA1IDUuMjgyTDUgNS41VjdoNlY1LjVDMTEgMy4zNyA5LjcyOCAyIDggMloiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg=="); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored:hover { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-title { |
||||
|
font-size: 15px; |
||||
|
margin: 7px; |
||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-image { |
||||
|
height: 35px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before, |
||||
|
.line-styled-div ::after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
border-bottom: 2px solid rgb(186, 190, 197); |
||||
|
width: 150px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before { |
||||
|
margin: 7px 40px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::after { |
||||
|
margin: 7px -190px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div span { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
color: rgb(186, 190, 197); |
||||
|
font: 1em sans-serif; |
||||
|
} |
||||
|
|
||||
|
.input-box { |
||||
|
font-size: 15px; |
||||
|
width: 280px; |
||||
|
border: 0px; |
||||
|
outline: none; |
||||
|
background: transparent; |
||||
|
} |
||||
|
|
||||
|
.input-box :active { |
||||
|
border: 0px; |
||||
|
} |
||||
|
|
||||
|
.input-div { |
||||
|
margin-top: 28px; |
||||
|
border: 1.9px solid rgb(132, 134, 139); |
||||
|
min-height: 20px; |
||||
|
padding: 9px; |
||||
|
border-radius: 8px; |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.input-div span { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
border-radius: 30px; |
||||
|
color: #d52b1f; |
||||
|
border: 1px solid #d52b1f; |
||||
|
text-align: center; |
||||
|
font: 1rem sans-serif; |
||||
|
} |
||||
|
|
||||
|
.input-div.error { |
||||
|
border: 1.9px solid #d52b1f; |
||||
|
background-color: #fbeceb; |
||||
|
} |
||||
|
|
||||
|
.input-div.error input { |
||||
|
background-color: #fbeceb; |
||||
|
} |
||||
|
|
||||
|
.input-div-check { |
||||
|
margin-top: 15px; |
||||
|
font-size: 18px; |
||||
|
display: flex; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.input-div-check input { |
||||
|
width: 30px; |
||||
|
height: 25px; |
||||
|
display: flex; |
||||
|
margin-right: 25px; |
||||
|
} |
||||
|
|
||||
|
.input-div-check label { |
||||
|
margin-top: 4.5px; |
||||
|
color: rgb(132, 134, 139); |
||||
|
text-align: center; |
||||
|
} |
||||
|
.auth-success { |
||||
|
color: green; |
||||
|
} |
||||
|
|
||||
|
.auth-failure { |
||||
|
color: red; |
||||
|
} |
||||
|
|
||||
|
.hidden { |
||||
|
display: none; |
||||
|
} |
@ -1,139 +1,38 @@ |
|||||
@using Biskilog_Accounting.Shared.Interfaces |
@using Biskilog_Accounting.Shared.Interfaces |
||||
|
@using Biskilog_Accounting.Client.Pages.Auth.Components |
||||
@inject NavigationManager m_navigationManager |
@inject NavigationManager m_navigationManager |
||||
@layout AuthLayout |
@layout AuthLayout |
||||
@inject HttpClient m_http |
@inject HttpClient m_http |
||||
@inject ITokenService m_tokenService |
@inject ITokenService m_tokenService |
||||
@page "/login" |
@page "/login" |
||||
|
|
||||
<style> |
<section class="title-section"> |
||||
.gradient-custom-2 { |
<a href="javascrivpt:void(0)"> |
||||
/* fallback for old browsers */ |
<img class="logo-image" src="../icon-512.png" alt="The logo of Biskilog pos" /> |
||||
background: #fccb90; |
<span>BISKILOG</span> |
||||
/* Chrome 10-25, Safari 5.1-6 */ |
</a> |
||||
background: -webkit-linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
</section> |
||||
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ |
<section class="form-section"> |
||||
background: linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
<h2>Sign in</h2> |
||||
} |
<span style="font-family: sans-serif; color: rgb(141, 144, 150);"> |
||||
|
Enter your credentials to use <a href="javascrivpt:void(0)">Biskilog</a> accounting |
||||
.login-buttons { |
</span> |
||||
display: flex; |
<button type="button" class="sign-in-gbutton"> |
||||
flex-direction: column; |
<div style="display: inline-flex;"> |
||||
justify-content: center; |
<img src="../assets/img/google-image.png" class="sign-in-gbutton-image" alt="Google logo" /> |
||||
align-items: center; |
<span class="sign-in-gbutton-title">Sign in with Google</span> |
||||
} |
|
||||
|
|
||||
.button-row { |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
justify-content: center; |
|
||||
align-items: center; |
|
||||
margin-bottom: 10px; |
|
||||
} |
|
||||
|
|
||||
.facebook-button, .twitter-button, .google-button, .apple-button, .microsoft-button { |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
align-items: center; |
|
||||
width: 40px; |
|
||||
height: 40px; |
|
||||
border-radius: 50%; |
|
||||
margin-right: 10px; |
|
||||
text-decoration: none; |
|
||||
color: #fff; |
|
||||
} |
|
||||
|
|
||||
.facebook-button { |
|
||||
background-color: #3B5998; |
|
||||
} |
|
||||
|
|
||||
.twitter-button { |
|
||||
background-color: #1DA1F2; |
|
||||
} |
|
||||
|
|
||||
.google-button { |
|
||||
background-color: #DB4437; |
|
||||
} |
|
||||
|
|
||||
.apple-button { |
|
||||
background-color: #000; |
|
||||
} |
|
||||
|
|
||||
.microsoft-button { |
|
||||
background-color: #00A4EF; |
|
||||
} |
|
||||
|
|
||||
</style> |
|
||||
<section class="h-100 gradient-form" style="background-color: #eee;"> |
|
||||
<div class="container py-5 h-100"> |
|
||||
<div class="row d-flex justify-content-center align-items-center h-100"> |
|
||||
<div class="col-xl-10"> |
|
||||
<div class="card rounded-3 text-black"> |
|
||||
<div class="row g-0"> |
|
||||
<div class="col-lg-6"> |
|
||||
<div class="card-body p-md-5 mx-md-4"> |
|
||||
|
|
||||
<div class="text-center"> |
|
||||
<img src="icon-512.png" |
|
||||
style="width: 185px;" alt="logo"> |
|
||||
<h4 class="mt-1 mb-5 pb-1">Biskilog Accounting</h4> |
|
||||
</div> |
|
||||
|
|
||||
<form> |
|
||||
<p>Please login to your account</p> |
|
||||
|
|
||||
<div class="form-outline mb-4"> |
|
||||
<input type="email" id="form2Example11" class="form-control" |
|
||||
placeholder="Phone number or email address" @oninput="@(args => usernameInput(args.Value.ToString()))" @onkeydown="@Enter" /> |
|
||||
<label class="form-label" for="form2Example11">Username</label> |
|
||||
</div> |
|
||||
|
|
||||
<div class="form-outline mb-4"> |
|
||||
<input type="password" id="form2Example22" class="form-control" @oninput="@(args => passwordInput(args.Value.ToString()))" @onkeydown="@Enter" /> |
|
||||
<label class="form-label" for="form2Example22">Password</label> |
|
||||
</div> |
</div> |
||||
|
|
||||
<div class="text-center pt-1 mb-5 pb-1"> |
|
||||
<button class="btn btn-primary btn-block fa-lg gradient-custom-2 mb-3" type="button" @onclick="pagaAuth"> |
|
||||
Log |
|
||||
in |
|
||||
</button> |
</button> |
||||
<a class="text-muted" href="#!">Forgot password?</a> |
<div class="line-styled-div"> |
||||
</div> |
<span>OR</span> |
||||
|
|
||||
<div class="d-flex align-items-center justify-content-center pb-4"> |
|
||||
<div class="login-buttons"> |
|
||||
<div class="button-row"> |
|
||||
<a href="#" class="facebook-button"><i class="fab fa-facebook-f"></i></a> |
|
||||
<a href="#" class="twitter-button"><i class="fab fa-twitter"></i></a> |
|
||||
<a href="#" class="google-button"><i class="fab fa-google"></i></a> |
|
||||
</div> |
|
||||
<div class="button-row"> |
|
||||
<a href="#" class="apple-button"><i class="fab fa-apple"></i></a> |
|
||||
<a href="#" class="microsoft-button"><i class="fab fa-windows"></i></a> |
|
||||
</div> |
</div> |
||||
</div> |
<TabContainer /> |
||||
|
|
||||
</div> |
|
||||
|
|
||||
</form> |
|
||||
|
|
||||
</div> |
<hr style="margin-top: 15px; width: 320px; margin-bottom: 15px; color: #babec5; border-style: solid;" /> |
||||
</div> |
<label class="policy-statement"> |
||||
<div class="col-lg-6 d-flex align-items-center gradient-custom-2"> |
By selecting Sign In or Sign in with Google, you agree to our <a href="#">Terms</a> and acknowledge our <a href="#">Privacy Statement</a>. |
||||
<div class="text-white px-3 py-4 p-md-5 mx-md-4"> |
</label> |
||||
<h4 class="mb-4">Simplify Your Business Management with Biskilog's Suite of Tools</h4> |
<div class="RecaptchaSignIn"> |
||||
<p class="small mb-0"> |
Invisible reCAPTCHA by Google <a href="https://www.google.com/intl/en/policies/privacy/">Privacy Policy</a> and <a href="https://www.google.com/intl/en/policies/terms/">Terms of Use</a>. |
||||
Stay on top of your business operations from anywhere with Biskilog - now a user-friendly web application |
|
||||
that not only provides a comprehensive operational summary of all records from the BISKILOG POS software |
|
||||
but also allows you to make sales and access new features. Monitor operations, make informed decisions and simplify |
|
||||
your business management with Biskilog's powerful and convenient web app. Say goodbye to manual record-keeping |
|
||||
and hello to streamlined efficiency with Biskilog. |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
</div> |
||||
</section> |
</section> |
@ -0,0 +1,185 @@ |
|||||
|
@font-face { |
||||
|
font-family: "titleFont"; |
||||
|
src: url("../../fonts/Rockwill.otf"); |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.form-section { |
||||
|
border: rgb(186, 190, 197) 0.5px solid; |
||||
|
min-height: 690px; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
margin: auto; |
||||
|
max-width: 400px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.form-section h2 { |
||||
|
font-size: 24pt; |
||||
|
font-weight: 800; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 17px; |
||||
|
margin-top: 20px; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.title-section { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
font-size: medium; |
||||
|
font-family: "titleFont"; |
||||
|
color: rgb(186, 190, 197); |
||||
|
} |
||||
|
|
||||
|
.title-section a { |
||||
|
font-size: 30pt; |
||||
|
text-decoration: none; |
||||
|
color: rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.title-section a img { |
||||
|
margin: auto !important; |
||||
|
height: 80px !important; |
||||
|
max-width: 80px !important; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(255, 255, 255); |
||||
|
border: 2px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
width: 100%; |
||||
|
max-width: 310px; |
||||
|
height: inherit; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
color: rgb(57, 58, 61); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored { |
||||
|
padding: 0px 10px; |
||||
|
background: rgb(7, 7, 154); |
||||
|
border: 1px solid rgb(186, 190, 197); |
||||
|
border-radius: 2px; |
||||
|
white-space: nowrap; |
||||
|
color: white; |
||||
|
width: 50%; |
||||
|
max-width: 310px; |
||||
|
height: 40px; |
||||
|
margin: 20px; |
||||
|
max-height: 45px; |
||||
|
cursor: pointer; |
||||
|
transition: width 1.5s ease; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored div > i { |
||||
|
width: 20px; |
||||
|
margin: 5px; |
||||
|
background-repeat: no-repeat; |
||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwYzIuNzk2IDAgNC44OTMgMi4xODQgNC45OTYgNS4yNjJMMTMgNS41VjdoMWEyIDIgMCAwIDEgMiAydjlhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDFWNS41QzMgMi4yOTggNS4xMzMgMCA4IDBabTYgOUgydjloMTJWOVptLTYgMmEyIDIgMCAwIDEgMS4wMDEgMy43MzJMOSAxNS4yYzAgLjQ0Mi0uNDQ4LjgtMSAuOC0uNTEzIDAtLjkzNi0uMzA5LS45OTMtLjcwN0w3IDE1LjJ2LS40NjhBMiAyIDAgMCAxIDggMTFabTAtOUM2LjMzMiAyIDUuMDg4IDMuMjc3IDUuMDA1IDUuMjgyTDUgNS41VjdoNlY1LjVDMTEgMy4zNyA5LjcyOCAyIDggMloiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg=="); |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-colored:hover { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-title { |
||||
|
font-size: 15px; |
||||
|
margin: 7px; |
||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
.sign-in-gbutton-image { |
||||
|
height: 35px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before, |
||||
|
.line-styled-div ::after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
border-bottom: 2px solid rgb(186, 190, 197); |
||||
|
width: 150px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::before { |
||||
|
margin: 7px 40px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div ::after { |
||||
|
margin: 7px -190px; |
||||
|
} |
||||
|
|
||||
|
.line-styled-div span { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
color: rgb(186, 190, 197); |
||||
|
font: 1em sans-serif; |
||||
|
} |
||||
|
|
||||
|
.tab button { |
||||
|
font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
color: rgb(132, 134, 139); |
||||
|
background-color: inherit; |
||||
|
float: left; |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
cursor: pointer; |
||||
|
padding: 14px 16px; |
||||
|
transition: 0.3s; |
||||
|
min-width: 180px; |
||||
|
} |
||||
|
|
||||
|
.tab button :hover { |
||||
|
border-bottom: 1px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tab button.active { |
||||
|
border-bottom: 3px solid rgb(7, 7, 154); |
||||
|
} |
||||
|
|
||||
|
.tabcontent { |
||||
|
display: none; |
||||
|
padding: 6px 12px; |
||||
|
border: 1px solid #ccc; |
||||
|
border-top: none; |
||||
|
} |
||||
|
.RecaptchaSignIn { |
||||
|
width: 100%; |
||||
|
background-color: rgb(236, 238, 241); |
||||
|
font-size: 14px; |
||||
|
color: rgb(141, 144, 150); |
||||
|
padding: 16px; |
||||
|
text-align: center; |
||||
|
position: absolute; |
||||
|
bottom: 0px; |
||||
|
font: 0.8em sans-serif; |
||||
|
} |
||||
|
|
||||
|
.policy-statement { |
||||
|
margin-left: 40px; |
||||
|
margin-right: 40px; |
||||
|
font: 0.9em sans-serif; |
||||
|
color: rgb(141, 144, 150); |
||||
|
} |
||||
|
|
||||
|
.RecaptchaSignIn > a, |
||||
|
label > a, |
||||
|
.reset-link, |
||||
|
span > a { |
||||
|
color: royalblue; |
||||
|
cursor: pointer; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.reset-link { |
||||
|
font: 0.9em sans-serif; |
||||
|
} |
||||
|
|
After Width: | Height: | Size: 588 B |
@ -0,0 +1 @@ |
|||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue