/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . el be hir y . de lish . ui . home Ċ Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . el be hir y . de lish . R Ċ import Ġcom . el be hir y . de lish . ui . main . Main ViewModel Ċ import Ġcom . el be hir y . de lish . ui . widget . Loading Content Ċ import Ġcom . el be hir y . de lish . ui . widget . Notification Banner Ċ import Ġcom . el be hir y . model . C uis ine Item Ċ import Ġcom . el be hir y . model . Ingredient Item Ċ import Ġcom . el be hir y . model . Recipes Item Ċ Ċ @ Experimental Foundation Api Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠHome Content ( ĊĠĠĠ ĠviewModel : ĠMain ViewModel , ĊĠĠĠ Ġon Ingredient Content : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġon C uis ine Search : Ġ( String ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Details : Ġ( Int ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Ingredient Search : Ġ( String ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġrecipes : ĠList < Recipes Item > Ġby ĠviewModel . random Recipes . observe As State ( listOf ()) ĊĠĠĠ Ġval Ġingredients : ĠList < Ingredient Item > Ġby ĠviewModel . ingredient List . observe As State ( listOf ()) ĊĠĠĠ Ġval Ġcu is ines : ĠList < C uis ine Item > Ġby ĠviewModel . cu is ines List . observe As State ( listOf ()) ĊĠĠĠ Ġval ĠerrorMessage : ĠString Ġby ĠviewModel . has Error . observe As State ("") ĊĠĠĠ Ġval ĠisLoading : ĠBoolean Ġby ĠviewModel . isLoading . observe As State ( false ) ĊĠĠĠ ĠLoading Content ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSurface ( modifier Ġ= ĠModifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠNotification Item ( errorMessage ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠHeader Title () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDaily In sp iration ( recipes , Ġon Details ) Ġ{ Ġrecipe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Recipe ( recipe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠHome Ingredient ( ingredients , Ġon Ingredient Content , Ġon Ingredient Search ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠSp acer ( modifier Ġ= ĠModifier . padding ( 1 6 . dp )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠHome C uis ines ( cu is ines , Ġon C uis ine Search ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĠSp acer ( modifier Ġ= ĠModifier . padding ( 5 0 . dp )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠNotification Item ( errorMessage : ĠString ) Ġ{ ĊĠĠĠ Ġval ĠisOpen Ġ= Ġremember Ġ{ Ġmutable State Of ( errorMessage . isNotEmpty ()) Ġ} ĊĠĠĠ ĠNotification Banner ( ĊĠĠĠĠĠĠĠ ĠisOpen Ġ= ĠisOpen . value , ĊĠĠĠĠĠĠĠ Ġnotification Message Ġ= ĠerrorMessage , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠMaterial Theme . colors . error , ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= ĠColor . White , ĊĠĠĠĠĠĠĠ Ġbutton Text Ġ= Ġstring Resource ( id Ġ= ĠR . string . retry ), ĊĠĠĠĠĠĠĠ Ġbutton TextColor Ġ= ĠColor . White ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠisOpen . value Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHeader Title () Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . Daily _ insp iration ), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 6 , ĊĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Start , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 1 6 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 1 6 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġ 1 6 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 0 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠDaily In sp iration ( ĊĠĠĠ Ġrecipes : ĠList < Recipes Item >, ĊĠĠĠ Ġon Details : Ġ( Int ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Book Mark : Ġ( Recipes Item ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠLazy Row ( ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= ĠPadding Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 . dp , Ġ 8 . dp , Ġ 1 6 . dp , Ġ 1 6 . dp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( recipes ) Ġ{ Ġrecipe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIn sp iration Item ( recipe , Ġon Details Ġ= Ġon Details ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Book Mark ( recipe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ