package dev.inmo.jsuikit.elements import androidx.compose.runtime.Composable import dev.inmo.jsuikit.modifiers.UIKitTab import dev.inmo.jsuikit.modifiers.include import dev.inmo.jsuikit.utils.optionallyDraw import org.jetbrains.compose.web.attributes.AttrsScope import org.jetbrains.compose.web.dom.* import org.w3c.dom.HTMLLIElement import org.w3c.dom.HTMLUListElement @Composable fun Tabs( data: Iterable, tabsItemBuilder: @Composable ElementScope.(i: Int, data: T) -> Unit, tabsItemAttrs: AttrsScope.(i: Int, data: T) -> Unit = { _, _ -> }, tabsContainerAttrs: AttrsScope.() -> Unit = {}, contentContainerAttrs: (AttrsScope.() -> Unit)? = null, contentItemAttrs: (AttrsScope.(i: Int, data: T) -> Unit)? = null, contentItemBuilder: (@Composable ElementScope.(i: Int, data: T) -> Unit)? = null ) { Ul({ include(UIKitTab); tabsContainerAttrs() }) { data.forEachIndexed { i, data -> Li({ tabsItemAttrs(i, data) }) { tabsItemBuilder(i, data) } } } optionallyDraw(contentItemAttrs != null, contentItemBuilder != null, contentContainerAttrs != null) { Ul({ contentContainerAttrs ?.invoke(this) }) { optionallyDraw(contentItemAttrs != null, contentItemBuilder != null) { data.forEachIndexed { i, data -> Li({ contentItemAttrs ?.invoke(this, i, data) }) { contentItemBuilder ?.invoke(this, i, data) } } } } } }