package Ġcom . kas umin otes . ui . components Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Animated Visibility Scope Ċ import Ġandroidx . compose . animation . slide In H orizontally Ċ import Ġandroidx . compose . animation . slide Out H orizontally Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Column Scope Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Scroll able Tab Row Ċ import Ġandroidx . compose . material . Tab Ċ import Ġandroidx . compose . material . Tab Row Ċ import Ġandroidx . compose . material . Tab Row Defaults Ċ import Ġandroidx . compose . material . content Color For Ċ import Ġandroidx . compose . material . primary Surface Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . save able . remember Save able Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . unit . Dp Ċ Ċ @ Composable Ċ fun ĠTabs Panel ( ĊĠĠĠ Ġsize : ĠInt , ĊĠĠĠ Ġscroll able : ĠBoolean , ĊĠĠĠ Ġinit Index : ĠInt , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . primary Surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġedge Padding : ĠD p Ġ= ĠTab Row Defaults . Scroll able Tab Row Padding , ĊĠĠĠ Ġtab Content For : Ġ@ Composable ĠColumn Scope .( index : ĠInt ) Ġ-> ĠUnit , ĊĠĠĠ Ġpanel Content For : Ġ@ Composable Ġ( index : ĠInt ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġselected TabIndex Ġby Ġremember Save able Ġ{ Ġmutable State Of ( init Index ) Ġ} ĊĊĠĠĠ ĠTabs Panel ( ĊĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠ Ġscroll able Ġ= Ġscroll able , ĊĠĠĠĠĠĠĠ Ġselected TabIndex Ġ= Ġselected TabIndex , ĊĠĠĠĠĠĠĠ Ġon TabIndex Selected Ġ= Ġ{ Ġselected TabIndex Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠ Ġedge Padding Ġ= Ġedge Padding , ĊĠĠĠĠĠĠĠ Ġtab Content For Ġ= Ġtab Content For , ĊĠĠĠĠĠĠĠ Ġpanel Content For Ġ= Ġpanel Content For ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠTabs Panel ( ĊĠĠĠ Ġsize : ĠInt , ĊĠĠĠ Ġscroll able : ĠBoolean , ĊĠĠĠ Ġselected TabIndex : ĠInt , ĊĠĠĠ Ġon TabIndex Selected : Ġ( Int ) Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . primary Surface , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġedge Padding : ĠD p Ġ= ĠTab Row Defaults . Scroll able Tab Row Padding , ĊĠĠĠ Ġtab Content For : Ġ@ Composable ĠColumn Scope .( index : ĠInt ) Ġ-> ĠUnit , ĊĠĠĠ Ġpanel Content For : Ġ@ Composable Ġ( index : ĠInt ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġprev Selected TabIndex Ġby Ġremember Ġ{ Ġmutable State Of ( selected TabIndex ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtabs : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( size ) Ġ{ Ġindex -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġindex Ġ== Ġselected TabIndex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Selected TabIndex Ġ= Ġselected TabIndex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon TabIndex Selected ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Content For ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( scroll able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll able Tab Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected TabIndex Ġ= Ġselected TabIndex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedge Padding Ġ= Ġedge Padding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Ġ= Ġtabs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTab Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected TabIndex Ġ= Ġselected TabIndex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Ġ= Ġtabs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠBox ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( size ) Ġ{ Ġindex -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab Panel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġprev Selected TabIndex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġselected TabIndex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Content For ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠTab Panel ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġfrom : ĠInt , ĊĠĠĠ Ġto : ĠInt , ĊĠĠĠ Ġcontent : Ġ@ Composable ĠAnimated Visibility Scope . () Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġif Ġ( from Ġ< Ġto ) Ġ 1 Ġelse Ġ- 1 ĊĊĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠ Ġvisible Ġ= Ġindex Ġ== Ġto , ĊĠĠĠĠĠĠĠ Ġenter Ġ= Ġslide In H orizontally ( initial Offset X Ġ= Ġ{ Ġx Ġ* Ġit Ġ}), ĊĠĠĠĠĠĠĠ Ġexit Ġ= Ġslide Out H orizontally ( target Offset X Ġ= Ġ{ Ġ- x Ġ* Ġit Ġ}), ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠ Ġ) Ċ } Ċ