- Fixed alternate login methods text centering.
- Fixed background, it is now consistent.
- Fixed unnecessary .is-full-screen classes which added extra height everywhere.
- Fixed 2FA enter button centering.
- Made profile pic upload look better and changed the layout.
- Changed various margins to be more unified (user page, etc.).
- Fixed the weird line-height bs.
This commit is contained in:
D3visionNL 2022-11-28 18:00:46 +01:00
parent f1a61067c1
commit 18208699e0
7 changed files with 137 additions and 20 deletions

View File

@ -47,7 +47,7 @@ function App() {
if (loading) return null;
return (
<div className='app is-full-screen'>
<div className='app'>
<div className='background'>

View File

@ -18,6 +18,22 @@
--font-family-mono: monaco, "Consolas", "Lucida Console", monospace;
}
.w-100{
width: 100% !important;
}
.w-auto{
width: auto !important;
}
.f-s0{
flex-shrink: 0;
}
.f-g{
flex-grow: 1;
}
hr{
margin: 1.5rem 0;
}
@ -83,7 +99,7 @@ h1, h2, h3, h4, h5, h6 {
}
.pageTitle{
margin: 4px;
margin: 7px;
}
.flex {
@ -112,7 +128,7 @@ tbody tr:hover {
}
.is-full-screen {
height: 100%;
height: inherit;
min-height: unset;
}
@ -121,20 +137,34 @@ tbody tr:hover {
box-shadow: 0 1px 3px #00000085;
}
.bg-triangles{
body:before{
content: ' ';
display: block;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0.4;
background: url(../img/background.svg);
background-repeat: no-repeat;
background-position: 50% 0;
background-size: cover;
z-index: -1000;
}
.dir-column{
display: flex;
flex-direction: column;
}
.dir-row{
display: flex;
flex-direction: row;
}
.flex-wrap{
display: flex;
flex-wrap: wrap;
}
@ -585,6 +615,10 @@ tbody tr:hover {
margin-left: auto !important;
}
.ml-20{
margin-left: 20px !important;
}
.iconButton{
padding: 0.5rem;
}
@ -632,4 +666,66 @@ tbody tr:hover {
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:focus .tooltiptext {
visibility: visible;
}
.drop-container {
position: relative;
display: flex;
gap: 10px;
flex-direction: column;
justify-content: center;
align-items: center;
height: 200px;
padding: 20px;
border-radius: 10px;
border: 2px dashed #555;
color: var(--font-color);
cursor: pointer;
transition: background .2s ease-in-out, border .2s ease-in-out;
}
.drop-container:hover {
background: rgba(238, 238, 238, 0.048);
border-color: var(--bg-color)
}
.drop-container input[type=file]{
width: auto !important;
}
.drop-container input[type=file]:focus{
border: none !important;
}
.drop-title {
font-size: 20px;
font-weight: bold;
text-align: center;
transition: color .2s ease-in-out;
}
input[type=file] {
width: 350px;
max-width: 100%;
padding: 5px;
border: none !important;
}
input[type=file]::file-selector-button {
background: var(--color-lightGrey);
border: 1px solid transparent;
border-radius: 4px;
color: var(--color-darkGrey);
cursor: pointer;
display: inline-block;
font-size: var(--font-size);
line-height: 1;
padding: 1rem 2.5rem;
text-align: center;
text-decoration: none;
transform: scale(1);
transition: opacity .2s ease;
}
input[type=file]::file-selector-button:hover {
opacity: .8;
}

View File

@ -3,4 +3,8 @@
/* height: 100%; */
margin: 10px;
background-color: var(--background-secondary);
}
.pfp-wrapper{
gap: 20px;
flex-wrap: wrap;
}

View File

@ -1,5 +1,9 @@
.third-party-login{
cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
font-size: 14px;
}
input{
margin-bottom: 1rem;
@ -35,4 +39,9 @@ input{
}
.main-content.login{
margin-top: 0;
height: 100%;
min-height: 100vh;
}
.main-content.login>div:first-child{
height: calc(100vh - 55.6px)
}

View File

@ -89,15 +89,24 @@ const Profile = () => {
<div className="col-6-lg col-12">
<h3>Profile</h3>
<p><b>Profile Picture</b></p>
<img width={256} height={256} src={`/api/users/${user.id}/avatar`} />
<form>
<input type='file' accept='image/*' />
<button className="button primary">Submit</button>
</form>
<h4>3rd party connections</h4>
<div className="dir-row pfp-wrapper">
<div className="w-auto f-s0">
<p><b>Profile Picture</b></p>
<img width={256} height={256} src={`/api/users/${user.id}/avatar`} />
</div>
<div className="f-g">
<p><b>Change Profile Picture</b></p>
<form className="f-g">
<label htmlFor="pfp_upload" className="drop-container">
<span className="drop-title">Drop your file here</span>
or
<input type="file" id="pfp_upload" accept="image/*" required></input>
</label>
<button className="button primary mt-3">Submit</button>
</form>
</div>
</div>
<h4 className="mt-5">Third party connections</h4>
<ThirdPartyConnections user={user} />
</div>
@ -122,7 +131,7 @@ const Profile = () => {
<button className="button primary">Save</button>
</form>
<p className="mb-0 mt-4"><b>Two Factor:</b> {user.twoFactor ? 'enabled' : 'disabled'}</p>
<p className="mb-0 mt-5"><b>Two Factor:</b> {user.twoFactor ? 'enabled' : 'disabled'}</p>
<TwoFactorControls user={user} />
</div>

View File

@ -113,16 +113,15 @@ const TwoFactor = () => {
<div className="card mb-3 is-center dir-column">
<h2>Verification Code</h2>
{fail ? <p className="mt-0">Invalid code</p> : null}
<form>
<form className="is-center dir-column">
<input autoComplete='off' placeholder='Your 2FA code...' required id='2faCode' type='password' />
<button className="button primary m-3" onClick={twoFactorClick}>Enter</button>
<button className="button primary mt-1 mb-3" onClick={twoFactorClick}>Enter</button>
</form>
</div>
</div>;
};
const Login = () => {
document.body.classList.add('bg-triangles');
return <div className="row is-center is-full-screen is-marginless">
<div className='loginWrapper col-6 col-6-md col-3-lg'>

View File

@ -55,7 +55,7 @@ const Permissions = ({ perms }) => {
}
return <div>
<h4>Permissions </h4>
<h3>Permissions</h3>
<ul className="tree">
{elements}
</ul>
@ -121,7 +121,7 @@ const User = ({ user }) => {
}}>Back</button>
<h2 className="userId">User {user.id}</h2>
</div>
<div className="userActionButtons">
<div className="userActionButtons mt-4">
{user.disabled ? <button className="button success">Enable</button> : <button className="button error">Disable</button>}
<button className="button error">Delete</button>
</div>
@ -141,7 +141,7 @@ const User = ({ user }) => {
<option>Bob</option>
</select>
<h3>Applications</h3>
<h3 className="mt-5">Applications</h3>
<Routes>
<Route path='/' element={<ApplicationList apps={apps} />} />
<Route path='/applications/:appid' element={<ApplicationWrapper />} />