From b56f602a58d41fa8e21b1cbe74e095879a8bafea Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Mon, 4 Nov 2024 13:14:48 -0800 Subject: [PATCH 01/22] updated logo, top navbar,sub navbar, and splitting non auth and auth layouts --- .../images/logo/logo_harper_db_studio.png | Bin 0 -> 67423 bytes src/assets/styles/components/_subnav.scss | 2 +- src/assets/styles/components/_topnav.scss | 6 ++-- src/assets/styles/core/_base.scss | 2 +- src/components/TopNav.js | 26 +++++++++--------- src/components/layouts/App.js | 22 ++++++++------- 6 files changed, 30 insertions(+), 28 deletions(-) create mode 100644 src/assets/images/logo/logo_harper_db_studio.png diff --git a/src/assets/images/logo/logo_harper_db_studio.png b/src/assets/images/logo/logo_harper_db_studio.png new file mode 100644 index 0000000000000000000000000000000000000000..85bd08129588362302cbbcab1160454b4f1d079c GIT binary patch literal 67423 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�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%0DsAe@%N@$QV;E1{Nh6;(xC!gDwUGES-L4E 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 auth?.orgs?.filter((org) => org.status === 'invited').length, - + [auth.orgs], ); const showManageIcon = useMemo( () => auth?.orgs?.find((o) => o.customer_id?.toString() === customer?.customer_id?.toString())?.status === 'owner', - + [auth.orgs, customer.customer_id], ); @@ -119,6 +119,14 @@ function TopNav({ isMaintenance, loggedIn = false }) { )} + {!config.is_local_studio && ( +
  • + + +  Resources + +
  • + )} {themes.length > 1 && ( )} - {!config.is_local_studio && ( -
  • - - -  docs - -
  • - )} {loggedIn ? ( ) : ( -  sign in +  Sign In )} diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js index b09950d89..5f9a30711 100644 --- a/src/components/layouts/App.js +++ b/src/components/layouts/App.js @@ -130,13 +130,13 @@ function App() { return (
    -
    - }> - - - {fetchingUser ? ( - - ) : loggedIn ? ( + }> + + + {fetchingUser ? ( + + ) : loggedIn ? ( +
    }> {/* can we put instance routes in here, each in a suspense tag (since they're lazily loaded) */} @@ -153,7 +153,9 @@ function App() { - ) : ( +
    + ) : ( +
    }> @@ -164,8 +166,8 @@ function App() { - )} -
    +
    + )}
    HarperDB Studio v{config.studio_version} From f26cd19a454630e56d580aa988b1f66ad4b5f349 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Tue, 5 Nov 2024 15:20:25 -0800 Subject: [PATCH 02/22] created layout for auth pages and modified styling for sign-in page --- src/assets/styles/components/_button.scss | 2 +- src/assets/styles/components/_topnav.scss | 4 +- src/assets/styles/core/_base.scss | 4 + src/assets/styles/overrides/_akamai.scss | 7 +- src/assets/styles/overrides/_dark.scss | 8 +- src/assets/styles/overrides/_light.scss | 13 +-- src/assets/styles/overrides/_lumen.scss | 6 +- src/assets/styles/overrides/_verizon.scss | 2 +- src/assets/styles/pages/_auth.scss | 57 +++++------ src/components/auth/SignIn.js | 111 +++++++++++----------- src/components/layouts/App.js | 48 ++++++++-- 11 files changed, 140 insertions(+), 122 deletions(-) diff --git a/src/assets/styles/components/_button.scss b/src/assets/styles/components/_button.scss index 0133da58c..e19ebfbb4 100644 --- a/src/assets/styles/components/_button.scss +++ b/src/assets/styles/components/_button.scss @@ -1,7 +1,7 @@ .btn { align-items: center; background: linear-gradient(to bottom, rgb(255 255 255 / 5%) 31%, rgb(0 0 0 / 5%) 100%); - border: 1px solid $faintest-white-overlay !important; + // border: 1px solid $faintest-white-overlay !important; border-radius: $border-radius; // box-shadow: 0 0 3px $grey-overlay !important; diff --git a/src/assets/styles/components/_topnav.scss b/src/assets/styles/components/_topnav.scss index ab443a45f..fbf16c6f0 100644 --- a/src/assets/styles/components/_topnav.scss +++ b/src/assets/styles/components/_topnav.scss @@ -1,6 +1,6 @@ #app-nav { - background: $gradient-purple-magenta !important; - border-bottom: 1px solid $black-overlay; + background: $color-black !important; + border-bottom: 1px solid $color-black; height: 80px; justify-content: space-between !important; left: 0; diff --git a/src/assets/styles/core/_base.scss b/src/assets/styles/core/_base.scss index f7d986cca..5299a40c1 100644 --- a/src/assets/styles/core/_base.scss +++ b/src/assets/styles/core/_base.scss @@ -17,5 +17,9 @@ body { padding: 0 1rem; } } + .auth-container { + height: calc(100vh - 80px); + margin-top: 80px; + } } } diff --git a/src/assets/styles/overrides/_akamai.scss b/src/assets/styles/overrides/_akamai.scss index afe260347..85bfe7a23 100644 --- a/src/assets/styles/overrides/_akamai.scss +++ b/src/assets/styles/overrides/_akamai.scss @@ -2,8 +2,8 @@ $partner-brand-color: #017ac6; .akamai { #app-nav { - background: $color-white !important; - border-bottom: 1px solid $color-lightgrey; + background: $color-black !important; + border-bottom: 1px solid $color-black; #logo { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI0MjMuNXB4IiBoZWlnaHQ9IjE4NnB4IiB2aWV3Qm94PSIwIDAgNDIzLjUgMTg2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MjMuNSAxODY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRjM4QjAwO30KCS5zdDF7ZmlsbDojMDA5QkRFO30KPC9zdHlsZT4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEzMS42LDEzMS44aC0xNi44bDE0LjUtMjkuM2gwLjJMMTMxLjYsMTMxLjhMMTMxLjYsMTMxLjh6IE0xMzIuNCwxNDVsMSwxMS42aDE4LjRsLTYuMS02Ny43aC0yNy40CgkJCQlsLTM0LjcsNjcuN2gxOC44bDUuOC0xMS42TDEzMi40LDE0NUwxMzIuNCwxNDV6Ii8+CgkJCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTc3LjYsMTI3IDE4MC4zLDEyNyAxOTMuNSwxMDkuMiAyMTAuNSwxMDkuMiAxOTIuMywxMzIgMjAzLjUsMTU2LjYgMTg1LjQsMTU2LjYgMTc4LjEsMTM3LjQgCgkJCQkxNzUuNCwxMzcuNCAxNzEuMywxNTYuNiAxNTUuOCwxNTYuNiAxNzAuMSw4OC45IDE4NS43LDg4LjkgCQkJIi8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMzAuNCwxMzdjNS4xLDAsOC40LDAuNCw3LjYsNC4zYy0xLjEsNS0zLjIsNS44LTkuNyw1LjhjLTIuNCwwLTYuOCwwLTUuNy01LjEKCQkJCUMyMjMuNSwxMzcuNywyMjYuNiwxMzcsMjMwLjQsMTM3TDIzMC40LDEzN3ogTTIzNC43LDE1Ni42aDE1LjVsNi4zLTI5LjZjMy41LTE2LjMtMi44LTE4LjMtMTguNy0xOC4zYy0xMS4xLDAtMjEuOC0wLjEtMjUsMTQuNgoJCQkJaDE1LjVjMC45LTQuMywzLjUtNS4xLDcuNC01LjFjNi44LDAsNi41LDIuOCw1LjUsNy4ybC0xLjYsNy41aC0wLjdjLTAuNi01LjQtNy40LTUuMy0xMS44LTUuM2MtMTEuMiwwLTE3LjksMy41LTIwLjMsMTQuOQoJCQkJYy0yLjYsMTIuMSwzLjIsMTQuNywxNCwxNC43YzUuNCwwLDEyLjctMS4xLDE1LjItNy42aDAuNUwyMzQuNywxNTYuNkwyMzQuNywxNTYuNnoiLz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTI4MS42LDEwOS4ybC0xLjQsNi43aDAuNmMzLjEtNS42LDkuMi03LjIsMTQuNS03LjJjNi43LDAsMTMuMywxLjIsMTIuNCw5LjNoMC43YzIuMy02LjgsOS4yLTkuMywxNS4yLTkuMwoJCQkJYzEwLjksMCwxNS42LDQuNSwxMy4yLDE1LjVsLTYuOSwzMi40aC0xNS41bDUuOC0yNy40YzAuOC01LDEuNi04LjYtNC40LTguNnMtOC4xLDQtOS4xLDkuMWwtNS43LDI2LjloLTE1LjVsNi4xLTI4LjcKCQkJCWMwLjctNC4zLDEuMS03LjMtNC4zLTcuM2MtNi40LDAtOC4zLDMuNC05LjUsOS4xbC01LjcsMjYuOWgtMTUuNWwxMC4xLTQ3LjRMMjgxLjYsMTA5LjJMMjgxLjYsMTA5LjJ6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zNjEuMiwxMzdjNSwwLDguNCwwLjQsNy42LDQuM2MtMSw1LTMuMiw1LjgtOS43LDUuOGMtMi4zLDAtNi44LDAtNS43LTUuMUMzNTQuMywxMzcuNywzNTcuNCwxMzcsMzYxLjIsMTM3CgkJCQlMMzYxLjIsMTM3eiBNMzY1LjUsMTU2LjZIMzgxbDYuMy0yOS42YzMuNS0xNi4zLTIuOC0xOC4zLTE4LjctMTguM2MtMTEuMSwwLTIxLjktMC4xLTI1LDE0LjZoMTUuNWMwLjktNC4zLDMuNS01LjEsNy40LTUuMQoJCQkJYzYuOCwwLDYuNSwyLjgsNS41LDcuMmwtMS40LDcuNWgtMC43Yy0wLjYtNS40LTcuNC01LjMtMTEuOC01LjNjLTExLjIsMC0xNy45LDMuNS0yMC4zLDE0LjljLTIuNiwxMi4xLDMuMiwxNC43LDE0LDE0LjcKCQkJCWM1LjQsMCwxMi43LTEuMSwxNS4zLTcuNmgwLjVMMzY1LjUsMTU2LjZMMzY1LjUsMTU2LjZ6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDMuNCwxNTYuNmgtMTUuNWwxMC00Ny40aDE1LjVMNDAzLjQsMTU2LjZMNDAzLjQsMTU2LjZ6Ii8+CgkJPC9nPgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05MS41LDE3M0M1Ny4xLDE2Mi41LDMyLDEzMC43LDMyLDkzLjFDMzIsNTUsNTcuNiwyMi45LDkyLjYsMTIuOGMzLjYtMSwyLjYtMy40LTEuNy0zLjQKCQkJQzQ0LjQsOS40LDYuNiw0Ni45LDYuNiw5My4xczM3LjcsODMuNiw4NC4zLDgzLjZDOTUuMiwxNzYuNyw5NS40LDE3NC4yLDkxLjUsMTczeiIvPgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00OCwxMTIuNmMtMC4yLTIuMi0wLjQtNC41LTAuNC02LjhjMC0zNi43LDI5LjctNjYuNCw2Ni40LTY2LjRjMzQuNywwLDQ1LjEsMTUuNSw0Ni40LDE0LjUKCQkJYzEuNC0xLjEtMTIuNi0zMS44LTUzLjMtMzEuOGMtMzYuNywwLTY2LjQsMjkuNy02Ni40LDY2LjRjMCw4LjUsMS42LDE2LjYsNC41LDI0QzQ2LjQsMTE1LjcsNDguMywxMTUuNyw0OCwxMTIuNnoiLz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzUuOCw2NC44YzE3LjItNy41LDM4LjktNy43LDYwLjItMC4zYzE0LjMsNSwyMi42LDEyLjEsMjMuMywxMS44YzEuMS0wLjUtOC4zLTE1LjUtMjUuNC0yMS45CgkJCWMtMjAuNy03LjgtNDIuOS0zLjctNTkuMSw5QzczLDY0LjgsNzMuNyw2NS43LDc1LjgsNjQuOHoiLz4KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDE2LjksOTYuMWMwLDQuOC0zLjksOC43LTguNyw4LjdjLTQuOCwwLTguNy0zLjktOC43LTguN2MwLTQuOCwzLjktOC43LDguNy04LjdTNDE2LjksOTEuMyw0MTYuOSw5Ni4xeiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPgo='); @@ -20,7 +20,6 @@ $partner-brand-color: #017ac6; .active-org { border-right-color: $color-lightgrey !important; - &.open { border-color: $color-lightgrey !important; } @@ -314,7 +313,7 @@ $partner-brand-color: #017ac6; box-shadow: inset 0 0 5px $lighter-grey-overlay !important; } - #login-form { + .login-form { .card { background: $color-white !important; border: 1px solid $color-lightgrey !important; diff --git a/src/assets/styles/overrides/_dark.scss b/src/assets/styles/overrides/_dark.scss index 83b9cecf8..cc8e4133e 100644 --- a/src/assets/styles/overrides/_dark.scss +++ b/src/assets/styles/overrides/_dark.scss @@ -1,7 +1,7 @@ .dark { #app-nav { - background: $color-pureblack !important; - border-bottom: 1px solid $color-darkestgrey; + background: $color-black !important; + border-bottom: 1px solid $color-black; .navbar-nav { .active-org { @@ -106,7 +106,6 @@ &.asc { box-shadow: inset 0 2px 0 0 $faint-white-overlay; } - } } } @@ -206,7 +205,7 @@ } } - #login-form { + .login-form { .card { background: $color-pureblack !important; } @@ -275,5 +274,4 @@ background: $faintest-white-overlay !important; } } - } diff --git a/src/assets/styles/overrides/_light.scss b/src/assets/styles/overrides/_light.scss index 406e5779d..66f53e040 100644 --- a/src/assets/styles/overrides/_light.scss +++ b/src/assets/styles/overrides/_light.scss @@ -1,7 +1,7 @@ .light { #app-nav { - background: $color-white !important; - border-bottom: 1px solid $color-lightgrey; + background: $color-black !important; + border-bottom: 1px solid $color-black; #logo { background-image: url('../../images/logo/logo_dog_light.png'); @@ -15,7 +15,6 @@ .active-org { border-right-color: $color-lightgrey !important; - &.open { border-color: $color-lightgrey !important; } @@ -29,10 +28,10 @@ .btn-link, .nav-link, a { - color: $grey-overlay !important; + color: $color-lightgrey !important; &.active { - color: $black-overlay !important; + color: $color-white !important; } } } @@ -280,7 +279,7 @@ } } - #login-form { + .login-form { .card { background: $color-white !important; border: 1px solid $color-lightgrey !important; @@ -358,8 +357,6 @@ color: $color-darkgrey !important; } - - a, button, input, diff --git a/src/assets/styles/overrides/_lumen.scss b/src/assets/styles/overrides/_lumen.scss index 819e163b9..a5eeb3a97 100644 --- a/src/assets/styles/overrides/_lumen.scss +++ b/src/assets/styles/overrides/_lumen.scss @@ -2,8 +2,8 @@ $partner-brand-color: #0075c9; .lumen { #app-nav { - background: $color-white !important; - border-bottom: 1px solid $color-lightgrey; + background: $color-black !important; + border-bottom: 1px solid $color-black; #logo { background-image: url('../../images/logo/lumen.png'); @@ -285,7 +285,7 @@ $partner-brand-color: #0075c9; box-shadow: inset 0 0 5px $lighter-grey-overlay !important; } - #login-form { + .login-form { .card { background: $color-white !important; border: 1px solid $lighter-grey-overlay !important; diff --git a/src/assets/styles/overrides/_verizon.scss b/src/assets/styles/overrides/_verizon.scss index 9aec76999..035d69b16 100644 --- a/src/assets/styles/overrides/_verizon.scss +++ b/src/assets/styles/overrides/_verizon.scss @@ -282,7 +282,7 @@ $partner-brand-color: #cd040b; box-shadow: inset 0 0 5px $lighter-grey-overlay !important; } - #login-form { + .login-form { .card { background: $color-white !important; border: 1px solid $lighter-grey-overlay !important; diff --git a/src/assets/styles/pages/_auth.scss b/src/assets/styles/pages/_auth.scss index e4f6df490..f20a3cf77 100644 --- a/src/assets/styles/pages/_auth.scss +++ b/src/assets/styles/pages/_auth.scss @@ -1,37 +1,31 @@ -#login-form { - left: 50%; - max-width: 270px; - min-width: 270px; - position: relative; - top: 40%; - transform: translate(-50%, -50%); - width: 100%; +.auth-studio-info { + color: $color-white; +} - .card { - background: $faint-white-overlay !important; - border: 1px solid $faint-white-overlay !important; - box-shadow: none !important; - z-index: 2; - - .card-body { - color: $color-white; - min-height: 205px; - - .instructions { - color: $color-white; - padding-bottom: 16.5px; - text-align: center; - } - } +.auth-container { + background: linear-gradient(44.5deg, #3100d3 39.04%, #d52bff 98.58%); +} + +.btn-gradient-blue { + background: linear-gradient(90deg, #30cbfd 0%, #4b5eec 100%) !important; + + &:hover { + background: #4b5eec !important; } +} + +.login-form { + width: 100%; + max-width: 320px; + color: $color-white; + .instructions { + font-size: 1.5rem !important; + font-weight: $font-weight-light; + } &.sign-up { max-width: 770px; - .card-body { - padding: 2rem !important; - } - @media screen and (width <= 767px), screen and (height <= 530px) { margin-bottom: 50px; top: -50px; @@ -77,13 +71,11 @@ input { background: $faint-white-overlay !important; color: $color-white; - text-align: center !important; &::placeholder { color: $white-overlay !important; font-family: $font-family-sans; font-weight: $font-weight-light; - text-align: center !important; } } @@ -109,9 +101,8 @@ } .login-nav-link { - color: $white-overlay !important; - display: inline-block; - font-size: 85%; + color: $color-white !important; + font-size: $font-size-root; height: 16px; text-transform: lowercase; white-space: nowrap; diff --git a/src/components/auth/SignIn.js b/src/components/auth/SignIn.js index 416fd052f..f91c7740b 100644 --- a/src/components/auth/SignIn.js +++ b/src/components/auth/SignIn.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { Card, CardBody, Form, Input, Button, Row, Col } from 'reactstrap'; +import { Card, CardBody, Form, Input, Button, Row, Col, Label } from 'reactstrap'; import { NavLink, useLocation } from 'react-router-dom'; import { useStoreState } from 'pullstate'; import queryString from 'query-string'; @@ -49,67 +49,62 @@ function SignIn() { }, [user, token]); return ( -
    +
    {formState.processing ? ( ) : ( <> - - e.keyCode !== 13 || submit()}> -
    -
    Please sign into HarperDB Studio
    - { - e.currentTarget.focus(); - setFormData({ ...formData, email: e.target.value.trim().toLowerCase() }); - }} - value={formData.email || ''} - disabled={formState.submitted} - className="mb-2 text-center" - type="text" - title="email" - placeholder="email address" - /> - { - e.currentTarget.focus(); - setFormData({ ...formData, pass: e.target.value }); - }} - value={formData.pass || ''} - disabled={formState.submitted} - className="mb-2 text-center" - type="password" - title="password" - name="password" - autoComplete="current-password" - placeholder="password" - /> - -
    -
    -
    - {formState.error ? ( -
    {formState.error}
    - ) : ( - - - - Sign Up for Free - - - - - Reset Password - - - - )} +
    +

    Sign in to HarperDB Studio

    + {formState.error} + + + +
    +
    + + Sign Up for Free + + + Reset Password + +
    )}
    diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js index 5f9a30711..17109129a 100644 --- a/src/components/layouts/App.js +++ b/src/components/layouts/App.js @@ -8,6 +8,7 @@ import useInterval from 'use-interval'; import { positions, useAlert } from 'react-alert'; import { ErrorBoundary } from 'react-error-boundary'; import queryString from 'query-string'; +import { Col, Container, Row } from 'reactstrap'; import appState from '../../functions/state/appState'; import usePersistedUser from '../../functions/state/persistedUser'; @@ -28,6 +29,7 @@ import refreshUser from '../../functions/app/refreshUser'; import changeFavIcon from '../../functions/app/changeFavIcon'; import getAkamaiRegions from '../../functions/api/lms/getAkamaiRegions'; + const TopNav = lazy(() => import(/* webpackChunkName: "topnav" */ '../TopNav')); const SignUp = lazy(() => import(/* webpackChunkName: "signUp" */ '../auth/SignUp')); const SignIn = lazy(() => import(/* webpackChunkName: "signIn" */ '../auth/SignIn')); @@ -155,15 +157,47 @@ function App() {
    ) : ( -
    +
    }> - - } path="/" /> - : } path="/sign-up" /> - : } path="/reset-password" /> - } /> - + + + +
    +

    HarperDB Studio

    + Manage all your HarperDB instances. +
      +
    • +

      Manage All Instances

      + Set access, cluster, monitor, and more. +
    • +
    • +

      Embedded API Server

      + Custom Functions give you unlimited application flexibility. +
    • +
    • +

      Fully Managed Cloud & 5G Instances

      + Go from zero to code in minutes. +
    • +
    • +

      Deploy Anywhere

      + Docker + npm + all options +
    • +
    +
    + + + + } path="/" /> + : } path="/sign-up" /> + : } path="/reset-password" /> + } /> + + +
    +
    From 2ad864e910654fc702f7596f2395c5faef7208b2 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Wed, 6 Nov 2024 10:30:19 -0800 Subject: [PATCH 03/22] updating styling --- src/assets/styles/components/_topnav.scss | 2 +- src/assets/styles/core/_vars.scss | 7 ++++++- src/assets/styles/overrides/_dark.scss | 2 +- src/assets/styles/pages/_auth.scss | 18 ++++++++---------- src/components/layouts/App.js | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/assets/styles/components/_topnav.scss b/src/assets/styles/components/_topnav.scss index fbf16c6f0..da4792993 100644 --- a/src/assets/styles/components/_topnav.scss +++ b/src/assets/styles/components/_topnav.scss @@ -31,7 +31,7 @@ background-position: center left; background-repeat: no-repeat; background-size: contain; - height: 30px; + height: 40px; width: 400px; @media screen and (width <= 530px) { diff --git a/src/assets/styles/core/_vars.scss b/src/assets/styles/core/_vars.scss index 8e83987ab..2096a4513 100644 --- a/src/assets/styles/core/_vars.scss +++ b/src/assets/styles/core/_vars.scss @@ -14,8 +14,12 @@ $color-success: #55c58f; $color-warning: #ffa500; $color-danger: #ea4c89; $color-info: #8f8dff; +$color-blue: #4b5eec; +$color-lightblue: #30cbfd; +$color-darkblue: #3100d3; $color-darkpurple: #312556; $color-purple: #403b8a; +$color-pink: #d52bff; $color-lightpurple: #7a3a87; $gradient-purple-magenta: linear-gradient(45deg, $color-darkpurple, $color-purple, $color-lightpurple); $gradient-white-lightgrey: linear-gradient(to bottom, rgb(255 255 255 / 1%) 31%, rgb(0 0 0 / 5%) 100%); @@ -34,7 +38,7 @@ $black-overlay: rgb(0 0 0 / 90%); $border-radius: 4px; $border-radius-lg: 6px; $border-radius-sm: 2px; -$font-family-sans: -apple-system,blinkmacsystemfont,'Segoe UI','Noto Sans', arial, helvetica, verdana, sans-serif !important; +$font-family-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', 'Noto Sans', arial, helvetica, verdana, sans-serif !important; $font-size-root: 13px !important; $font-size-h1: calc(3vw + 3vh) !important; $font-size-h1-max: 65px !important; @@ -51,5 +55,6 @@ $font-size-h6-max: 1.25rem !important; $font-size-small: 85% !important; $font-weight-light: 300 !important; $font-weight-bold: 600 !important; +$font-weight-bolder: 700 !important; $font-line-height: 1.2 !important; $min-width: 314px; diff --git a/src/assets/styles/overrides/_dark.scss b/src/assets/styles/overrides/_dark.scss index cc8e4133e..9414dff26 100644 --- a/src/assets/styles/overrides/_dark.scss +++ b/src/assets/styles/overrides/_dark.scss @@ -69,7 +69,7 @@ .form-control { background: $faintest-white-overlay !important; border: 1px solid $faint-white-overlay !important; - color: $color-lightgrey !important; + color: $color-white !important; } .entity-manager { diff --git a/src/assets/styles/pages/_auth.scss b/src/assets/styles/pages/_auth.scss index f20a3cf77..3f6dbf5a1 100644 --- a/src/assets/styles/pages/_auth.scss +++ b/src/assets/styles/pages/_auth.scss @@ -1,16 +1,13 @@ .auth-studio-info { color: $color-white; -} - -.auth-container { - background: linear-gradient(44.5deg, #3100d3 39.04%, #d52bff 98.58%); + background: linear-gradient(44.5deg, $color-darkblue 39.04%, $color-pink 98.58%); } .btn-gradient-blue { - background: linear-gradient(90deg, #30cbfd 0%, #4b5eec 100%) !important; + background: linear-gradient(90deg, $color-lightblue 0%, $color-blue 100%) !important; &:hover { - background: #4b5eec !important; + background: $color-blue !important; } } @@ -77,6 +74,11 @@ font-family: $font-family-sans; font-weight: $font-weight-light; } + &:focus { + color: $color-white; + border-color: $color-lightblue; + outline: 0; + } } .disclaimer { @@ -90,10 +92,6 @@ } } - .btn { - text-transform: lowercase; - } - .login-nav-link-holder { &:last-child { text-align: right; diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js index 17109129a..8b2ee7e28 100644 --- a/src/components/layouts/App.js +++ b/src/components/layouts/App.js @@ -162,7 +162,7 @@ function App() { }> - +

    HarperDB Studio

    Manage all your HarperDB instances. From 631f631249b3ef0c6b56f19944d58b0de27c8193 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Wed, 6 Nov 2024 13:52:56 -0800 Subject: [PATCH 04/22] finished default theme for login page and base auth layout --- public/index.html | 47 +++++++++++++++---------- src/assets/images/svg/checkmark.svg | 3 ++ src/assets/styles/core/_typography.scss | 1 - src/assets/styles/core/_vars.scss | 23 +++++++++++- src/assets/styles/pages/_auth.scss | 32 +++++++++++++++++ src/components/layouts/App.js | 26 +++++++------- 6 files changed, 98 insertions(+), 34 deletions(-) create mode 100644 src/assets/images/svg/checkmark.svg diff --git a/public/index.html b/public/index.html index 934dcfbc4..44384ce67 100644 --- a/public/index.html +++ b/public/index.html @@ -1,22 +1,31 @@ - - - - - - - - - - - - Studio :: HarperDB - - -
    - - - - + + + + + + + + + + + + + + + + Studio :: HarperDB + + + +
    + + + + + diff --git a/src/assets/images/svg/checkmark.svg b/src/assets/images/svg/checkmark.svg new file mode 100644 index 000000000..4bfa3adf9 --- /dev/null +++ b/src/assets/images/svg/checkmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/styles/core/_typography.scss b/src/assets/styles/core/_typography.scss index 44b78e912..e01b61f54 100755 --- a/src/assets/styles/core/_typography.scss +++ b/src/assets/styles/core/_typography.scss @@ -18,7 +18,6 @@ h1 { h2 { font-size: $font-size-h2; - font-weight: $font-weight-light; margin: 0 !important; @media (width >= 1100px) { diff --git a/src/assets/styles/core/_vars.scss b/src/assets/styles/core/_vars.scss index 2096a4513..032b8fec7 100644 --- a/src/assets/styles/core/_vars.scss +++ b/src/assets/styles/core/_vars.scss @@ -38,7 +38,26 @@ $black-overlay: rgb(0 0 0 / 90%); $border-radius: 4px; $border-radius-lg: 6px; $border-radius-sm: 2px; -$font-family-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', 'Noto Sans', arial, helvetica, verdana, sans-serif !important; +$font-family-ubuntu: + 'Ubuntu', + -apple-system, + blinkmacsystemfont, + 'Segoe UI', + 'Noto Sans', + arial, + helvetica, + verdana, + sans-serif !important; +$font-family-sans: + 'Schibsted Grotesk', + -apple-system, + blinkmacsystemfont, + 'Segoe UI', + 'Noto Sans', + arial, + helvetica, + verdana, + sans-serif !important; $font-size-root: 13px !important; $font-size-h1: calc(3vw + 3vh) !important; $font-size-h1-max: 65px !important; @@ -52,8 +71,10 @@ $font-size-h5: 1.5rem !important; $font-size-h5-max: 1.5rem !important; $font-size-h6: 1.25rem !important; $font-size-h6-max: 1.25rem !important; +$font-size-medium: 1rem !important; $font-size-small: 85% !important; $font-weight-light: 300 !important; +$font-weight-normal: 400 !important; $font-weight-bold: 600 !important; $font-weight-bolder: 700 !important; $font-line-height: 1.2 !important; diff --git a/src/assets/styles/pages/_auth.scss b/src/assets/styles/pages/_auth.scss index 3f6dbf5a1..5bed1581a 100644 --- a/src/assets/styles/pages/_auth.scss +++ b/src/assets/styles/pages/_auth.scss @@ -11,6 +11,38 @@ } } +.auth-subtitle { + font-size: 1.75rem; + font-family: $font-family-ubuntu; + font-weight: 100 !important; +} +.auth-info-list-items { + font-family: $font-family-ubuntu; + list-style-image: url('../../images/svg/checkmark.svg'); + li { + margin-bottom: 1.5rem; + + .item-title { + font-weight: $font-weight-normal; + font-size: 1.5rem !important; + margin-bottom: 0.25rem !important; + } + .item-subtitle { + display: inline-block; + font-weight: $font-weight-light; + font-size: 1rem; + } + .deploy-subitem { + display: inline-block; + padding: 0.5rem; + margin-right: 0.5rem; + font-size: $font-size-medium; + border: 2px solid $color-lightblue; + border-radius: 5px; + } + } +} + .login-form { width: 100%; max-width: 320px; diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js index 8b2ee7e28..2d590f3c9 100644 --- a/src/components/layouts/App.js +++ b/src/components/layouts/App.js @@ -164,26 +164,26 @@ function App() {
    -

    HarperDB Studio

    - Manage all your HarperDB instances. -
      +

      HarperDB Studio

      + Manage all your HarperDB instances. +
      • -

        Manage All Instances

        - Set access, cluster, monitor, and more. +

        Manage All Instances

        + Set access, cluster, monitor, and more.
      • -

        Embedded API Server

        - Custom Functions give you unlimited application flexibility. +

        Embedded API Server

        + Custom Functions give you unlimited application flexibility.
      • -

        Fully Managed Cloud & 5G Instances

        - Go from zero to code in minutes. +

        Fully Managed Cloud & 5G Instances

        + Go from zero to code in minutes.
      • -

        Deploy Anywhere

        - Docker - npm - all options +

        Deploy Anywhere

        + Docker + npm + all options
    From 7e42a1b64a46aca28fa52d54275c89e21b575615 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Wed, 6 Nov 2024 14:48:40 -0800 Subject: [PATCH 05/22] login page theming is complete --- src/assets/styles/overrides/_dark.scss | 22 +++++++++++++++++----- src/assets/styles/overrides/_light.scss | 14 +++++++------- src/assets/styles/pages/_auth.scss | 4 ++++ src/components/layouts/App.js | 2 +- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/assets/styles/overrides/_dark.scss b/src/assets/styles/overrides/_dark.scss index 9414dff26..08b03e404 100644 --- a/src/assets/styles/overrides/_dark.scss +++ b/src/assets/styles/overrides/_dark.scss @@ -205,13 +205,25 @@ } } - .login-form { - .card { - background: $color-pureblack !important; - } + .auth-form-container { + background-color: $color-pureblack; + } + .login-form { input { - background: $faintest-white-overlay !important; + background: $faint-white-overlay !important; + color: $color-white; + + &::placeholder { + color: $white-overlay !important; + font-family: $font-family-sans; + font-weight: $font-weight-light; + } + &:focus { + color: $color-white; + border-color: $color-lightblue; + outline: 0; + } } } diff --git a/src/assets/styles/overrides/_light.scss b/src/assets/styles/overrides/_light.scss index 66f53e040..121f8c6f0 100644 --- a/src/assets/styles/overrides/_light.scss +++ b/src/assets/styles/overrides/_light.scss @@ -279,15 +279,15 @@ } } + .auth-form-container { + background-color: $color-white; + } + .login-form { - .card { - background: $color-white !important; - border: 1px solid $color-lightgrey !important; - color: $color-lightgrey !important; + color: $color-black; - .instructions { - color: $color-darkgrey; - } + .instructions { + color: $color-darkgrey; } &.sign-up { diff --git a/src/assets/styles/pages/_auth.scss b/src/assets/styles/pages/_auth.scss index 5bed1581a..0b352e0a8 100644 --- a/src/assets/styles/pages/_auth.scss +++ b/src/assets/styles/pages/_auth.scss @@ -43,6 +43,10 @@ } } +.auth-form-container { + background-color: $color-darkpurple; +} + .login-form { width: 100%; max-width: 320px; diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js index 2d590f3c9..ae36cad2e 100644 --- a/src/components/layouts/App.js +++ b/src/components/layouts/App.js @@ -188,7 +188,7 @@ function App() {
    - + } path="/" /> : } path="/sign-up" /> From 02a1c5f7e4ec80dbe370ba711ef7c5e59e9784d1 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Wed, 6 Nov 2024 16:41:34 -0800 Subject: [PATCH 06/22] finished reset password page --- src/components/auth/ResetPassword.js | 85 ++++++++++++++-------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/src/components/auth/ResetPassword.js b/src/components/auth/ResetPassword.js index e27a7f215..d91b8015f 100644 --- a/src/components/auth/ResetPassword.js +++ b/src/components/auth/ResetPassword.js @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Card, CardBody, Form, Input, Button, Col, Row } from 'reactstrap'; +import { Form, Input, Button, Col, Row, Label } from 'reactstrap'; import useAsyncEffect from 'use-async-effect'; import { NavLink } from 'react-router-dom'; @@ -38,59 +38,60 @@ function ResetPassword() { }, [formData]); return ( -
    +
    {formState.processing ? ( ) : formState.success ? ( ) : ( <> - - e.keyCode !== 13 || setFormState({ submitted: true })}> -
    Please enter your account email. If a matching account exists, we'll send you a password reset link.
    -
    - setFormData({ ...formData, email: e.target.value.toLowerCase() })} - disabled={formState.submitted} - className="mt-3 mb-2 text-center" - type="text" - title="email" - placeholder="email address" - /> - -
    -
    -
    +
    +

    Enter your account email

    + If a matching account exists, we'll send you a password reset link. + + +
    {formState.error ? (
    {formState.error}  
    ) : ( - - - - Back to Sign In - - - - - Sign Up for Free - - - +
    + + Back to Sign In + + + Sign Up for Free + +
    )} )} From 7049e369a08c75bb217cce55ce2e481b63e5e1c6 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Wed, 6 Nov 2024 17:01:41 -0800 Subject: [PATCH 07/22] fixed light theme logo change --- src/assets/styles/overrides/_light.scss | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/assets/styles/overrides/_light.scss b/src/assets/styles/overrides/_light.scss index 121f8c6f0..9220cff5c 100644 --- a/src/assets/styles/overrides/_light.scss +++ b/src/assets/styles/overrides/_light.scss @@ -3,14 +3,6 @@ background: $color-black !important; border-bottom: 1px solid $color-black; - #logo { - background-image: url('../../images/logo/logo_dog_light.png'); - - @media screen and (width <= 530px) { - background-image: url('../../images/logo/logo_dog_only.png'); - } - } - .navbar-nav { .active-org { border-right-color: $color-lightgrey !important; From fe76cd94648c99789ec195364cac66cb4c8d4b54 Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Thu, 7 Nov 2024 12:01:49 -0800 Subject: [PATCH 08/22] refactored signup ui for form and form fields --- src/assets/styles/overrides/_akamai.scss | 24 +- src/assets/styles/overrides/_light.scss | 24 +- src/assets/styles/overrides/_lumen.scss | 24 +- src/assets/styles/overrides/_verizon.scss | 24 +- src/assets/styles/pages/_auth.scss | 26 +-- src/components/auth/ResetPassword.js | 26 +-- src/components/auth/SignUp.js | 258 ++++++++++------------ 7 files changed, 183 insertions(+), 223 deletions(-) diff --git a/src/assets/styles/overrides/_akamai.scss b/src/assets/styles/overrides/_akamai.scss index 85bfe7a23..c57f72b6e 100644 --- a/src/assets/styles/overrides/_akamai.scss +++ b/src/assets/styles/overrides/_akamai.scss @@ -325,18 +325,18 @@ $partner-brand-color: #017ac6; } &.sign-up { - .sign-up-content, - .sign-up-header { - color: $color-darkgrey !important; - } - - .sign-up-header { - border-bottom: 1px solid $color-lightgrey; - } - - hr { - background: $color-lightgrey; - } + // .sign-up-content, + // .sign-up-header { + // color: $color-darkgrey !important; + // } + + // .sign-up-header { + // border-bottom: 1px solid $color-lightgrey; + // } + + // hr { + // background: $color-lightgrey; + // } } input { diff --git a/src/assets/styles/overrides/_light.scss b/src/assets/styles/overrides/_light.scss index 9220cff5c..8388ce7c2 100644 --- a/src/assets/styles/overrides/_light.scss +++ b/src/assets/styles/overrides/_light.scss @@ -283,18 +283,18 @@ } &.sign-up { - .sign-up-content, - .sign-up-header { - color: $color-darkgrey !important; - } - - .sign-up-header { - border-bottom: 1px solid $color-lightgrey; - } - - hr { - background: $color-lightgrey; - } + // .sign-up-content, + // .sign-up-header { + // color: $color-darkgrey !important; + // } + + // .sign-up-header { + // border-bottom: 1px solid $color-lightgrey; + // } + + // hr { + // background: $color-lightgrey; + // } } input { diff --git a/src/assets/styles/overrides/_lumen.scss b/src/assets/styles/overrides/_lumen.scss index a5eeb3a97..dd61eb978 100644 --- a/src/assets/styles/overrides/_lumen.scss +++ b/src/assets/styles/overrides/_lumen.scss @@ -297,18 +297,18 @@ $partner-brand-color: #0075c9; } &.sign-up { - .sign-up-content, - .sign-up-header { - color: $color-darkgrey !important; - } - - .sign-up-header { - border-bottom: 1px solid $light-grey-overlay; - } - - hr { - background: $light-grey-overlay; - } + // .sign-up-content, + // .sign-up-header { + // color: $color-darkgrey !important; + // } + + // .sign-up-header { + // border-bottom: 1px solid $light-grey-overlay; + // } + + // hr { + // background: $light-grey-overlay; + // } } input { diff --git a/src/assets/styles/overrides/_verizon.scss b/src/assets/styles/overrides/_verizon.scss index 035d69b16..23adb32a4 100644 --- a/src/assets/styles/overrides/_verizon.scss +++ b/src/assets/styles/overrides/_verizon.scss @@ -294,18 +294,18 @@ $partner-brand-color: #cd040b; } &.sign-up { - .sign-up-content, - .sign-up-header { - color: $color-darkgrey !important; - } - - .sign-up-header { - border-bottom: 1px solid $light-grey-overlay; - } - - hr { - background: $light-grey-overlay; - } + // .sign-up-content, + // .sign-up-header { + // color: $color-darkgrey !important; + // } + + // .sign-up-header { + // border-bottom: 1px solid $light-grey-overlay; + // } + + // hr { + // background: $light-grey-overlay; + // } } input { diff --git a/src/assets/styles/pages/_auth.scss b/src/assets/styles/pages/_auth.scss index 0b352e0a8..96e7f7966 100644 --- a/src/assets/styles/pages/_auth.scss +++ b/src/assets/styles/pages/_auth.scss @@ -69,19 +69,19 @@ background: $faint-white-overlay; } - .sign-up-header { - border-bottom: 1px solid $faint-white-overlay; - font-size: 1.5rem !important; - line-height: 1 !important; - margin-bottom: 25px !important; - padding-bottom: 25px; - text-align: center; - width: 100%; - - @media screen and (width <= 767px) { - font-size: 1.1rem !important; - } - } + // .sign-up-header { + // border-bottom: 1px solid $faint-white-overlay; + // font-size: 1.5rem !important; + // line-height: 1 !important; + // margin-bottom: 25px !important; + // padding-bottom: 25px; + // text-align: center; + // width: 100%; + + // @media screen and (width <= 767px) { + // font-size: 1.1rem !important; + // } + // } .sign-up-content { width: 100%; diff --git a/src/components/auth/ResetPassword.js b/src/components/auth/ResetPassword.js index d91b8015f..b5b1780f2 100644 --- a/src/components/auth/ResetPassword.js +++ b/src/components/auth/ResetPassword.js @@ -47,7 +47,8 @@ function ResetPassword() { <>

    Enter your account email

    - If a matching account exists, we'll send you a password reset link. + If a matching account exists, we'll send you a password reset link. + {formState.error}
    diff --git a/src/components/auth/SignUp.js b/src/components/auth/SignUp.js index 098f2fd05..973c2f827 100644 --- a/src/components/auth/SignUp.js +++ b/src/components/auth/SignUp.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { Form, Input, Button, Row, Col, Card, CardBody } from 'reactstrap'; +import { Form, Input, Button, Row, Col, Card, CardBody, Label } from 'reactstrap'; import { NavLink, useLocation } from 'react-router-dom'; import useAsyncEffect from 'use-async-effect'; import queryString from 'query-string'; @@ -30,158 +30,124 @@ function SignUp() { // eslint-disable-next-line }, [formData]); - return formState.submitted ? ( -
    - -
    - ) : ( -
    - - e.keyCode !== 13 || setFormState({ submitted: true })}> -
    Sign Up And Launch Your HarperDB Cloud Instance Today
    - - -
    -
      -
    • Provision HarperDB Cloud and user-installed instances
    • -
    • Configure instance databases, tables, users, roles, and clustering
    • -
    • Create and monitor real-time charts based on custom queries
    • -
    • Bulk data import via CSV upload or URL
    • -
    - -

    Check Out Our Developer Resources Above

    - -
      -
    • SDKs, Drivers, and language-specific Code Snippets
    • -
    • Video Tutorials
    • -
    • HarperDB Migrator
    • -
    - -
    - -
    -
    - By creating an account, you agree to the  - - Privacy Policy - -  and  - - Terms of Service - -
    -
    -
    - -
    - - -
    - setFormData({ ...formData, firstname: e.target.value })} - /> + return ( +
    + {formState.submitted ? ( + + ) : ( + <> + +

    Sign Up

    + {formState.error} + + + + + setFormData({ ...formData, lastname: e.target.value })} - /> - setFormData({ ...formData, email: e.target.value.toLowerCase() })} - /> - - - setFormData({ ...formData, subdomain: e.target.value.substring(0, 15).toLowerCase() })} - /> - - - .harperdbcloud.com{' '} - - - - {showToolTip && The URL of your HarperDB Cloud Instances} - setFormData({ ...formData, coupon_code: e.target.value })} + title="subdomain" + placeholder="janedev" + value={formData.subdomain || ''} disabled={formState.submitted} + onChange={(e) => setFormData({ ...formData, subdomain: e.target.value.substring(0, 15).toLowerCase() })} /> + + + .harperdbcloud.com{' '} + + + + {showToolTip && The URL of your HarperDB Cloud Instances} + -
    -
    -
    - By creating an account, you agree to the  - - Privacy Policy - -  and  - - Terms of Service - -
    -
    -
    +
    +
    + By creating an account, you agree to the  + + Privacy Policy + +  and  + + Terms of Service + +
    +
    - - - - - - -
    - {formState.error ? ( -
    - {formState.error} -   + + +
    + + Already Have An Account? Sign In Instead. +
    - ) : ( - - Already Have An Account? Sign In Instead. - - )} -
    + + )}
    ); } From 829b0ec768ea0a52f45449d69c40ed508e8252fc Mon Sep 17 00:00:00 2001 From: Austin Akers Date: Thu, 7 Nov 2024 12:40:33 -0800 Subject: [PATCH 09/22] fiished labling fields in signup form --- src/components/auth/SignUp.js | 45 +++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/components/auth/SignUp.js b/src/components/auth/SignUp.js index 973c2f827..44eb82907 100644 --- a/src/components/auth/SignUp.js +++ b/src/components/auth/SignUp.js @@ -82,27 +82,30 @@ function SignUp() { onChange={(e) => setFormData({ ...formData, email: e.target.value.toLowerCase() })} /> - - - setFormData({ ...formData, subdomain: e.target.value.substring(0, 15).toLowerCase() })} - /> - - - .harperdbcloud.com{' '} - - - + {showToolTip && The URL of your HarperDB Cloud Instances}