diff options
Diffstat (limited to 'app/views/devise')
-rw-r--r-- | app/views/devise/confirmations/new.html.haml | 2 | ||||
-rw-r--r-- | app/views/devise/mailer/user_admin_approval.html.haml | 8 | ||||
-rw-r--r-- | app/views/devise/mailer/user_admin_approval.text.erb | 7 | ||||
-rw-r--r-- | app/views/devise/passwords/edit.html.haml | 2 | ||||
-rw-r--r-- | app/views/devise/registrations/new.html.haml | 25 | ||||
-rw-r--r-- | app/views/devise/sessions/_new_base.html.haml | 2 | ||||
-rw-r--r-- | app/views/devise/sessions/new.html.haml | 17 | ||||
-rw-r--r-- | app/views/devise/sessions/two_factor.html.haml | 2 | ||||
-rw-r--r-- | app/views/devise/shared/_experimental_separate_sign_up_flow_box.html.haml | 39 | ||||
-rw-r--r-- | app/views/devise/shared/_omniauth_box.html.haml | 2 | ||||
-rw-r--r-- | app/views/devise/shared/_signin_box.html.haml | 5 | ||||
-rw-r--r-- | app/views/devise/shared/_signup_box.html.haml | 68 | ||||
-rw-r--r-- | app/views/devise/shared/_signup_omniauth_providers.haml (renamed from app/views/devise/shared/_experimental_separate_sign_up_flow_omniauth_box.haml) | 2 | ||||
-rw-r--r-- | app/views/devise/shared/_tabs_ldap.html.haml | 8 | ||||
-rw-r--r-- | app/views/devise/unlocks/new.html.haml | 2 |
15 files changed, 80 insertions, 111 deletions
diff --git a/app/views/devise/confirmations/new.html.haml b/app/views/devise/confirmations/new.html.haml index f8aa3cf98dc..49112ed6cd5 100644 --- a/app/views/devise/confirmations/new.html.haml +++ b/app/views/devise/confirmations/new.html.haml @@ -8,7 +8,7 @@ = f.label :email = f.email_field :email, class: "form-control", required: true, title: 'Please provide a valid email address.' .clearfix - = f.submit "Resend", class: 'btn btn-success' + = f.submit "Resend", class: 'gl-button btn btn-success' .clearfix.prepend-top-20 = render 'devise/shared/sign_in_link' diff --git a/app/views/devise/mailer/user_admin_approval.html.haml b/app/views/devise/mailer/user_admin_approval.html.haml new file mode 100644 index 00000000000..199a143ba63 --- /dev/null +++ b/app/views/devise/mailer/user_admin_approval.html.haml @@ -0,0 +1,8 @@ += email_default_heading(say_hi(@resource)) + +%p + = _('Your GitLab account request has been approved!') +%p + = _('Your username is %{username}.') % { username: @resource.username } +%p + = _('Your sign-in page is %{url}.').html_safe % { url: link_to(Gitlab.config.gitlab.url, Gitlab.config.gitlab.url) } diff --git a/app/views/devise/mailer/user_admin_approval.text.erb b/app/views/devise/mailer/user_admin_approval.text.erb new file mode 100644 index 00000000000..5242981e514 --- /dev/null +++ b/app/views/devise/mailer/user_admin_approval.text.erb @@ -0,0 +1,7 @@ +<%= say_hi(@resource) %> + +<%= _('Your GitLab account request has been approved!') %> + +<%= _('Your username is %{username}.' % { username: @resource.username }) %> + +<%= _('Your sign-in page is %{url}.' % { url: Gitlab.config.gitlab.url }) %> diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index fee87c6324c..42e301d88ae 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -12,7 +12,7 @@ = f.label 'Confirm new password', for: "user_password_confirmation" = f.password_field :password_confirmation, class: "form-control bottom", title: 'This field is required', data: { qa_selector: 'password_confirmation_field' }, required: true .clearfix - = f.submit "Change your password", class: "btn btn-primary", data: { qa_selector: 'change_password_button' } + = f.submit "Change your password", class: "gl-button btn btn-primary", data: { qa_selector: 'change_password_button' } .clearfix.prepend-top-20 %p diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 2f75203ac62..00429f1acbc 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -1,16 +1,13 @@ - page_title _("Sign up") -- if experiment_enabled?(:signup_flow) - .row - .col-lg-7 - %h1.mb-3.font-weight-bold.text-6.mt-0 - = html_escape(_("Speed up your DevOps%{br_tag}with GitLab")) % { br_tag: '<br/>'.html_safe } - %p.text-3 - = _("GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.") - .col-lg-5.order-12 - .text-center.mb-3 - %h2.font-weight-bold= _('Register for GitLab') - = render 'devise/shared/experimental_separate_sign_up_flow_box' - = render 'devise/shared/sign_in_link' -- else - = render 'devise/shared/signup_box' +- add_page_specific_style 'page_bundles/signup' +- content_for :page_specific_javascripts do + = render "layouts/google_tag_manager_head" += render "layouts/google_tag_manager_body" + +.signup-page + = render 'devise/shared/signup_box', + url: registration_path(resource_name), + button_text: _('Register'), + show_omniauth_providers: omniauth_enabled? && button_based_providers_enabled?, + suggestion_path: nil = render 'devise/shared/sign_in_link' diff --git a/app/views/devise/sessions/_new_base.html.haml b/app/views/devise/sessions/_new_base.html.haml index 8c0ca6d4345..a1a1a767847 100644 --- a/app/views/devise/sessions/_new_base.html.haml +++ b/app/views/devise/sessions/_new_base.html.haml @@ -20,4 +20,4 @@ = recaptcha_tags .submit-container.move-submit-down - = f.submit _('Sign in'), class: 'btn btn-success', data: { qa_selector: 'sign_in_button' } + = f.submit _('Sign in'), class: 'gl-button btn btn-success', data: { qa_selector: 'sign_in_button' } diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index c466d2ce936..cce0a3b926e 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,24 +1,25 @@ - page_title _("Sign in") +- content_for :page_specific_javascripts do + = render "layouts/google_tag_manager_head" += render "layouts/google_tag_manager_body" #signin-container - if any_form_based_providers_enabled? - = render 'devise/shared/tabs_ldap' - - else - - unless experiment_enabled?(:signup_flow) - = render 'devise/shared/tabs_normal' + = render 'devise/shared/tabs_ldap', render_signup_link: false .tab-content - if password_authentication_enabled_for_web? || ldap_sign_in_enabled? || crowd_enabled? = render 'devise/shared/signin_box' - -# Signup only makes sense if you can also sign-in - - if allow_signup? - = render 'devise/shared/signup_box' - -# Show a message if none of the mechanisms above are enabled - if !password_authentication_enabled_for_web? && !ldap_sign_in_enabled? && !(omniauth_enabled? && devise_mapping.omniauthable?) %div No authentication methods configured. + - if allow_signup? + %p.gl-mt-3 + = _("Don't have an account yet?") + = link_to _("Register now"), new_registration_path(:user, invite_email: @invite_email), data: { qa_selector: 'register_link' } + - if omniauth_enabled? && devise_mapping.omniauthable? && button_based_providers_enabled? .clearfix = render 'devise/shared/omniauth_box' diff --git a/app/views/devise/sessions/two_factor.html.haml b/app/views/devise/sessions/two_factor.html.haml index 8e05488c091..f5f76eb92b1 100644 --- a/app/views/devise/sessions/two_factor.html.haml +++ b/app/views/devise/sessions/two_factor.html.haml @@ -11,6 +11,6 @@ = f.text_field :otp_attempt, class: 'form-control', required: true, autofocus: true, autocomplete: 'off', title: 'This field is required.', data: { qa_selector: 'two_fa_code_field' } %p.form-text.text-muted.hint Enter the code from the two-factor app on your mobile device. If you've lost your device, you may enter one of your recovery codes. .prepend-top-20 - = f.submit "Verify code", class: "btn btn-success", data: { qa_selector: 'verify_code_button' } + = f.submit "Verify code", class: "gl-button btn btn-success", data: { qa_selector: 'verify_code_button' } - if @user.two_factor_webauthn_u2f_enabled? = render "authentication/authenticate", params: params, resource: resource, resource_name: resource_name, render_remember_me: true, target_path: new_user_session_path diff --git a/app/views/devise/shared/_experimental_separate_sign_up_flow_box.html.haml b/app/views/devise/shared/_experimental_separate_sign_up_flow_box.html.haml deleted file mode 100644 index 621bbb32a13..00000000000 --- a/app/views/devise/shared/_experimental_separate_sign_up_flow_box.html.haml +++ /dev/null @@ -1,39 +0,0 @@ -- max_first_name_length = max_last_name_length = 127 -- max_username_length = 255 -- min_username_length = 2 -.signup-box.p-3.mb-2 - .signup-body - = form_for(resource, as: "new_#{resource_name}", url: registration_path(resource_name), html: { class: "new_new_user gl-show-field-errors", "aria-live" => "assertive" }) do |f| - .devise-errors.mt-0 - = render "devise/shared/error_messages", resource: resource - - if Feature.enabled?(:invisible_captcha) - = invisible_captcha - .name.form-row - .col.form-group - = f.label :first_name, _('First name'), for: 'new_user_first_name', class: 'label-bold' - = f.text_field :first_name, class: 'form-control top js-block-emoji js-validate-length', :data => { :max_length => max_first_name_length, :max_length_message => _("First name is too long (maximum is %{max_length} characters).") % { max_length: max_first_name_length }, :qa_selector => 'new_user_firstname_field' }, required: true, title: _("This field is required.") - .col.form-group - = f.label :last_name, _('Last name'), for: 'new_user_last_name', class: 'label-bold' - = f.text_field :last_name, class: "form-control top js-block-emoji js-validate-length", :data => { :max_length => max_last_name_length, :max_length_message => _("Last name is too long (maximum is %{max_length} characters).") % { max_length: max_last_name_length }, :qa_selector => 'new_user_lastname_field' }, required: true, title: _("This field is required.") - .username.form-group - = f.label :username, class: 'label-bold' - = f.text_field :username, class: "form-control middle js-block-emoji js-validate-length js-validate-username", :data => { :min_length => min_username_length, :min_length_message => s_("SignUp|Username is too short (minimum is %{min_length} characters).") % { min_length: min_username_length }, :max_length => max_username_length, :max_length_message => _("Username is too long (maximum is %{max_length} characters).") % { max_length: max_username_length }, :qa_selector => 'new_user_username_field' }, pattern: Gitlab::PathRegex::NAMESPACE_FORMAT_REGEX_JS, required: true, title: _("Please create a username with only alphanumeric characters.") - %p.validation-error.gl-field-error-ignore.field-validation.mt-1.hide.cred= _('Username is already taken.') - %p.validation-success.gl-field-error-ignore.field-validation.mt-1.hide.cgreen= _('Username is available.') - %p.validation-pending.gl-field-error-ignore.field-validation.mt-1.hide= _('Checking username availability...') - .form-group - = f.label :email, class: 'label-bold' - = f.email_field :email, class: "form-control middle", data: { qa_selector: 'new_user_email_field' }, required: true, title: _("Please provide a valid email address.") - .form-group.append-bottom-20#password-strength - = f.label :password, class: 'label-bold' - = f.password_field :password, class: "form-control bottom", data: { qa_selector: 'new_user_password_field' }, required: true, pattern: ".{#{@minimum_password_length},}", title: _("Minimum length is %{minimum_password_length} characters.") % { minimum_password_length: @minimum_password_length } - %p.gl-field-hint.text-secondary= _('Minimum length is %{minimum_password_length} characters') % { minimum_password_length: @minimum_password_length } - = render_if_exists 'devise/shared/email_opted_in', f: f - %div - - if show_recaptcha_sign_up? - = recaptcha_tags - .submit-container.mt-3 - = f.submit _("Register"), class: "btn-register btn btn-block btn-success mb-0 p-2", data: { qa_selector: 'new_user_register_button' } - = render 'devise/shared/terms_of_service_notice' - - if omniauth_enabled? && button_based_providers_enabled? - = render 'devise/shared/experimental_separate_sign_up_flow_omniauth_box' diff --git a/app/views/devise/shared/_omniauth_box.html.haml b/app/views/devise/shared/_omniauth_box.html.haml index 6cf48f89876..67e6e510923 100644 --- a/app/views/devise/shared/_omniauth_box.html.haml +++ b/app/views/devise/shared/_omniauth_box.html.haml @@ -7,7 +7,7 @@ .d-flex.justify-content-between.flex-wrap - providers.each do |provider| - has_icon = provider_has_icon?(provider) - = button_to omniauth_authorize_path(:user, provider), id: "oauth-login-#{provider}", class: "btn d-flex align-items-center omniauth-btn text-left oauth-login #{qa_class_for_provider(provider)}" do + = button_to omniauth_authorize_path(:user, provider), id: "oauth-login-#{provider}", class: "gl-button btn d-flex align-items-center omniauth-btn text-left oauth-login #{qa_class_for_provider(provider)}" do - if has_icon = provider_image_tag(provider) %span diff --git a/app/views/devise/shared/_signin_box.html.haml b/app/views/devise/shared/_signin_box.html.haml index d217b47527a..ff93449194a 100644 --- a/app/views/devise/shared/_signin_box.html.haml +++ b/app/views/devise/shared/_signin_box.html.haml @@ -22,8 +22,3 @@ .login-box.tab-pane.active{ id: 'login-pane', role: 'tabpanel' } .login-body = render 'devise/sessions/new_base' - -- if experiment_enabled?(:signup_flow) - %p.light.mt-2 - = _("Don't have an account yet?") - = link_to _("Register now"), new_registration_path(:user) diff --git a/app/views/devise/shared/_signup_box.html.haml b/app/views/devise/shared/_signup_box.html.haml index f4ac9ad696b..0dc98001881 100644 --- a/app/views/devise/shared/_signup_box.html.haml +++ b/app/views/devise/shared/_signup_box.html.haml @@ -1,37 +1,37 @@ - max_first_name_length = max_last_name_length = 127 - max_username_length = 255 - min_username_length = 2 -#register-pane.tab-pane.login-box{ role: 'tabpanel' } - .login-body - = form_for(resource, as: "new_#{resource_name}", url: registration_path(resource_name), html: { class: "new_new_user gl-show-field-errors", "aria-live" => "assertive" }) do |f| - .devise-errors - = render "devise/shared/error_messages", resource: resource - - if Feature.enabled?(:invisible_captcha) - = invisible_captcha - .name.form-row - .col.form-group - = f.label :first_name, _('First name'), for: 'new_user_first_name', class: 'label-bold' - = f.text_field :first_name, class: 'form-control top js-block-emoji js-validate-length', :data => { :max_length => max_first_name_length, :max_length_message => _("First name is too long (maximum is %{max_length} characters).") % { max_length: max_first_name_length }, :qa_selector => 'new_user_first_name_field' }, required: true, title: _("This field is required.") - .col.form-group - = f.label :last_name, _('Last name'), for: 'new_user_last_name', class: 'label-bold' - = f.text_field :last_name, class: "form-control top js-block-emoji js-validate-length", :data => { :max_length => max_last_name_length, :max_length_message => _("Last name is too long (maximum is %{max_length} characters).") % { max_length: max_last_name_length }, :qa_selector => 'new_user_last_name_field' }, required: true, title: _("This field is required.") - .username.form-group - = f.label :username, class: 'label-bold' - = f.text_field :username, class: "form-control middle js-block-emoji js-validate-length js-validate-username", :data => { :min_length => min_username_length, :min_length_message => s_("SignUp|Username is too short (minimum is %{min_length} characters).") % { min_length: min_username_length }, :max_length => max_username_length, :max_length_message => s_("SignUp|Username is too long (maximum is %{max_length} characters).") % { max_length: max_username_length }, :qa_selector => 'new_user_username_field' }, pattern: Gitlab::PathRegex::NAMESPACE_FORMAT_REGEX_JS, required: true, title: _("Please create a username with only alphanumeric characters.") - %p.validation-error.gl-field-error-ignore.field-validation.hide= _('Username is already taken.') - %p.validation-success.gl-field-error-ignore.field-validation.hide= _('Username is available.') - %p.validation-pending.gl-field-error-ignore.field-validation.hide= _('Checking username availability...') - .form-group - = f.label :email, class: 'label-bold' - = f.email_field :email, value: @invite_email, class: "form-control middle", data: { qa_selector: 'new_user_email_field' }, required: true, title: _("Please provide a valid email address.") - .form-group.append-bottom-20#password-strength - = f.label :password, class: 'label-bold' - = f.password_field :password, class: "form-control bottom", data: { qa_selector: 'new_user_password_field' }, required: true, pattern: ".{#{@minimum_password_length},}", title: _("Minimum length is %{minimum_password_length} characters.") % { minimum_password_length: @minimum_password_length } - %p.gl-field-hint.text-secondary= _('Minimum length is %{minimum_password_length} characters') % { minimum_password_length: @minimum_password_length } - = render_if_exists 'devise/shared/email_opted_in', f: f - %div - - if show_recaptcha_sign_up? - = recaptcha_tags - .submit-container - = f.submit _("Register"), class: "btn-register btn", data: { qa_selector: 'new_user_register_button' } - = render 'devise/shared/terms_of_service_notice' +.gl-mb-3.gl-p-4.gl-border-gray-100.gl-border-1.gl-border-solid.gl-rounded-base + = form_for(resource, as: "new_#{resource_name}", url: url, html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive' }) do |f| + .devise-errors + = render 'devise/shared/error_messages', resource: resource + - if Feature.enabled?(:invisible_captcha) + = invisible_captcha + .name.form-row + .col.form-group + = f.label :first_name, _('First name'), for: 'new_user_first_name', class: 'label-bold' + = f.text_field :first_name, class: 'form-control top js-block-emoji js-validate-length', :data => { :max_length => max_first_name_length, :max_length_message => s_('SignUp|First name is too long (maximum is %{max_length} characters).') % { max_length: max_first_name_length }, :qa_selector => 'new_user_first_name_field' }, required: true, title: _('This field is required.') + .col.form-group + = f.label :last_name, _('Last name'), for: 'new_user_last_name', class: 'label-bold' + = f.text_field :last_name, class: 'form-control top js-block-emoji js-validate-length', :data => { :max_length => max_last_name_length, :max_length_message => s_('SignUp|Last name is too long (maximum is %{max_length} characters).') % { max_length: max_last_name_length }, :qa_selector => 'new_user_last_name_field' }, required: true, title: _('This field is required.') + .username.form-group + = f.label :username, class: 'label-bold' + = f.text_field :username, class: 'form-control middle js-block-emoji js-validate-length js-validate-username', :data => { :api_path => suggestion_path, :min_length => min_username_length, :min_length_message => s_('SignUp|Username is too short (minimum is %{min_length} characters).') % { min_length: min_username_length }, :max_length => max_username_length, :max_length_message => s_('SignUp|Username is too long (maximum is %{max_length} characters).') % { max_length: max_username_length }, :qa_selector => 'new_user_username_field' }, pattern: Gitlab::PathRegex::NAMESPACE_FORMAT_REGEX_JS, required: true, title: _('Please create a username with only alphanumeric characters.') + %p.validation-error.gl-text-red-500.gl-field-error-ignore.gl-mt-2.field-validation.hide= _('Username is already taken.') + %p.validation-success.gl-text-green-600.gl-field-error-ignore.gl-mt-2.field-validation.hide= _('Username is available.') + %p.validation-pending.gl-field-error-ignore.gl-mt-2.field-validation.hide= _('Checking username availability...') + .form-group + = f.label :email, class: 'label-bold' + = f.email_field :email, value: @invite_email, class: 'form-control middle', data: { qa_selector: 'new_user_email_field' }, required: true, title: _('Please provide a valid email address.') + .form-group.append-bottom-20#password-strength + = f.label :password, class: 'label-bold' + = f.password_field :password, class: 'form-control bottom', data: { qa_selector: 'new_user_password_field' }, required: true, pattern: ".{#{@minimum_password_length},}", title: s_('SignUp|Minimum length is %{minimum_password_length} characters.') % { minimum_password_length: @minimum_password_length } + %p.gl-field-hint.text-secondary= s_('SignUp|Minimum length is %{minimum_password_length} characters.') % { minimum_password_length: @minimum_password_length } + %div + - if show_recaptcha_sign_up? + = recaptcha_tags + .submit-container + = f.submit button_text, class: 'btn gl-button btn-success', data: { qa_selector: 'new_user_register_button' } + = render 'devise/shared/terms_of_service_notice' + - if show_omniauth_providers + = render 'devise/shared/signup_omniauth_providers' diff --git a/app/views/devise/shared/_experimental_separate_sign_up_flow_omniauth_box.haml b/app/views/devise/shared/_signup_omniauth_providers.haml index d9143d90430..68098f1865b 100644 --- a/app/views/devise/shared/_experimental_separate_sign_up_flow_omniauth_box.haml +++ b/app/views/devise/shared/_signup_omniauth_providers.haml @@ -6,7 +6,7 @@ .d-flex.justify-content-between.flex-wrap - providers.each do |provider| - has_icon = provider_has_icon?(provider) - = link_to omniauth_authorize_path(:user, provider), method: :post, class: "btn d-flex align-items-center omniauth-btn text-left oauth-login mb-2 p-2 #{qa_class_for_provider(provider)}", id: "oauth-login-#{provider}" do + = link_to omniauth_authorize_path(:user, provider), method: :post, class: "gl-button btn d-flex align-items-center omniauth-btn text-left oauth-login mb-2 p-2 #{qa_class_for_provider(provider)}", id: "oauth-login-#{provider}" do - if has_icon = provider_image_tag(provider) %span.ml-2 diff --git a/app/views/devise/shared/_tabs_ldap.html.haml b/app/views/devise/shared/_tabs_ldap.html.haml index acd41fb011a..27057d023b1 100644 --- a/app/views/devise/shared/_tabs_ldap.html.haml +++ b/app/views/devise/shared/_tabs_ldap.html.haml @@ -4,17 +4,17 @@ %ul.nav-links.new-session-tabs.nav-tabs.nav{ class: ('custom-provider-tabs' if any_form_based_providers_enabled?) } - if crowd_enabled? %li.nav-item - = link_to "Crowd", "#crowd", class: "nav-link #{active_when(form_based_auth_provider_has_active_class?(:crowd))}", 'data-toggle' => 'tab' + = link_to "Crowd", "#crowd", class: "nav-link #{active_when(form_based_auth_provider_has_active_class?(:crowd))}", 'data-toggle' => 'tab', role: 'tab' = render_if_exists "devise/shared/kerberos_tab" - ldap_servers.each_with_index do |server, i| %li.nav-item - = link_to server['label'], "##{server['provider_name']}", class: "nav-link #{active_when(i == 0 && form_based_auth_provider_has_active_class?(:ldapmain))}", data: { toggle: 'tab', qa_selector: 'ldap_tab' } + = link_to server['label'], "##{server['provider_name']}", class: "nav-link #{active_when(i == 0 && form_based_auth_provider_has_active_class?(:ldapmain))}", data: { toggle: 'tab', qa_selector: 'ldap_tab' }, role: 'tab' = render_if_exists 'devise/shared/tab_smartcard' - if show_password_form %li.nav-item - = link_to _('Standard'), '#login-pane', class: 'nav-link', data: { toggle: 'tab', qa_selector: 'standard_tab' } + = link_to _('Standard'), '#login-pane', class: 'nav-link', data: { toggle: 'tab', qa_selector: 'standard_tab' }, role: 'tab' - if render_signup_link && allow_signup? %li.nav-item - = link_to 'Register', '#register-pane', class: 'nav-link', data: { toggle: 'tab', qa_selector: 'register_tab' } + = link_to 'Register', '#register-pane', class: 'nav-link', data: { toggle: 'tab', qa_selector: 'register_tab' }, role: 'tab' diff --git a/app/views/devise/unlocks/new.html.haml b/app/views/devise/unlocks/new.html.haml index 1167f1718d6..96f4f07176e 100644 --- a/app/views/devise/unlocks/new.html.haml +++ b/app/views/devise/unlocks/new.html.haml @@ -8,7 +8,7 @@ = f.label :email = f.email_field :email, class: 'form-control', autofocus: 'autofocus', autocapitalize: 'off', autocorrect: 'off', title: 'Please provide a valid email address.' .clearfix - = f.submit 'Resend unlock instructions', class: 'btn btn-success' + = f.submit 'Resend unlock instructions', class: 'gl-button btn btn-success' .clearfix.prepend-top-20 = render 'devise/shared/sign_in_link' |