@ file : Opt In ( Experimental Compose Ui Api :: class , ĠExperimental Compose Ui Api :: class ) Ċ Ċ package Ġcom . c 5 in co . modifiers . ui . controls Ċ Ċ import Ġandroidx . compose . foundation .* Ċ import Ġandroidx . compose . foundation . interaction . Mutable Interaction Source Ċ import Ġandroidx . compose . foundation . interaction . collect Is Hover ed As State Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . text . Basic TextField Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . outlined .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Experimental Compose Ui Api Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . focus . on Focus Changed Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Rectangle Shape Ċ import Ġandroidx . compose . ui . graphics . Shape Ċ import Ġandroidx . compose . ui . graphics . Solid Color Ċ import Ġandroidx . compose . ui . input . key . Key Ċ import Ġandroidx . compose . ui . input . key . key Ċ import Ġandroidx . compose . ui . input . key . on Preview KeyEvent Ċ import Ġandroidx . compose . ui . input . pointer . Pointer Icon Ċ import Ġandroidx . compose . ui . input . pointer . pointer Hover Icon Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . unit . Dp Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . c 5 in co . modifiers . data .* Ċ import Ġcom . c 5 in co . modifiers . utils . chunk Ċ import Ġjava . awt . Cursor Ċ import Ġkotlin . math . absolute Value Ċ Ċ @ Composable Ċ fun ĠColor Input ( color Value : ĠColor , Ġon Value Change : Ġ( Color ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġavailable Colors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠColor . Black , ĊĠĠĠĠĠĠĠ ĠColor . Gray , ĊĠĠĠĠĠĠĠ ĠColor . White , ĊĠĠĠĠĠĠĠ ĠColor . Red , ĊĠĠĠĠĠĠĠ ĠColor . Green , ĊĠĠĠĠĠĠĠ ĠColor . Blue , ĊĠĠĠĠĠĠĠ ĠColor . Yellow , ĊĠĠĠĠĠĠĠ ĠColor . C yan , ĊĠĠĠĠĠĠĠ ĠColor . M agenta , ĊĠĠĠĠĠĠĠ ĠColor . Transparent , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġexpanded Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĠĠĠ Ġval Ġsw atch Size Ġ= Ġ 2 4 ĊĠĠĠ Ġval Ġhorizontal Padding Ġ= Ġ 6 ĊĊĠĠĠ ĠBox () Ġ{ ĊĠĠĠĠĠĠĠ ĠColor Sw atch ( sw atch Size , Ġcolor Value , ĠonClick Ġ= Ġ{ Ġexpanded Ġ= Ġtrue Ġ}) ĊĠĠĠĠĠĠĠ ĠDropdown Menu ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġhorizontal Padding . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġexpanded , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= ĠD p Offset ( x Ġ= Ġ(- horizontal Padding ). dp , Ġ 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Dismiss Request Ġ= Ġ{ Ġexpanded Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchunk Size Ġ= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp acer Size Ġ= Ġ 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . width (( sw atch Size Ġ* Ġchunk Size Ġ+ Ġsp acer Size Ġ* Ġ( chunk Size Ġ- Ġ 1 )). dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( spacer Size . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchunk ed Colors Ġ= Ġchunk ( available Colors , Ġchunk Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchunk ed Colors . forEach Ġ{ Ġcolors Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( spacer Size . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Sw atch ( sw atch Size , Ġit , ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠColor Sw atch ( ĊĠĠĠ Ġsw atch Size : ĠInt , ĊĠĠĠ Ġcolor Value : ĠColor , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠBox ( Modifier ĊĠĠĠĠĠĠĠ Ġ. size ( sw atch Size . dp ) ĊĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) ĊĠĠĠĠĠĠĠ Ġ. background ( color Value ) ĊĠĠĠĠĠĠĠ Ġ. border ( width Ġ= Ġ 1 . dp , Ġcolor Ġ= ĠColor . Black . copy ( alpha Ġ= Ġ 0 . 2 5 f ), Ġshape Ġ= ĠCircle Shape ) ĊĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĠonClick () Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( color Value Ġ== ĠColor . Transparent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr ansparent Background () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠTr ansparent Background () Ġ{ ĊĠĠĠ ĠCanvas ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠ Ġ. background ( Color . White ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Width Ġ= Ġsize . width ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Height Ġ= Ġsize . height ĊĊĠĠĠĠĠĠĠ Ġdraw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠOffset ( x Ġ= Ġcanvas Width , Ġy Ġ= Ġ 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠOffset ( x Ġ= Ġ 0 f , Ġy Ġ= Ġcanvas Height ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Red . copy ( alpha Ġ= Ġ 0 . 7 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠShape Input ( ĊĠĠĠ Ġshape Value : ĠAvailable Shapes , ĊĠĠĠ Ġcorner Value : ĠInt , ĊĠĠĠ Ġon Value Change : Ġ( shape : ĠAvailable Shapes , Ġcorner : ĠInt ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġshapes List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠPair (" rectangle ", ĠAvailable Shapes . Rectangle ), ĊĠĠĠĠĠĠĠ ĠPair (" circle ", ĠAvailable Shapes . Circle ), ĊĠĠĠĠĠĠĠ ĠPair (" rounded - corner ", ĠAvailable Shapes . Rounded Corner ), ĊĠĠĠĠĠĠĠ ĠPair (" cut - corner ", ĠAvailable Shapes . Cut Corner ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ} ĊĠĠĠ Ġval Ġhover ed Ġby Ġinteraction Source . collect Is Hover ed As State () ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hover able ( interaction Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġif Ġ( hover ed ) ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) Ġelse ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġshapes List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmod : ĠModifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Ġ= Ġshape Value Ġ== Ġpair . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active ) Ġmod Ġ= Ġmod . background ( Material Theme . colors . secondary , ĠRo unded Corner Shape ( 4 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSmall IconButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmod , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Value Change ( pair . second , Ġcorner Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource (" icons /${ pair . first }. svg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"${ pair . first } Ġshape Ġbutton ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 1 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġif Ġ( active ) Ġcontent Color For ( Material Theme . colors . secondary ) Ġelse ĠLocal Content Color . current ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( shape Value Ġ== ĠAvailable Shapes . Rounded Corner Ġ|| Ġshape Value Ġ== ĠAvailable Shapes . Cut Corner ) Ġ{ ĊĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Outlined . Rounded Corner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Corner Ġicon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 1 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( shape Value , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠRow Scope . Padding Input ( ĊĠĠĠ Ġtype Value : ĠAvailable Padding , ĊĠĠĠ Ġcorner Values : ĠCor ner Values , ĊĠĠĠ Ġon Value Change : Ġ( type : ĠAvailable Padding , Ġcorners : ĠCor ner Values ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġshapes List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠPair ( Icons . Outlined . Crop Square , ĠAvailable Padding . All ), ĊĠĠĠĠĠĠĠ ĠPair ( Icons . Outlined . Grid Gold en ratio , ĠAvailable Padding . Side s ), ĊĠĠĠĠĠĠĠ ĠPair ( Icons . Outlined . Fullscreen , ĠAvailable Padding . Individual ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ} ĊĠĠĠ Ġval Ġhover ed Ġby Ġinteraction Source . collect Is Hover ed As State () ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hover able ( interaction Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġif Ġ( hover ed ) ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) Ġelse ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġshapes List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmod : ĠModifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Ġ= Ġtype Value Ġ== Ġpair . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active ) Ġmod Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod . background ( Material Theme . colors . secondary , ĠRo unded Corner Shape ( 4 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSmall IconButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmod , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Value Change ( pair . second , Ġcorner Values ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġpair . first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"${ pair . first } Ġicon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 1 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġif Ġ( active ) Ġcontent Color For ( Material Theme . colors . secondary ) Ġelse ĠLocal Content Color . current ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), ĊĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 4 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Padding . All Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" all ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , ĠCor ner Values ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Padding . Side s Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" H ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , ĠCor ner Values ( horizontal Ġ= Ġit , Ġvertical Ġ= Ġcorner Values . top )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" V ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , ĠCor ner Values ( horizontal Ġ= Ġcorner Values . start , Ġvertical Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAvailable Padding . Individual Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , Ġcorner Values . copy ( start Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , Ġcorner Values . copy ( top Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . end , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , Ġcorner Values . copy ( end Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Values . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( type Value , Ġcorner Values . copy ( bottom Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHorizontal Arrange ment Input ( ĊĠĠĠ Ġarrange ment Value : ĠAvailable Horizontal Arrange ments Ġ= ĠAvailable Horizontal Arrange ments . Start , ĊĠĠĠ Ġspacing Value : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġon Value Change : Ġ( arrange ment : ĠAvailable Horizontal Arrange ments , Ġspacing : ĠInt ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsp aced By Ġ= Ġarrange ment Value Ġ== ĠAvailable Horizontal Arrange ments . Sp aced By ĊĠĠĠ ĠArrange ment Input ( ĊĠĠĠĠĠĠĠ Ġsp aced By , ĊĠĠĠĠĠĠĠ ĠAvailable Horizontal Arrange ments . values (). toList (), ĊĠĠĠĠĠĠĠ Ġarrange ment Value , ĊĠĠĠĠĠĠĠ Ġspacing Value , ĊĠĠĠĠĠĠĠ Ġon Arrange ment Change Ġ= Ġ{ Ġarr , Ġsp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( arr , Ġsp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠVertical Arrange ment Input ( ĊĠĠĠ Ġarrange ment Value : ĠAvailable Vertical Arrange ments Ġ= ĠAvailable Vertical Arrange ments . Top , ĊĠĠĠ Ġspacing Value : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġon Value Change : Ġ( arrange ment : ĠAvailable Vertical Arrange ments , Ġspacing : ĠInt ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsp aced By Ġ= Ġarrange ment Value Ġ== ĠAvailable Vertical Arrange ments . Sp aced By ĊĠĠĠ ĠArrange ment Input ( ĊĠĠĠĠĠĠĠ Ġsp aced By , ĊĠĠĠĠĠĠĠ ĠAvailable Vertical Arrange ments . values (). toList (), ĊĠĠĠĠĠĠĠ Ġarrange ment Value , ĊĠĠĠĠĠĠĠ Ġspacing Value , ĊĠĠĠĠĠĠĠ Ġon Arrange ment Change Ġ= Ġ{ Ġarr , Ġsp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( arr , Ġsp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġ< T > ĠArrange ment Input ( ĊĠĠĠ Ġsp aced By : ĠBoolean , ĊĠĠĠ Ġarrange ments : ĠList < T >, ĊĠĠĠ Ġarrange ment Value : ĠT , ĊĠĠĠ Ġspacing Value : ĠInt , ĊĠĠĠ Ġon Arrange ment Change : Ġ( arrange ment : ĠT , Ġspacing : ĠInt ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width (), ĊĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Between ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDropdown Input ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġif Ġ( spaced By ) ĠModifier . weight ( 1 f ) Ġelse ĠModifier . fill Max Width (). padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġarrange ments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Item Ġ= Ġarrange ment Value , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSelect Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Arrange ment Change ( it , Ġspacing Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( spaced By ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . width ( 8 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD p Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Arrange ment Change ( arrange ment Value , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHorizontal Alignment Input ( ĊĠĠĠ Ġalignment Value : ĠAvailable Horizontal Align ments Ġ= ĠAvailable Horizontal Align ments . Start , ĊĠĠĠ Ġon Value Change : Ġ( alignment : ĠAvailable Horizontal Align ments ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠDropdown Input ( ĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠAvailable Horizontal Align ments . values (). toList (), ĊĠĠĠĠĠĠĠ Ġactive Item Ġ= Ġalignment Value , ĊĠĠĠĠĠĠĠ ĠonSelect Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠVertical Alignment Input ( ĊĠĠĠ Ġalignment Value : ĠAvailable Vertical Align ments Ġ= ĠAvailable Vertical Align ments . Top , ĊĠĠĠ Ġon Value Change : Ġ( alignment : ĠAvailable Vertical Align ments ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠDropdown Input ( ĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠAvailable Vertical Align ments . values (). toList (), ĊĠĠĠĠĠĠĠ Ġactive Item Ġ= Ġalignment Value , ĊĠĠĠĠĠĠĠ ĠonSelect Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠContent Alignment Input ( ĊĠĠĠ Ġalignment Value : ĠAvailable Content Align ments Ġ= ĠAvailable Content Align ments . Top Start , ĊĠĠĠ Ġon Value Change : Ġ( alignment : ĠAvailable Content Align ments ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠDropdown Input ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width ( 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠAvailable Content Align ments . values (). toList (), ĊĠĠĠĠĠĠĠ Ġactive Item Ġ= Ġalignment Value , ĊĠĠĠĠĠĠĠ ĠonSelect Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠD p Input ( ĊĠĠĠ Ġvalue : ĠInt , ĊĠĠĠ Ġcan Be Negative : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier . width ( 5 4 . dp ), ĊĠĠĠ Ġlabel : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Value Change : Ġ( Int ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠText Input ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue , ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel , ĊĠĠĠĠĠĠĠ Ġconvert Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . toInt OrNull () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( if Ġ( can Be Negative ) Ġit Ġelse Ġit . absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠFloat Input ( ĊĠĠĠ Ġvalue : ĠFloat , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier . width ( 6 0 . dp ), ĊĠĠĠ Ġlabel : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Value Change : Ġ( Float ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠText Input ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue , ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel , ĊĠĠĠĠĠĠĠ Ġconvert Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . toFloat OrNull () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( it Ġ?: Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun Ġ< T > ĠText Input ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġvalue : ĠT , ĊĠĠĠ Ġlabel : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġconvert : Ġ( String ) Ġ-> ĠT , ĊĠĠĠ Ġon Value Change : Ġ( T ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġtext Ġby Ġremember ( value ) Ġ{ Ġmutable State Of ( value . toString ()) Ġ} ĊĠĠĠ Ġval Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ} ĊĠĠĠ Ġval Ġhover ed Ġby Ġinteraction Source . collect Is Hover ed As State () ĊĠĠĠ Ġvar Ġfocused Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun Ġget BorderColor (): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( focused ) Ġreturn ĠMaterial Theme . colors . primary ĊĠĠĠĠĠĠĠ Ġif Ġ( hover ed ) Ġreturn ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ) ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . Transparent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconverted Value : ĠT Ġ= Ġconvert ( text ) ĊĠĠĠĠĠĠĠ Ġif Ġ( converted Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( converted Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠBasic TextField ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtext , ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ Ġtext Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠ Ġsingle Line Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġdecoration Box Ġ= Ġ{ Ġinner TextField Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( width Ġ= Ġ 1 . dp , Ġcolor Ġ= Ġget BorderColor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner TextField () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Preview KeyEvent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey . Enter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey . Num Pad Enter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey . Escape Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Focus Changed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused Ġ= Ġit . is Focused ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! focused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hover able ( interaction Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ, ĊĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠMaterial Theme . typography . body 2 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġcursor Brush Ġ= ĠSolid Color ( Material Theme . colors . on Surface ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun Ġ< T > ĠDropdown Input ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier . fill Max Width (), ĊĠĠĠ Ġitems : ĠList < T >, ĊĠĠĠ Ġshape : ĠShape Ġ= ĠRectangle Shape , ĊĠĠĠ Ġhover BackgroundColor : ĠColor Ġ= ĠColor . Transparent , ĊĠĠĠ Ġhover BorderColor : ĠColor Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= ĠContent Alpha . disabled ), ĊĠĠĠ Ġactive Item : ĠT , ĊĠĠĠ ĠonSelect : Ġ( T ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhover ed Ġby Ġinteraction Source . collect Is Hover ed As State () ĊĠĠĠĠĠĠĠ Ġvar Ġexpanded Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( shape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġexpanded Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hover able ( interaction Source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( if Ġ( hover ed ) ĠModifier . background ( hover BackgroundColor ) Ġelse ĠModifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( width Ġ= Ġ 1 . dp , Ġcolor Ġ= Ġif Ġ( hover ed ) Ġhover BorderColor Ġelse ĠColor . Transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 4 . dp , Ġend Ġ= Ġ 4 . dp , Ġbottom Ġ= Ġ 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= Ġif Ġ( hover ed ) ĠArrange ment . Space Between Ġelse ĠArrange ment . Start ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ("$ active Item ", Ġstyle Ġ= ĠMaterial Theme . typography . body 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Outlined . Keyboard Arrow Down , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Dropdown Ġicon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 1 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDropdown Menu ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Dismiss Request Ġ= Ġ{ Ġexpanded Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp act Dropdown Item ( it , ĠonClick Ġ= Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSelect ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠCheckbox Input ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġlabel : ĠString Ġ= Ġ" Enabled ", ĊĠĠĠ Ġchecked : ĠBoolean , ĊĠĠĠ Ġon Checked Change : Ġ( Boolean ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. offset ( x Ġ= Ġ(- 1 2 ). dp ), ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCheckbox ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchecked Ġ= Ġchecked , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Checked Change Ġ= Ġon Checked Change ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( label , Ġstyle Ġ= ĠMaterial Theme . typography . body 2 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠModifier . cursor For Horizontal Resize ( is Horizontal : ĠBoolean ): ĠModifier Ġ= ĊĠĠĠ Ġpointer Hover Icon ( Pointer Icon ( Cursor ( if Ġ( is Horizontal ) ĠCursor . E _ RE SIZE _ CURSOR Ġelse ĠCursor . S _ RE SIZE _ CURSOR )))