Pith - kerf
package com.vgmlr.kerf

import androidx.activity.ComponentActivity
import androidx.activity.SystemBarStyle
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp

object KerfDimens {
    val PaddingLarge = 16.dp
    val TextSizeMedium = 14.sp
    val TextSizeLarge = 16.sp
    val TextSizeTitle = 18.sp
}

data class KerfColors(
    val appTopbar: Color,
    val blankTopbar: Color,
    val noteHeaderMain: Color,
    val noteHeader: Color,
    val alertBackground: Color,
    val alertText: Color,
    val menuBackground: Color,
    val menuText: Color
)

val LocalKerfColors = staticCompositionLocalOf<KerfColors?> { null }

@Composable
fun KerfTheme(
    content: @Composable () -> Unit
) {
    val kerfColors = KerfColors(
        appTopbar = colorResource(id = R.color.app_topbar),
        blankTopbar = colorResource(id = R.color.blank_topbar),
        noteHeaderMain = colorResource(id = R.color.note_header_main),
        noteHeader = colorResource(id = R.color.note_header),
        alertBackground = colorResource(id = R.color.alert_background),
        alertText = colorResource(id = R.color.alert_text),
        menuBackground = colorResource(id = R.color.menu_background),
        menuText = colorResource(id = R.color.menu_text)
    )

    val colors = darkColorScheme(
        primary = colorResource(id = R.color.primary_brand),
        onPrimary = colorResource(id = R.color.note_title_text),
        background = colorResource(id = R.color.app_background),
        onBackground = colorResource(id = R.color.note_content_text),
        surface = colorResource(id = R.color.note_background),
        onSurface = colorResource(id = R.color.note_content_text),
        surfaceVariant = colorResource(id = R.color.note_background),
        onSurfaceVariant = colorResource(id = R.color.note_content_text)
    )

    val shapes = Shapes(
        extraSmall = RoundedCornerShape(ROUND_END),
        small = RoundedCornerShape(ROUND_END),
        medium = RoundedCornerShape(ROUND_END),
        large = RoundedCornerShape(ROUND_END),
        extraLarge = RoundedCornerShape(ROUND_END)
    )

    val view = LocalView.current
    if (!view.isInEditMode) {
        SideEffect {
            (view.context as? ComponentActivity)?.enableEdgeToEdge(
                statusBarStyle = SystemBarStyle.auto(Color.Transparent.hashCode(), Color.Transparent.hashCode()) { true }
            )
        }
    }

    CompositionLocalProvider(LocalKerfColors provides kerfColors) {
        MaterialTheme(colorScheme = colors, shapes = shapes, content = content)
    }
}