package Ġio . not able . ui _ auth . ui . components Ċ Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . text . Keyboard Actions Ċ import Ġandroidx . compose . foundation . text . Keyboard Options Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . focus . Focus Request er Ċ import Ġandroidx . compose . ui . focus . focus Request er Ċ import Ġandroidx . compose . ui . focus . on Focus Changed Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . text . input . I me Action Ċ import Ġandroidx . compose . ui . text . input . Keyboard Type Ċ import Ġandroidx . compose . ui . text . input . Password Visual Transformation Ċ import Ġandroidx . compose . ui . text . input . Visual Transformation Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġio . not able . shared . components . TextField Error Ċ import Ġio . not able . shared . components . TextField State Ċ import Ġio . not able . ui _ auth . R Ċ import Ġio . not able . ui _ auth . validation . Password State Ċ Ċ @ Composable Ċ fun ĠAuth TextField ( ĊĠĠĠ Ġplaceholder : ĠString , ĊĠĠĠ Ġstate : ĠTextField State , ĊĠĠĠ Ġkeyboard Actions : ĠKeyboard Actions , ĊĠĠĠ Ġkeyboard Options : ĠKeyboard Options , ĊĠĠĠ Ġrequest er : ĠFocus Request er ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ. on Focus Changed Ġ{ Ġfocus State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . on Focus Change ( focus State . is Focused ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! focus State . is Focused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . enable Show Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( requester Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodifier . focus Request er ( requester ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 5 0 . dp ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOut lined TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġstate . text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . enable Show Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġplaceholder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠTextField Defaults . textField Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= Ġkeyboard Options , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Actions Ġ= Ġkeyboard Actions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġstate . show Errors (), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġstate . getError ()?. let Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠ ĠTextField Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Error Ġ= Ġerror , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġ 5 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠPassword Field ( ĊĠĠĠ Ġstate : ĠPassword State , ĊĠĠĠ Ġpassword Request : ĠFocus Request er , ĊĠĠĠ Ġkeyboard Actions : ĠKeyboard Actions , Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġpassword Visibility Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 5 0 . dp ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOut lined TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġstate . text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . enable Show Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. focus Request er ( password Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Focus Changed Ġ{ Ġfocus State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . on Focus Change ( focus State . is Focused ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! focus State . is Focused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . enable Show Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Password ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠTextField Defaults . textField Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Type Ġ= ĠKeyboard Type . Password , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ime Action Ġ= ĠI me Action . Done ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Actions Ġ= Ġkeyboard Actions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisual Transformation Ġ= Ġif Ġ( password Visibility ) ĠVisual Transformation . None Ġelse ĠPassword Visual Transformation (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrailing Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġif Ġ( password Visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ baseline _ visibility _ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠR . drawable . ic _ baseline _ visibility _ off _ 2 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġpassword Visibility Ġ= Ġ! password Visibility Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( p ainter Ġ= Ġpainter Resource ( id Ġ= Ġimage ), Ġ" Toggle Ġpassword Ġvisibility ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġstate . show Errors (), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġstate . getError ()?. let Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠ ĠTextField Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Error Ġ= Ġerror , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġ 5 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }