KotlinPublicationScriptsBui.../desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/View.kt

34 lines
756 B
Kotlin

package dev.inmo.kmppscriptbuilder.desktop.utils
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
abstract class View {
protected open val defaultModifier = Modifier.fillMaxWidth().padding(8.dp)
@Composable
abstract fun build()
}
abstract class VerticalView(val title: String) : View() {
abstract val content: @Composable ColumnScope.() -> Unit
@Composable
override fun build() {
TitleText(title)
Column(
defaultModifier
) {
content()
}
Spacer(Modifier.fillMaxWidth().height(8.dp))
}
}
@Composable
fun <T : View> T.init(): T = apply {
build()
}