package cl.homelogic.platform.designsystem.foundations

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Immutable
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp

sealed class Sizes {
    object Buttons {
        val Small = Dimens.at40
        val Regular = Dimens.at48
        val Big = Dimens.at56
        val Large = Dimens.at72
    }

    object Dots {
        val Small = Dimens.at6
        val Regular = Dimens.at8
        val Big = Dimens.at10
    }

    object TextFields {
        val Regular = Dimens.at52
    }

    object Images {
        val Regular = Dimens.at300
        val Big = Dimens.at350
    }

    object Borders {
        val Regular = Dimens.at1
    }

    object Header {
        val Regular = Dimens.at72
    }

    object Spacers {
        val Regular = Dimens.at8
        val Big = Dimens.at16
    }

    object ScreenInset {
        val Bottom = Dimens.at40
    }

    object Shadows {
        val Regular = Dimens.at4
    }

    object Stroke {
        val Regular = Dimens.at1
    }

    object Containers {
        val Small = Dimens.at40
        val Regular = Dimens.at60
        val Big = Dimens.at72
        val Large = Dimens.at120
        val Huge = Dimens.at300
    }
}

@Immutable
object Padding {
    val none = Dimens.at0
    val tiny = Dimens.at4
    val small = Dimens.at8
    val regular = Dimens.at12
    val big = Dimens.at16
    val large = Dimens.at32

    object Content {
        val regular = PaddingValues(vertical = Dimens.at16)
    }
}

@Immutable
object Dimens {
    val at0 = 0.dp
    val at1 = 1.dp
    val at2 = 2.dp
    val at4 = 4.dp
    val at6 = 6.dp
    val at8 = 8.dp
    val at10 = 10.dp
    val at12 = 12.dp
    val at16 = 16.dp
    val at20 = 20.dp
    val at24 = 24.dp
    val at28 = 28.dp
    val at32 = 32.dp
    val at36 = 36.dp
    val at40 = 40.dp
    val at44 = 44.dp
    val at48 = 48.dp
    val at52 = 52.dp
    val at56 = 56.dp
    val at60 = 60.dp
    val at72 = 72.dp
    val at120 = 120.dp
    val at300 = 300.dp
    val at350 = 350.dp
}

@Immutable
object ScaledDimens {
    val at0 = 0.sp
    val at2 = 2.sp
    val at4 = 4.sp
    val at8 = 8.sp
    val at12 = 12.sp
    val at16 = 16.sp
    val at18 = 18.sp
    val at20 = 20.sp
    val at22 = 22.sp
    val at24 = 24.sp
    val at26 = 26.sp
    val at28 = 28.sp
    val at30 = 30.sp
    val at32 = 32.sp
    val at36 = 36.sp
    val at40 = 40.sp
    val at44 = 44.sp
    val at48 = 48.sp
    val at52 = 52.sp
    val at56 = 56.sp
    val at72 = 72.sp
}
