package com.fastest.pass.ui.theme

import androidx.compose.material3.Typography
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.sp
import com.fastest.pass.R

// Set of Material typography styles to start with

val outfitFontFamily = FontFamily(
    Font(R.font.outfit_black, FontWeight.Black),
    Font(R.font.outfit_bold, FontWeight.Bold),
    Font(R.font.outfit_extrabold, FontWeight.ExtraBold),
    Font(R.font.outfit_semibold, FontWeight.SemiBold),
    Font(R.font.outfit_medium, FontWeight.Medium),
    Font(R.font.outfit_regular, FontWeight.Normal),
    Font(R.font.outfit_light, FontWeight.Light),
    Font(R.font.outfit_extralight, FontWeight.ExtraLight),
    Font(R.font.outfit_thin, FontWeight.Thin)
)

val Typography = Typography(
    displaySmall = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 14.sp,
    ),
    displayMedium = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 16.sp,
        textAlign = TextAlign.Start,
    ),
    displayLarge = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 24.sp,
    ),
    headlineSmall = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        textAlign = TextAlign.Center,
        fontSize = 20.sp,
    ),
    headlineMedium = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 14.sp,
        textAlign = TextAlign.Center,
        letterSpacing = (-0.14).sp
    ),
    headlineLarge = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.ExtraBold,
        fontSize = 24.sp,
    ),
    titleSmall = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 15.sp,
    ),
    titleMedium = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Medium,
        fontSize = 16.sp,
    ),
    titleLarge = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.ExtraBold,
        fontSize = 60.sp,
        lineHeight = 50.sp,
        letterSpacing = 0.45.sp,
        textAlign = TextAlign.Center
    ),

    bodySmall = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 14.sp,
        lineHeight = 30.sp,
    ),
    bodyMedium = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Medium,
        fontSize = 18.sp,
        textAlign = TextAlign.Center,
    ),
    bodyLarge = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Medium,
        fontSize = 14.sp,
    ),
    labelSmall = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 14.sp,
        textAlign = TextAlign.Center,
        lineHeight = 30.sp
    ),
    labelMedium = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.SemiBold,
        fontSize = 20.sp,
        textAlign = TextAlign.Start
    ),
    labelLarge = TextStyle(
        fontFamily = outfitFontFamily,
        fontWeight = FontWeight.Normal,
        fontSize = 18.sp,
        textAlign = TextAlign.Center
    )
)

val Typography.customTypography: Typography
    @Composable
    get() = Typography(
        displaySmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 18.sp,
            lineHeight = 30.sp,
        ),
        displayMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            textAlign = TextAlign.Center,
            color = colorResource(id = R.color.blue_login),
        ),
        displayLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.SemiBold,
            fontSize = 18.sp,
            textAlign = TextAlign.Right,
            color = colorResource(id = R.color.blue_login),
        ),
        headlineSmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 12.sp,
            lineHeight = 30.sp,
            color = colorResource(id = R.color.blue_login)
        ),
        headlineMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            textAlign = TextAlign.Right,
            color = colorResource(id = R.color.blue_login)
        ),
        headlineLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 18.sp,
            textAlign = TextAlign.Center,
        ),
        titleSmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 16.sp,
            textAlign = TextAlign.Right,
            color = colorResource(id = R.color.blue_login)
        ),
        titleMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            textAlign = TextAlign.Right,
            color = colorResource(id = R.color.blue_login)
        ),
        titleLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 16.sp,
            color = colorResource(id = R.color.blue_login)
        )
        ,
        bodySmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Medium,
            fontSize = 12.sp,
            color = colorResource(id = R.color.white)
        ),
        bodyMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            lineHeight = 22.sp,
            letterSpacing = 0.21.sp,
            color = colorResource(id = R.color.white)
        ),
        bodyLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 16.sp,
            color = colorResource(id = R.color.white)
        ),
        labelSmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            textAlign = TextAlign.Center,
            lineHeight = 22.sp,
            letterSpacing = 0.21.sp,
            color = colorResource(id = R.color.white)
        ),
        labelMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Medium,
            fontSize = 16.sp,
            textAlign = TextAlign.Center
        ),
        labelLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            lineHeight = 30.sp,
            color = colorResource(id = R.color.white)
        ),
    )

val Typography.customTypography2: Typography
    @Composable
    get() = Typography(
        labelSmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Medium,
            fontSize = 12.sp,
            color = colorResource(id = R.color.blue_login)
        ),
        labelMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Bold,
            fontSize = 20.sp,
            textAlign = TextAlign.Start
        ),
        labelLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.SemiBold,
            fontSize = 20.sp,
            textAlign = TextAlign.Right
        ),
        bodySmall = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.SemiBold,
            fontSize = 20.sp,
            textAlign = TextAlign.Center
        ),
        bodyMedium = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 14.sp,
            lineHeight = 22.sp,
            letterSpacing = 0.21.sp,
            color = colorResource(id = R.color.blue_login)
        ),
        bodyLarge = TextStyle(
            fontFamily = outfitFontFamily,
            fontWeight = FontWeight.Normal,
            fontSize = 11.sp,
            textAlign = TextAlign.Center,
            letterSpacing = (-0.26).sp,
        )
    )