diff --git a/frontend/resources/images/icons/brand-github.svg b/frontend/resources/images/icons/brand-github.svg index 91ce17a609..cfb34953e0 100644 --- a/frontend/resources/images/icons/brand-github.svg +++ b/frontend/resources/images/icons/brand-github.svg @@ -1,3 +1 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/resources/images/icons/brand-gitlab.svg b/frontend/resources/images/icons/brand-gitlab.svg index 04993577bd..591427ec6e 100644 --- a/frontend/resources/images/icons/brand-gitlab.svg +++ b/frontend/resources/images/icons/brand-gitlab.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/resources/images/icons/brand-google.svg b/frontend/resources/images/icons/brand-google.svg index dba95de0fe..eb61aab348 100644 --- a/frontend/resources/images/icons/brand-google.svg +++ b/frontend/resources/images/icons/brand-google.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/frontend/resources/images/icons/brand-openid.svg b/frontend/resources/images/icons/brand-openid.svg index a335b66642..28dd05ed85 100644 --- a/frontend/resources/images/icons/brand-openid.svg +++ b/frontend/resources/images/icons/brand-openid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/src/app/main/ui/auth.cljs b/frontend/src/app/main/ui/auth.cljs index 61fe0271b2..636be2cd6b 100644 --- a/frontend/src/app/main/ui/auth.cljs +++ b/frontend/src/app/main/ui/auth.cljs @@ -30,7 +30,7 @@ [:a {:href cf/terms-of-service-uri :target "_blank"} (tr "auth.terms-of-service")]) (when show-all? - [:span (tr "labels.and")]) + [:span (dm/str " " (tr "labels.and") " ")]) (when show-privacy? [:a {:href cf/privacy-policy-uri :target "_blank"} (tr "auth.privacy-policy")])]))) @@ -45,11 +45,12 @@ (dom/set-html-title (tr "title.default"))) [:main {:class (stl/css :auth-section)} + [:a {:href "#/" :class (stl/css :logo-btn)} i/logo] [:div {:class (stl/css :login-illustration)} i/login-illustration] [:section {:class (stl/css :auth-content)} - [:a {:href "#/" :class (stl/css :logo-btn)} i/logo] + (case section :auth-register [:& register-page {:params params}] @@ -69,6 +70,5 @@ :auth-recovery [:& recovery-page {:params params}]) - (when (or (= section :auth-login) - (= section :auth-register)) + (when (= section :auth-register) [:& terms-login])]])) diff --git a/frontend/src/app/main/ui/auth.scss b/frontend/src/app/main/ui/auth.scss index f993d5b7f8..3c81a7c43c 100644 --- a/frontend/src/app/main/ui/auth.scss +++ b/frontend/src/app/main/ui/auth.scss @@ -7,6 +7,7 @@ @use "common/refactor/common-refactor.scss" as *; .auth-section { + position: relative; align-items: center; background: var(--panel-background-color); display: grid; @@ -43,8 +44,9 @@ .auth-content { grid-column: 4 / 6; - display: flex; - flex-direction: column; + display: grid; + grid-template-rows: 1fr auto; + gap: $s-24; height: fit-content; max-width: $s-412; padding-bottom: $s-8; @@ -53,6 +55,9 @@ } .logo-btn { + position: absolute; + top: $s-20; + left: $s-20; display: flex; justify-content: flex-start; margin-bottom: $s-52; @@ -68,8 +73,6 @@ .terms-login { font-size: $fs-11; - position: absolute; - bottom: 0; width: 100%; display: flex; gap: $s-4; @@ -77,7 +80,10 @@ a { font-weight: $fw700; - color: $df-secondary; + color: $da-primary; + &:hover { + text-decoration: underline; + } } span { border-bottom: $s-1 solid transparent; diff --git a/frontend/src/app/main/ui/auth/common.scss b/frontend/src/app/main/ui/auth/common.scss index 23e2ba11ca..a6b9e2f74e 100644 --- a/frontend/src/app/main/ui/auth/common.scss +++ b/frontend/src/app/main/ui/auth/common.scss @@ -6,21 +6,21 @@ @use "common/refactor/common-refactor.scss" as *; -.auth-form { +.auth-form-wrapper { width: 100%; - padding-block-end: $s-16; - + padding-block-end: 0; + display: grid; + gap: $s-24; form { display: flex; flex-direction: column; gap: $s-12; - margin-block-end: $s-24; } } .separator { border-color: $db-quaternary; - margin: $s-24 0; + margin: 0; } .error-wrapper { @@ -33,11 +33,16 @@ } .auth-subtitle { - margin-top: $s-24; font-size: $fs-14; color: $df-secondary; } +.auth-tagline { + @include smallTitleTipography; + margin: 0; + color: $df-secondary; +} + .form-field { --input-width: 100%; --input-height: #{$s-40}; @@ -63,7 +68,6 @@ display: flex; flex-direction: column; gap: $s-12; - padding: $s-24 0; border-top: $s-1 solid $db-quaternary; span { @@ -77,8 +81,49 @@ text-transform: uppercase; font-size: $fs-11; } - &.register a { - @extend .button-primary; +} + +.go-back { + border-top: none; +} + +.demo-account { + padding: 0; + border-top: none; +} + +.links { + display: grid; + gap: $s-24; +} + +.register, +.account { + display: flex; + justify-content: center; + gap: $s-8; + padding: 0; +} + +.register-text, +.account-text { + text-align: right; + font-size: $fs-14; + color: $df-secondary; +} + +.register-link, +.account-link { + text-align: left; + background-color: transparent; + border: none; + display: inline; + font-size: $fs-14; + color: $da-primary; + font-weight: $fw400; + + &:hover { + text-decoration: underline; } } @@ -87,9 +132,12 @@ justify-content: flex-end; a { font-size: $fs-14; - color: $df-secondary; + color: $da-primary; font-weight: $fw400; } + &:hover { + text-decoration: underline; + } } .submit-btn, @@ -109,13 +157,15 @@ align-items: center; gap: $s-6; width: 100%; - + background-color: $db-tertiary; + color: var(--app-white); span { padding-top: $s-2; } &:hover { color: var(--app-white); + background-color: $db-quaternary; } } @@ -124,38 +174,6 @@ gap: $s-8; } -.btn-google-auth { - color: var(--google-login-foreground); - background-color: var(--google-login-background); - &:hover { - background: var(--google-login-background-hover); - } -} - -.btn-github-auth { - color: var(--github-login-foreground); - background: var(--github-login-background); - &:hover { - background: var(--github-login-background-hover); - } -} - -.btn-oidc-auth { - color: var(--oidc-login-foreground); - background: var(--oidc-login-background); - &:hover { - background: var(--oidc-login-background-hover); - } -} - -.btn-gitlab-auth { - color: var(--gitlab-login-foreground); - background: var(--gitlab-login-background); - &:hover { - background: var(--gitlab-login-background-hover); - } -} - .banner { margin: $s-16 0; } diff --git a/frontend/src/app/main/ui/auth/login.cljs b/frontend/src/app/main/ui/auth/login.cljs index cfd9d1d11f..530dc21426 100644 --- a/frontend/src/app/main/ui/auth/login.cljs +++ b/frontend/src/app/main/ui/auth/login.cljs @@ -173,7 +173,9 @@ :data-test "login-banner" :role "alert"}]]) - [:& fm/form {:on-submit on-submit :form form} + [:& fm/form {:on-submit on-submit + :class (stl/css :login-form) + :form form} [:div {:class (stl/css :fields-row)} [:& fm/input {:name :email @@ -255,11 +257,11 @@ (when (k/enter? event) (login-oidc event))))] (when (contains? cf/flags :login-with-oidc) - [:div {:class (stl/css :link-entry :link-oidc)} - [:a {:tab-index "0" - :on-key-down handle-key-down - :on-click login-oidc} - (tr "auth.login-with-oidc-submit")]]))) + [:button {:tab-index "0" + :class (stl/css :link-entry :link-oidc) + :on-key-down handle-key-down + :on-click login-oidc} + (tr "auth.login-with-oidc-submit")]))) (mf/defc login-methods [{:keys [params on-success-callback origin] :as props}] @@ -282,35 +284,29 @@ [{:keys [params] :as props}] (let [go-register (mf/use-fn - #(st/emit! (rt/nav :auth-register {} params))) + #(st/emit! (rt/nav :auth-register {} params)))] - on-create-demo-profile - (mf/use-fn - #(st/emit! (du/create-demo-profile)))] - - [:div {:class (stl/css :auth-form)} + [:div {:class (stl/css :auth-form-wrapper)} [:h1 {:class (stl/css :auth-title) - :data-test "login-title"} (tr "auth.login-title")] + :data-test "login-title"} (tr "auth.login-account-title")] + + [:p {:class (stl/css :auth-tagline)} + (tr "auth.login-tagline")] (when (contains? cf/flags :demo-warning) [:& demo-warning]) - [:hr {:class (stl/css :separator)}] - [:& login-methods {:params params}] + [:hr {:class (stl/css :separator)}] + [:div {:class (stl/css :links)} (when (contains? cf/flags :registration) - [:div {:class (stl/css :link-entry :register)} - [:span (tr "auth.register") " "] + [:div {:class (stl/css :register)} + [:span {:class (stl/css :register-text)} + (tr "auth.register") " "] [:& lk/link {:action go-register + :class (stl/css :register-link) :data-test "register-submit"} - (tr "auth.register-submit")]])] - - (when (contains? cf/flags :demo-users) - [:div {:class (stl/css :link-entry :demo-account)} - [:span (tr "auth.create-demo-profile") " "] - [:& lk/link {:action on-create-demo-profile - :data-test "demo-account-link"} - (tr "auth.create-demo-account")]])])) + (tr "auth.register-submit")]])]])) diff --git a/frontend/src/app/main/ui/auth/recovery.cljs b/frontend/src/app/main/ui/auth/recovery.cljs index 1425d9d1e6..a17ab8b0e3 100644 --- a/frontend/src/app/main/ui/auth/recovery.cljs +++ b/frontend/src/app/main/ui/auth/recovery.cljs @@ -61,7 +61,9 @@ (fm/validate-not-empty :password-1 (tr "auth.password-not-empty")) (fm/validate-not-empty :password-2 (tr "auth.password-not-empty"))] :initial params)] - [:& fm/form {:on-submit on-submit :form form} + [:& fm/form {:on-submit on-submit + :class (stl/css :recovery-form) + :form form} [:div {:class (stl/css :fields-row)} [:& fm/input {:type "password" :name :password-1 @@ -84,13 +86,13 @@ (mf/defc recovery-page [{:keys [params] :as props}] - [:div {:class (stl/css :auth-form)} + [:div {:class (stl/css :auth-form-wrapper)} [:h1 {:class (stl/css :auth-title)} "Forgot your password?"] [:div {:class (stl/css :auth-subtitle)} "Please enter your new password"] [:hr {:class (stl/css :separator)}] [:& recovery-form {:params params}] [:div {:class (stl/css :links)} - [:div {:class (stl/css :link-entry)} + [:div {:class (stl/css :link-entry :go-back)} [:a {:on-click #(st/emit! (rt/nav :auth-login))} (tr "profile.recovery.go-to-login")]]]]) diff --git a/frontend/src/app/main/ui/auth/recovery_request.cljs b/frontend/src/app/main/ui/auth/recovery_request.cljs index d1d72ed2dc..4e2bbff993 100644 --- a/frontend/src/app/main/ui/auth/recovery_request.cljs +++ b/frontend/src/app/main/ui/auth/recovery_request.cljs @@ -76,6 +76,7 @@ (st/emit! (du/request-profile-recovery params)))))] [:& fm/form {:on-submit on-submit + :class (stl/css :recovery-request-form) :form form} [:div {:class (stl/css :fields-row)} [:& fm/input {:name :email @@ -95,14 +96,14 @@ [{:keys [params on-success-callback go-back-callback] :as props}] (let [default-go-back #(st/emit! (rt/nav :auth-login)) go-back (or go-back-callback default-go-back)] - [:div {:class (stl/css :auth-form)} + [:div {:class (stl/css :auth-form-wrapper)} [:h1 {:class (stl/css :auth-title)} (tr "auth.recovery-request-title")] [:div {:class (stl/css :auth-subtitle)} (tr "auth.recovery-request-subtitle")] [:hr {:class (stl/css :separator)}] [:& recovery-form {:params params :on-success-callback on-success-callback}] - - [:div {:class (stl/css :link-entry)} + [:hr {:class (stl/css :separator)}] + [:div {:class (stl/css :link-entry :go-back)} [:& lk/link {:action go-back :data-test "go-back-link"} (tr "labels.go-back")]]])) diff --git a/frontend/src/app/main/ui/auth/register.cljs b/frontend/src/app/main/ui/auth/register.cljs index 1143d59281..51327de3fd 100644 --- a/frontend/src/app/main/ui/auth/register.cljs +++ b/frontend/src/app/main/ui/auth/register.cljs @@ -132,19 +132,18 @@ [{:keys [params on-success-callback]}] [:* (when login/show-alt-login-buttons? - [:* - [:hr {:class (stl/css :separator)}] - [:& login/login-buttons {:params params}]]) + [:& login/login-buttons {:params params}]) [:hr {:class (stl/css :separator)}] [:& register-form {:params params :on-success-callback on-success-callback}]]) (mf/defc register-page {::mf/props :obj} [{:keys [params]}] - [:div {:class (stl/css :auth-form)} + [:div {:class (stl/css :auth-form-wrapper)} [:h1 {:class (stl/css :auth-title) :data-test "registration-title"} (tr "auth.register-title")] - [:div {:class (stl/css :auth-subtitle)} (tr "auth.register-subtitle")] + [:p {:class (stl/css :auth-tagline)} + (tr "auth.login-tagline")] (when (contains? cf/flags :demo-warning) [:& login/demo-warning]) @@ -152,18 +151,20 @@ [:& register-methods {:params params}] [:div {:class (stl/css :links)} - [:div {:class (stl/css :link-entry :account)} - [:span (tr "auth.already-have-account") " "] + [:div {:class (stl/css :account)} + [:span {:class (stl/css :account-text)} (tr "auth.already-have-account") " "] [:& lk/link {:action #(st/emit! (rt/nav :auth-login {} params)) + :class (stl/css :account-link) :data-test "login-here-link"} (tr "auth.login-here")]] (when (contains? cf/flags :demo-users) - [:div {:class (stl/css :link-entry :demo-users)} - [:span (tr "auth.create-demo-profile") " "] - [:& lk/link {:action #(st/emit! (du/create-demo-profile))} - (tr "auth.create-demo-account")]])]]) + [:* + [:hr {:class (stl/css :separator)}] + [:div {:class (stl/css :link-entry :demo-account)} + [:& lk/link {:action #(st/emit! (du/create-demo-profile))} + (tr "auth.create-demo-account")]]])]]) ;; --- PAGE: register validation @@ -228,7 +229,8 @@ (rx/subs! on-success (partial handle-register-error form))))))] - [:& fm/form {:on-submit on-submit :form form} + [:& fm/form {:on-submit on-submit :form form + :class (stl/css :register-validate-form)} [:div {:class (stl/css :fields-row)} [:& fm/input {:name :fullname :label (tr "auth.fullname") @@ -258,7 +260,7 @@ (mf/defc register-validate-page [{:keys [params]}] - [:div {:class (stl/css :auth-form)} + [:div {:class (stl/css :auth-form-wrapper)} [:h1 {:class (stl/css :auth-title) :data-test "register-title"} (tr "auth.register-title")] [:div {:class (stl/css :auth-subtitle)} (tr "auth.register-subtitle")] @@ -274,7 +276,7 @@ (mf/defc register-success-page [{:keys [params]}] - [:div {:class (stl/css :auth-form :register-success)} + [:div {:class (stl/css :auth-form-wrapper :register-success)} [:div {:class (stl/css :notification-icon)} i/icon-verify] [:div {:class (stl/css :notification-text)} (tr "auth.verification-email-sent")] [:div {:class (stl/css :notification-text-email)} (:email params "")] diff --git a/frontend/src/app/main/ui/components/forms.scss b/frontend/src/app/main/ui/components/forms.scss index 53db074934..d29571542a 100644 --- a/frontend/src/app/main/ui/components/forms.scss +++ b/frontend/src/app/main/ui/components/forms.scss @@ -50,7 +50,6 @@ cursor: pointer; color: var(--modal-title-foreground-color); text-transform: uppercase; - margin-bottom: $s-8; input { @extend .input-element; color: var(--input-foreground-color-active); @@ -144,8 +143,9 @@ .hint { @include bodySmallTypography; - color: var(--modal-text-foreground-color); width: 99%; + margin-block-start: $s-8; + color: var(--modal-text-foreground-color); } .checkbox { diff --git a/frontend/src/app/main/ui/dashboard/team_form.scss b/frontend/src/app/main/ui/dashboard/team_form.scss index 2545950f8e..d94cb4c285 100644 --- a/frontend/src/app/main/ui/dashboard/team_form.scss +++ b/frontend/src/app/main/ui/dashboard/team_form.scss @@ -37,6 +37,7 @@ .group-name-input { @extend .input-element-label; + margin-bottom: $s-8; label { @include flexColumn; @include bodySmallTypography; diff --git a/frontend/src/app/main/ui/onboarding/questions.scss b/frontend/src/app/main/ui/onboarding/questions.scss index c225e3ae65..1496215ebc 100644 --- a/frontend/src/app/main/ui/onboarding/questions.scss +++ b/frontend/src/app/main/ui/onboarding/questions.scss @@ -127,6 +127,7 @@ height: $s-32; width: calc(100% - $s-24); margin-inline-start: $s-24; + margin-block-end: $s-8; } // STEP-4 diff --git a/frontend/src/app/main/ui/viewer/login.cljs b/frontend/src/app/main/ui/viewer/login.cljs index a4f2c2f650..3649d0195d 100644 --- a/frontend/src/app/main/ui/viewer/login.cljs +++ b/frontend/src/app/main/ui/viewer/login.cljs @@ -84,11 +84,11 @@ [:div {:class (stl/css :form-container)} [:& login-methods {:on-success-callback success-login :origin :viewer}] [:div {:class (stl/css :links)} - [:div {:class (stl/css :link-entry)} + [:div {:class (stl/css :link-entry :recovery-request)} [:a {:on-click set-section :data-value "recovery-request"} (tr "auth.forgot-password")]] - [:div {:class (stl/css :link-entry)} + [:div {:class (stl/css :link-entry :register)} [:span (tr "auth.register") " "] [:a {:on-click set-section :data-value "register"} @@ -98,7 +98,7 @@ [:div {:class (stl/css :form-container)} [:& register-methods {:on-success-callback success-register}] [:div {:class (stl/css :links)} - [:div {:class (stl/css :link-entry)} + [:div {:class (stl/css :link-entry :account)} [:span (tr "auth.already-have-account") " "] [:a {:on-click set-section :data-value "login"} @@ -109,7 +109,7 @@ [:& register-validate-form {:params {:token @register-token} :on-success-callback success-email-sent}] [:div {:class (stl/css :links)} - [:div {:class (stl/css :link-entry)} + [:div {:class (stl/css :link-entry :register)} [:a {:on-click set-section :data-value "register"} (tr "labels.go-back")]]]] diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss index aeafdfecad..1756829e34 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss @@ -49,6 +49,7 @@ } .input-wrapper { @extend .input-with-label; + margin-bottom: $s-8; } .action-buttons { @extend .modal-action-btns; diff --git a/frontend/translations/en.po b/frontend/translations/en.po index a0ad7a087d..466ffd5e46 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -58,8 +58,12 @@ msgid "auth.login-submit" msgstr "Login" #: src/app/main/ui/auth/login.cljs -msgid "auth.login-title" -msgstr "Great to see you again!" +msgid "auth.login-account-title" +msgstr "Log into my account" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-tagline" +msgstr "Penpot is the free open-source design tool for Design and Code collaboration" #: src/app/main/ui/auth/login.cljs msgid "auth.login-with-github-submit" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index 30b388b046..fe55693277 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -61,8 +61,12 @@ msgid "auth.login-submit" msgstr "Entrar" #: src/app/main/ui/auth/login.cljs -msgid "auth.login-title" -msgstr "¡Un placer verte de nuevo!" +msgid "auth.login-account-title" +msgstr "Entrar en mi cuenta" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-tagline" +msgstr "Penpot es la herramienta de diseño libre y open-source para la colaboración entre Diseño y Código" #: src/app/main/ui/auth/login.cljs msgid "auth.login-with-github-submit"