Pith - kiln
package com.vgmlr.kiln

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

private const val NO_DEFAULT = "[none]"

@Composable
fun KilnHomeSettings(vm: KilnViewModel, onBack: () -> Unit) {
    val accounts by vm.accounts.collectAsState()
    val defaultId by vm.defaultAccountId.collectAsState()
    val loadDefault by vm.loadDefaultOnStart.collectAsState()

    val names = accounts.map { it.name }
    val defaultName = accounts.firstOrNull { it.id == defaultId }?.name.orEmpty()
    val loadOptions = listOf("False", "True")
    val loadDisabled = if (defaultName.isBlank()) loadOptions else emptyList()

    val topInset = WindowInsets.statusBars.asPaddingValues().calculateTopPadding()

    Box(Modifier.fillMaxSize().background(CBg)) {
        Column(
            Modifier.fillMaxSize()
                .navigationBarsPadding()
                .verticalScroll(rememberScrollState())
                .padding(horizontal = BAR_INSET_H)
        ) {
            Spacer(Modifier.height(topInset + TOP_BAR_H + 12.dp))

            WgSection("Global", Icons.Outlined.FavoriteBorder) {
                WgRow("Default Account (Icon)") {
                    WgDropdown(defaultName, names, placeholder = NO_DEFAULT) { picked ->
                        accounts.getOrNull(names.indexOf(picked))
                            ?.let { vm.setDefaultAccount(it.id) }
                    }
                }

                WgDivider()

                WgRow("Load Default On Start") {
                    WgRadio(
                        value = if (loadDefault) "True" else "False",
                        options = loadOptions,
                        disabledOptions = loadDisabled
                    ) { vm.setLoadDefaultOnStart(it == "True") }
                }
            }

            Spacer(Modifier.height(8.dp))
        }
        Row(
            Modifier.fillMaxWidth()
                .padding(top = topInset)
                .height(TOP_BAR_H)
                .padding(horizontal = BAR_INSET_H),
            horizontalArrangement = Arrangement.spacedBy(BAR_GAP),
            verticalAlignment = Alignment.CenterVertically
        ) {
            KilnBarButton(Icons.AutoMirrored.Filled.ArrowBack, "Back", onClick = onBack)
            KilnBlankButton(Modifier.weight(1f), "Settings", Alignment.CenterStart)
        }
    }
}