package Ġcom . alex zh . co ff eed rink s . ui . screen . co ff eed rink s Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . is System In Dark Theme Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . alpha Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Image Bitmap Ċ import Ġandroidx . compose . ui . graphics . p ainter . Bitmap Painter Ċ import Ġandroidx . compose . ui . res . image Resource Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . style . Text Overflow Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . alex zh . co ff eed rink s . data . Dummy C offee Dr inks DataSource Ċ import Ġcom . alex zh . co ff eed rink s . ui . app Typography Ċ import Ġcom . alex zh . co ff eed rink s . ui . component . App Divider Ċ import Ġcom . alex zh . co ff eed rink s . ui . component . F avour ite Ċ import Ġcom . alex zh . co ff eed rink s . ui . light Theme Colors Ċ import Ġcom . alex zh . co ff eed rink s . ui . screen . co ff eed rink s . mapper . C offee Dr ink Item Mapper Ċ import Ġcom . alex zh . co ff eed rink s . ui . screen . co ff eed rink s . model . C offee Dr ink Item Ċ Ċ private Ġval ĠCO FF EE _ DR INK _ IMAGE _ SIZE Ġ= Ġ 7 2 . dp Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠPreview ListItem () Ġ{ ĊĠĠĠ Ġval Ġmapper Ġ= ĠC offee Dr ink Item Mapper () ĊĠĠĠ Ġval Ġcoffee Dr ink Ġ= Ġmapper . map ( ĊĠĠĠĠĠĠĠ ĠDummy C offee Dr inks DataSource (). getC offee Dr inks (). first () ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠMaterial Theme ( colors Ġ= Ġlight Theme Colors , Ġty pography Ġ= Ġapp Typography ) Ġ{ ĊĠĠĠĠĠĠĠ ĠC offee Dr ink ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoffee Dr ink Ġ= Ġcoffee Dr ink , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon F avour ite StateChanged Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠC offee Dr ink List ( ĊĠĠĠ Ġcoffee Dr ink : ĠC offee Dr ink Item , ĊĠĠĠ Ġon F avour ite StateChanged : Ġ( C offee Dr ink Item ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ ĠC offee Dr ink ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoffee Dr ink Ġ= Ġcoffee Dr ink , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon F avour ite StateChanged Ġ= Ġ{ Ġon F avour ite StateChanged ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠApp Divider ( Padding Values ( start Ġ= ĠCO FF EE _ DR INK _ IMAGE _ SIZE )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠC offee Dr ink ListItem ( ĊĠĠĠ Ġcoffee Dr ink : ĠC offee Dr ink Item , ĊĠĠĠ Ġon F avour ite StateChanged : Ġ( C offee Dr ink Item ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠRow Ġ{ ĊĠĠĠĠĠĠĠ ĠC offee Dr ink Logo ( id Ġ= Ġcoffee Dr ink . imageUrl ) ĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC offee Dr ink Title ( title Ġ= Ġcoffee Dr ink . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC offee Dr ink Ingredient ( ingredients Ġ= Ġcoffee Dr ink . ingredients ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠC offee Dr ink F avour ite Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġif Ġ( is System In Dark Theme ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . colors . on Primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . colors . primary Variant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite State Ġ= Ġcoffee Dr ink . is F avour ite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ValueChanged Ġ= Ġ{ Ġon F avour ite StateChanged ( coffee Dr ink ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠC offee Dr ink Logo (@ Drawable Res Ġid : ĠInt ) Ġ{ ĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( CO FF EE _ DR INK _ IMAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 8 . dp ), ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠCircle Shape , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 xFF FA FA FA ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= ĠBitmap Painter ( Image Bitmap . image Resource ( id Ġ= Ġid )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠC offee Dr ink Title ( title : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtitle , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( fontSize Ġ= Ġ 2 4 . sp ), ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠC offee Dr ink Ingredient ( ingredients : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġingredients , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 . 5 4 f ), ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠC offee Dr ink F avour ite Icon ( ĊĠĠĠ Ġt int : ĠColor Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠ Ġfavour ite State : ĠBoolean , ĊĠĠĠ Ġon ValueChanged : Ġ( Boolean ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠF avour ite ( ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġfavour ite State , ĊĠĠĠĠĠĠĠ Ġon ValueChanged Ġ= Ġon ValueChanged , ĊĠĠĠĠĠĠĠ Ġt int Ġ= Ġt int ĊĠĠĠ Ġ) Ċ } Ċ