@@ -8,73 +8,45 @@
< / head >
< body class = "sg-vsf-register-step-1-page" >
< h1 class = "sg-main-heading" > Layout – VSF Register Step 1 < / h1 >
< section id = "pattern-portal-header" >
< article class = "sg-portal-header-pattern-variant" aria-label = "Portal Header ohne Options Row" >
< header class = "sg-portal-header" aria-label = "Portal Header" data-pattern = "portal-header" >
< div class = "sg-portal-header__main" data-pattern-part = "portal-header-main" >
< p class = "sg-portal-header__brand sg-brand-title" data-pattern-part = "portal-header-brand" > ValueStockFinder< / p >
< div class = "sg-portal-header__menu-wrap" data-pattern-part = "portal-header-action" >
< div class = "sg-tab-button-group" role = "tablist" aria-label = "Anmeldung" data-component = "tab-navigation" data-component-size = "large" data-component-context = "portal-header" >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" role = "tab" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" >
Login
< / button >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" role = "tab" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" >
Registrieren
< / button >
< / div >
< / div >
< nav class = "sg-portal-header__tabs sg-tab-button-group" aria-label = "Hauptnavigation" data-component = "tab-navigation" data-component-size = "large" data-component-context = "portal-header" data-pattern-part = "portal-header-navigation" >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" > Übersicht< / button >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" > Features< / button >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" > Preise< / button >
< button class = "sg-interaction-element sg-button sg-tab-button" type = "button" aria-selected = "false" data-component-part = "tab-button" data-component-state = "inactive" > Firma der Woche< / button >
< / nav >
< / div >
< / header >
< div class = "sg-transparent-card sg-portal-header-pattern-variant__next-element" aria-label = "Registriere dich bei ValueStockFinder" data-component = "transparent-card" > < / div >
< / article >
< / section >
< h1 class = "sg-main-heading" > Layout – VFS Keycloak Login < / h1 >
< main class = "sg-vsf-register-step-1" >
< article class = "sg-card sg-object-card sg-object-card--variable-height sg-vsf-register-step-1__card" data-pattern = "object-card" aria-label = "Registriere dich " >
< article class = "sg-card sg-object-card sg-object-card--variable-height sg-vsf-register-step-1__card" data-pattern = "object-card" aria-label = "Sign in " >
< header class = "sg-card-segment sg-card-segment--header sg-card-segment--darkblue sg-object-card__header" data-pattern-part = "object-card-header" >
< div class = "sg-strong" > Probiere ValueStockFinder kostenlos und unverbindlich aus < / div >
< div class = "sg-strong" > Welcome back to ValueStockFinder! < / div >
< / header >
< div class = "sg-card-segment sg-card-segment--body sg-object-card__content " data-pattern-part = "object-card-content " >
< p class = "sg-body" > Teste ValueStockFinder 7 Tage kostenlos und unverbindlich. Erhalte direkten Zugriff auf fundierte Aktienanalysen, klare Bewertungen und übersichtliche Entscheidungshilfen – ohne Verpflichtung. < / p >
< / div >
< footer class = "sg-card-segment sg-card-segment--gray" aria-label = "Registrierungsformular" >
< div class = "sg-form-sections-card-wrapper" data-pattern = "form-sections" aria-label = "Formular mit Abschnitten" >
< footer class = "sg-card-segment sg-card-segment--gray " aria-label = "Sign in form " >
< div class = "sg-form-sections-card-wrapper" data-pattern = "form-sections" aria-label = "Form with sections" >
< form class = "sg-form-sections-card" action = "#" method = "post" >
< div class = "sg-form-sections-card__body" data-pattern-part = "form-body" >
< h2 class = "sg-strong sg-form-sections-card__title" > Registrieren mit E-Mail und Passwor t< / h2 >
< h2 class = "sg-strong sg-form-sections-card__title" > Sign in to your accoun t< / h2 >
< div class = "sg-form-sections-card__field-group" >
< label class = "sg-labeled-input-row" >
< span class = "sg-label" > E-M ail< / span >
< input
class = "sg-interaction-element sg-input-single-line sg-input-single-line--inactive-selectable sg-form-inactive-selectable"
type = "email "
placeholder = "E-Mail eingeben "
aria-label = "E-Mail "
autocomplete = "email"
>
< span class = "sg-label" > Username or em ail< / span >
< span class = "sg-input-validation-stack" >
< input
class = "sg-interaction-element sg-input-single-line sg-input-single-line--inactive-selectable sg-form-inactive-selectable "
type = "text "
value = "lkn "
aria-label = "Username or email"
aria-invalid = "true"
aria-describedby = "login-identifier-error"
autocomplete = "username"
>
< span class = "sg-form-validation-text" id = "login-identifier-error" > Invalid username or password.< / span >
< / span >
< / label >
< label class = "sg-labeled-input-row" >
< span class = "sg-label" > Passwort < / span >
< span class = "sg-label" > Password < / span >
< input
class = "sg-interaction-element sg-input-single-line sg-input-single-line--inactive-selectable sg-form-inactive-selectable"
type = "password"
placeholder = "Passwort eingeben "
aria-label = "Passwort "
autocomplete = "new-password "
placeholder = "Enter password "
aria-label = "Password "
aria-invalid = "true "
autocomplete = "current-password"
>
< / label >
< / div >
@@ -82,35 +54,20 @@
< footer class = "sg-form-sections-card__actions-segment" data-pattern-part = "form-actions-segment" >
< div class = "sg-form-sections-card__actions" data-pattern-part = "form-actions" >
< button class = "sg-interaction-element sg-button sg-button--active sg-form-sections-card__action" type = "button" > Abbrechen < / button >
< button class = "sg-interaction-element sg-button sg-button--process sg-button--process-inactive sg-form-sections-card__action" type = "submit" disabled aria-disabled = "true" > Registriere n< / button >
< button class = "sg-interaction-element sg-button sg-button--active sg-form-sections-card__action" type = "button" > Cancel < / button >
< button class = "sg-interaction-element sg-button sg-button--process sg-form-sections-card__action" type = "submit" > Sign I n< / button >
< / div >
< / footer >
< / form >
< / div >
< / footer >
< footer class = "sg-card-segment sg-card-segment--gray" aria-label = "Registrieren mit " >
< div class = "sg-strong" > Registriere n m it< / div >
< div class = "sg-vsf-register-step-1__social-links" >
< a class = "social-logo" href = "#" aria-label = "Mit Google fortfahren" data-idp = "google" >
< span class = "kcLogoIdP-google" aria-hidden = "true" > < / span >
< span > Logo Platzhalter< / span >
< / a >
< a class = "social-logo" href = "#" aria-label = "Mit LinkedIn fortfahren" data-idp = "linkedin" >
< span class = "kcLogoIdP-linkedin" aria-hidden = "true" > < / span >
< span > Logo Platzhalter< / span >
< / a >
< a class = "social-logo" href = "#" aria-label = "Mit Microsoft fortfahren" data-idp = "microsoft" >
< span class = "kcLogoIdP-microsoft" aria-hidden = "true" > < / span >
< span > Logo Platzhalter< / span >
< / a >
< / div >
< footer class = "sg-card-segment sg-card-segment--gray" aria-label = "Google login from keycoak " >
< div class = "sg-strong" > Or sign i n w ith < / div >
< div class = "sg-body" > google login from keycoak < / div >
< / footer >
< footer class = "sg-card-segment sg-card-segment--gray" aria-label = "Bereits registrier t" >
< footer class = "sg-card-segment sg-card-segment--gray" aria-label = "Already have an accoun t" >
< div class = "sg-body" >
Du hast bereits einen Account ? < a class = "sg-hyperlink" href = "#" data-component = "hyperlink" > Login < / a > .
New user ? < a class = "sg-hyperlink" href = "#" data-component = "hyperlink" > Register < / a > .
< / div >
< / footer >
< / article >
@@ -148,32 +105,6 @@
} ) ;
} ) ;
( ( ) => {
const formCard = document . querySelector ( '.sg-form-sections-card' ) ;
if ( ! formCard ) {
return ;
}
const registerButton = formCard . querySelector ( '.sg-button--process' ) ;
if ( ! registerButton ) {
return ;
}
const updateRegisterButtonState = ( ) => {
const requiredFields = Array . from ( formCard . querySelectorAll ( 'input[type="email"], input[type="password"]' ) ) ;
const allFieldsFilled = requiredFields . every ( ( field ) => field . value . trim ( ) . length > 0 ) ;
registerButton . disabled = ! allFieldsFilled ;
registerButton . setAttribute ( 'aria-disabled' , String ( ! allFieldsFilled ) ) ;
registerButton . classList . toggle ( 'sg-button--process-inactive' , ! allFieldsFilled ) ;
} ;
formCard . querySelectorAll ( 'input[type="email"], input[type="password"]' ) . forEach ( ( field ) => {
field . addEventListener ( 'input' , updateRegisterButtonState ) ;
} ) ;
updateRegisterButtonState ( ) ;
} ) ( ) ;
< / script >
< / body >