package Ġse . g ust av kar l sson . sky light . android . feature . main . view Ċ Ċ import Ġandroidx . compose . animation . Cross fade Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Row Scope Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . material . AppBar Defaults Ċ import Ġandroidx . compose . material . Content Alpha Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Local Content Alpha Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Provide TextStyle Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Top AppBar Ċ import Ġandroidx . compose . material . content Color For Ċ import Ġandroidx . compose . material . icons . filled . Arrow Back Ċ import Ġandroidx . compose . material . icons . filled . Search Ċ import Ġandroidx . compose . material . icons . filled . Settings Ċ import Ġandroidx . compose . material . primary Surface Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . google . ac comp an ist . in sets . Local Window Insets Ċ import Ġcom . google . ac comp an ist . in sets . remember Insets Padding Values Ċ import Ġcom . io ki . text ref . Text Ref Ċ import Ġse . g ust av kar l sson . sky light . android . feature . main . R Ċ import Ġse . g ust av kar l sson . sky light . android . feature . main . view model . AppBar State Ċ import Ġse . g ust av kar l sson . sky light . android . feature . main . view model . Event Ċ import Ġse . g ust av kar l sson . sky light . android . lib . ui . compose . Icons Ċ import Ġse . g ust av kar l sson . sky light . android . lib . ui . compose . Search Field Ċ import Ġse . g ust av kar l sson . sky light . android . lib . ui . compose . Search Field State Ċ import Ġse . g ust av kar l sson . sky light . android . lib . ui . compose . Typography Ċ import Ġse . g ust av kar l sson . sky light . android . lib . ui . compose . text Ref Ċ Ċ @ Preview Ċ @ Composable Ċ private Ġfun ĠPreview Top AppBar () Ġ{ ĊĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠApp Bar State . Searching (" I 'm Ġsearch i "), ĊĠĠĠĠĠĠĠ Ġon Settings Clicked Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġon Event Ġ= Ġ{}, ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ internal Ġfun ĠTop AppBar ( ĊĠĠĠ Ġstate : ĠApp Bar State , ĊĠĠĠ Ġon Settings Clicked : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġon Event : Ġ( Event ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= Ġremember Insets Padding Values ( Local Window Insets . current . status Bars ), ĊĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Ġ= Ġstate Ġis ĠApp Bar State . Searching ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Event ( Event . Search Changed ( Search Field State . Inactive )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Event ( Event . Search Changed ( Search Field State . Active (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCross fade ( target State Ġ= Ġactive ) Ġ{ Ġactive Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Vector Ġ= Ġif Ġ( active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcons . Arrow Back ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠIcons . Search ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġimage Vector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . to Search Field State (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinactive Text Ġ= Ġtext Ref ( text Ref Ġ= Ġ( state Ġas ? ĠApp Bar State . Place Selected )?. title Ġ?: ĠText Ref . EMPTY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Text Ġ= Ġstring Resource ( id Ġ= ĠR . string . place _ search ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠTypography . h 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon StateChanged Ġ= Ġ{ Ġstate Ġ-> Ġon Event ( Event . Search Changed ( state )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġactions Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġon Settings Clicked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( Icons . Settings , Ġcontent Description Ġ= Ġstring Resource ( R . string . settings )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun ĠApp Bar State . to Search Field State (): ĠSearch Field State Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠApp Bar State . Place Selected Ġ-> ĠSearch Field State . Inactive ĊĠĠĠĠĠĠĠ Ġis ĠApp Bar State . Searching Ġ-> ĠSearch Field State . Active ( query ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠEverything Ġis Ġcopied Ġand Ġmodified Ġfrom Ġandroidx . compose . material . TextField Kt Ċ @ Composable Ċ private Ġfun ĠTop AppBar ( ĊĠĠĠ Ġtitle : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠPadding Values ( 0 . dp ), ĊĠĠĠ Ġnavigation Icon : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġactions : Ġ@ Composable ĠRow Scope . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . primary Surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġelevation : ĠD p Ġ= ĠApp Bar Defaults . Top AppBar Elevation , Ċ ) Ġ{ ĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġelevation Ġ= Ġelevation , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent : Ġ@ Composable ĠRow Scope . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( navigation Icon Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Title Inset Without Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( Title Icon Modifier , Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Content Alpha Ġprovides ĠContent Alpha . high , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġnavigation Icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide TextStyle ( value Ġ= ĠMaterial Theme . typography . h 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Content Alpha Ġprovides ĠContent Alpha . high , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill Max Height (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . End , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġactions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( content Padding ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠThese Ġare Ġst olen Ġfrom Ġandroidx . compose . material . AppBar Kt Ċ private Ġval ĠApp Bar Horizontal Padding Ġ= Ġ 4 . dp Ċ Ċ // ĠStart Ġinset Ġfor Ġthe Ġtitle Ġwhen Ġthere Ġis Ġno Ġnavigation Ġicon Ġprovided Ċ private Ġval ĠTitle Inset Without Icon Ġ= ĠModifier . width ( 1 6 . dp Ġ- ĠApp Bar Horizontal Padding ) Ċ Ċ // ĠStart Ġinset Ġfor Ġthe Ġtitle Ġwhen Ġthere Ġis Ġa Ġnavigation Ġicon Ġprovided Ċ private Ġval ĠTitle Icon Modifier Ġ= ĠModifier ĊĠĠĠ Ġ. fill Max Height () ĊĠĠĠ Ġ. width ( 5 6 . dp Ġ- ĠApp Bar Horizontal Padding ) Ċ