package Ġcom . k uber am . android . ui . view Ċ Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . material . Card Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . produce State Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . graphics Layer Ċ import Ġandroidx . compose . ui . util . lerp Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . google . ac comp an ist . pager . Experimental Pager Api Ċ import Ġcom . google . ac comp an ist . pager . Horizontal Pager Ċ import Ġcom . google . ac comp an ist . pager . calculate Current Offset For Page Ċ import Ġcom . google . ac comp an ist . pager . remember Pager State Ċ import Ġcom . k uber am . android . component . On Board Bottom Section Ċ import Ġcom . k uber am . android . component . On Board Component Ċ import Ġcom . k uber am . android . navigation . Screen Ċ import Ġcom . k uber am . android . ui . view model . Main ViewModel Ċ import Ġcom . k uber am . android . utils . On Board Item Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . math . absolute Value Ċ Ċ @ Experimental Pager Api Ċ @ Composable Ċ fun ĠOn Board Screen ( nav Controller : ĠNav Controller , ĠviewModel : ĠMain ViewModel ) Ġ{ ĊĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠ Ġval Ġis Dark Theme Ġ= ĊĠĠĠĠĠĠĠ Ġproduce State ( initial Value Ġ= Ġfalse , Ġkey 1 Ġ= ĠviewModel . dark Theme . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . check Theme () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠviewModel . dark Theme . value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ ĠColumn ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠOn Board Item . get () ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġremember Pager State ( page Count Ġ= Ġitems . size ) ĊĠĠĠĠĠĠĠ ĠHorizontal Pager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 0 . 8 f ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCard ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. graphics Layer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Offset Ġ= Ġcalculate Current Offset For Page ( page ). absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl erp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 0 . 5 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfraction Ġ= Ġ 1 f Ġ- Ġpage Offset . coerce In ( 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġscale Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġscale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġscale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġl erp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfraction Ġ= Ġ 1 f Ġ- Ġpage Offset . coerce In ( 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCard Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Board Component ( items [ page ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOn Board Bottom Section ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġitems . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġstate . currentPage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dark The m Ġ= Ġis Dark Theme . value ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . currentPage Ġ+ Ġ 1 Ġ< Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġstate . scrollTo Page ( state . currentPage Ġ+ Ġ 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . currentPage Ġ+ Ġ 1 Ġ== Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . change First Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( Screen . Auth . route ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ