package Ġcom . ac v . android dev challenge . ui . component Ċ Ċ import Ġandroidx . compose . animation . animate Content Size Ċ import Ġandroidx . compose . foundation . Border Stroke Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . selection . selectable Ċ import Ġandroidx . compose . foundation . shape . Corner Size Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Shape Ċ import Ġandroidx . compose . ui . unit . dp Ċ Ċ @ Opt In ( Experimental Material Api :: class ) Ċ @ Composable Ċ fun ĠCh ip ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġenabled : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġshape : ĠShape Ġ= ĠMaterial Theme . shapes . small . copy ( Corner Size ( percent Ġ= Ġ 5 0 )), ĊĠĠĠ Ġborder : ĠBorder Stroke Ġ= ĠCh ip Constants . default Outlined Border , ĊĠĠĠ Ġcolors : ĠCh ip Colors Ġ= ĠCh ip Constants . default Outlined Chip Colors (), ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠCh ip Constants . Default Content Padding , ĊĠĠĠ Ġselected : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ ĠonSelect : Ġ( Boolean ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġleft : Ġ(@ Composable Ġ( Modifier ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġright : Ġ(@ Composable Ġ( Modifier ) Ġ-> ĠUnit )? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcontent Color Ġ= Ġcolors . content Color ( enabled , Ġselected ) ĊĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġshape Ġ= Ġshape , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolors . backgroundColor ( enabled , Ġselected ), ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color . copy ( alpha Ġ= Ġ 1 f ), ĊĠĠĠĠĠĠĠ Ġborder Ġ= Ġborder , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. selectable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĠonSelect (! selected ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġenabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate Content Size () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides Ġcontent Color . alpha ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProvide TextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠMaterial Theme . typography . button ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Min Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= ĠCh ip Constants . Default Min Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= ĠCh ip Constants . Default Min Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 4 . dp , Ġend Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠSp acer ( modifier Ġ= ĠModifier . width ( 1 2 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center Vert ically ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 4 . dp , Ġend Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠSp acer ( modifier Ġ= ĠModifier . width ( 1 2 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Material Api Ċ @ Stable Ċ interface ĠCh ip Colors Ġ{ ĊĠĠĠ Ġfun ĠbackgroundColor ( enabled : ĠBoolean , Ġselected : ĠBoolean ): ĠColor ĊĠĠĠ Ġfun Ġcontent Color ( enabled : ĠBoolean , Ġselected : ĠBoolean ): ĠColor Ċ } ĊĊ Ċ @ Opt In ( Experimental Material Api :: class ) Ċ @ Immutable Ċ private Ġdata Ġclass ĠDefault Chip Colors ( ĊĠĠĠ Ġprivate Ġval Ġselected BackgroundColor : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġun selected BackgroundColor : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġdisabled Selected BackgroundColor : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġdisabled Un selected BackgroundColor : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġselected Content Color : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġun selected Content Color : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġselected Disabled Content Color : ĠColor , ĊĠĠĠ Ġprivate Ġval Ġun selected Disabled Content Color : ĠColor , Ċ ) Ġ: ĠCh ip Colors Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠbackgroundColor ( enabled : ĠBoolean , Ġselected : ĠBoolean ): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġselected Ġ-> Ġselected BackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġ! selected Ġ-> Ġun selected BackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ&& Ġselected Ġ-> Ġdisabled Selected BackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ&& Ġ! selected Ġ-> Ġdisabled Un selected BackgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġselected BackgroundColor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontent Color ( enabled : ĠBoolean , Ġselected : ĠBoolean ): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġselected Ġ-> Ġselected Content Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġ! selected Ġ-> Ġun selected Content Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ&& Ġselected Ġ-> Ġselected Disabled Content Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ&& Ġ! selected Ġ-> Ġun selected Disabled Content Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġselected Content Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠCh ip Constants Ġ{ ĊĠĠĠ Ġprivate Ġval ĠHorizontal Padding Ġ= Ġ 1 6 . dp ĊĠĠĠ Ġprivate Ġval ĠVertical Padding Ġ= Ġ 8 . dp ĊĊĠĠĠ Ġval ĠDefault Min Width Ġ= Ġ 2 4 . dp ĊĠĠĠ Ġval ĠDefault Min Height Ġ= Ġ 3 6 . dp ĊĊĠĠĠ Ġ@ Opt In ( Experimental Material Api :: class ) ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun Ġdefault Outlined Chip Colors ( ĊĠĠĠĠĠĠĠ Ġselected Content Color : ĠColor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠ Ġun selected Content Color : ĠColor Ġ= ĠMaterial Theme . colors . secondary , ĊĠĠĠĠĠĠĠ Ġselected BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠĠĠĠĠ Ġun selected BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠĠĠĠĠ Ġselected Disabled Content Color : ĠColor Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . disabled ), ĊĠĠĠĠĠĠĠ Ġun selected Disabled Content Color : ĠColor Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . high ), ĊĠĠĠĠĠĠĠ Ġselected Disabled BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . disabled ), ĊĠĠĠĠĠĠĠ Ġun selected Disabled BackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . high ), ĊĠĠĠ Ġ): ĠCh ip Colors Ġ= ĠDefault Chip Colors ( ĊĠĠĠĠĠĠĠ Ġselected BackgroundColor Ġ= Ġselected BackgroundColor , ĊĠĠĠĠĠĠĠ Ġun selected BackgroundColor Ġ= Ġun selected BackgroundColor , ĊĠĠĠĠĠĠĠ Ġdisabled Selected BackgroundColor Ġ= Ġselected Disabled BackgroundColor , ĊĠĠĠĠĠĠĠ Ġdisabled Un selected BackgroundColor Ġ= Ġun selected Disabled BackgroundColor , ĊĠĠĠĠĠĠĠ Ġselected Content Color Ġ= Ġselected Content Color , ĊĠĠĠĠĠĠĠ Ġun selected Content Color Ġ= Ġun selected Content Color , ĊĠĠĠĠĠĠĠ Ġselected Disabled Content Color Ġ= Ġselected Disabled Content Color , ĊĠĠĠĠĠĠĠ Ġun selected Disabled Content Color Ġ= Ġun selected Disabled Content Color , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval ĠDefault Content Padding Ġ= ĠPadding Values ( ĊĠĠĠĠĠĠĠ Ġstart Ġ= ĠHorizontal Padding , ĊĠĠĠĠĠĠĠ Ġtop Ġ= ĠVertical Padding , ĊĠĠĠĠĠĠĠ Ġend Ġ= ĠHorizontal Padding , ĊĠĠĠĠĠĠĠ Ġbottom Ġ= ĠVertical Padding ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠOut lined Border Size Ġ= Ġ 1 . dp ĊĊĠĠĠ Ġval Ġdefault Outlined Border : ĠBorder Stroke ĊĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBorder Stroke ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOut lined Border Size , ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠButton Defaults . Outlined Border Opacity ) ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ