1414 * limitations under the License.
1515 */
1616
17- @file:OptIn(ExperimentalFoundationStyleApi ::class )
17+ @file:OptIn(ExperimentalFoundationStyleApi ::class , ExperimentalMediaQueryApi :: class )
1818
1919package com.example.jetsnack.ui.theme
2020
2121import androidx.compose.foundation.shape.CircleShape
2222import androidx.compose.foundation.shape.RoundedCornerShape
2323import androidx.compose.foundation.style.ExperimentalFoundationStyleApi
2424import androidx.compose.foundation.style.Style
25+ import androidx.compose.foundation.style.StyleScope
2526import androidx.compose.foundation.style.disabled
2627import androidx.compose.foundation.style.fillWidth
28+ import androidx.compose.foundation.style.hovered
2729import androidx.compose.foundation.style.pressed
2830import androidx.compose.foundation.style.selected
31+ import androidx.compose.material3.ButtonDefaults
2932import androidx.compose.material3.LocalTextStyle
3033import androidx.compose.runtime.Immutable
34+ import androidx.compose.ui.ExperimentalMediaQueryApi
35+ import androidx.compose.ui.LocalUiMediaScope
36+ import androidx.compose.ui.UiMediaScope
37+ import androidx.compose.ui.UiMediaScope.ViewingDistance
3138import androidx.compose.ui.graphics.Brush
3239import androidx.compose.ui.graphics.Color
3340import androidx.compose.ui.graphics.RectangleShape
3441import androidx.compose.ui.graphics.TileMode
42+ import androidx.compose.ui.mediaQuery
43+ import androidx.compose.ui.unit.TextUnit
3544import androidx.compose.ui.unit.dp
3645import com.example.jetsnack.ui.components.textStyleWithFontFamilyFix
3746
47+ fun StyleScope.adaptiveFontSize (fontSize : TextUnit ) {
48+ var scaleFactor = when (LocalUiMediaScope .currentValue.viewingDistance) {
49+ ViewingDistance .Near -> 1f
50+ ViewingDistance .Medium -> 1.72f
51+ ViewingDistance .Far -> 1.5f
52+ else -> 1f
53+ }
54+ scaleFactor = when (LocalUiMediaScope .currentValue.pointerPrecision) {
55+ UiMediaScope .PointerPrecision .Coarse -> scaleFactor * 1f
56+ UiMediaScope .PointerPrecision .Blunt -> scaleFactor * 0.66f
57+ UiMediaScope .PointerPrecision .Fine -> scaleFactor * 1f
58+ UiMediaScope .PointerPrecision .None -> scaleFactor
59+ else -> {
60+ scaleFactor
61+ }
62+ }
63+ fontSize(fontSize * scaleFactor)
64+ }
65+
3866@Immutable
3967data class Styles (
4068 val buttonStyle : Style = Style {
@@ -43,6 +71,7 @@ data class Styles(
4371 contentColor(colors.textInteractive)
4472 contentPaddingVertical(8.dp)
4573 contentPaddingHorizontal(24.dp)
74+ minSize(58.dp, 48.dp)
4675 textStyleWithFontFamilyFix(typography.labelLarge)
4776 disabled {
4877 animate {
0 commit comments