Skip to content

Commit 5e61098

Browse files
- BoggleTheme object implemented to handle BoggleDimensions.
- Project updated to use BoggleDimensions. - Constants created for better organization.
1 parent 2a45b07 commit 5e61098

15 files changed

Lines changed: 181 additions & 132 deletions

File tree

composeApp/src/commonMain/composeResources/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@
1919
<string name="word_counter_6">6</string>
2020
<string name="word_counter_7">7</string>
2121
<string name="word_counter_more">8+</string>
22+
<string name="game_progress">%1$d%</string>
2223
</resources>

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/App.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.alejandrorios.bogglemultiplatform.di.networkModule
1313
import com.alejandrorios.bogglemultiplatform.ui.screen.BoggleScreen
1414
import com.alejandrorios.bogglemultiplatform.ui.screen.BoggleUiState
1515
import com.alejandrorios.bogglemultiplatform.ui.screen.BoggleViewModel
16-
import com.alejandrorios.bogglemultiplatform.ui.theme.AppTheme
16+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
1717
import io.github.xxfast.kstore.KStore
1818
import org.koin.compose.KoinApplication
1919
import org.koin.compose.viewmodel.koinViewModel
@@ -23,7 +23,7 @@ internal fun App() {
2323
KoinApplication(application = {
2424
modules(commonModule(), networkModule(), databaseModule())
2525
}) {
26-
AppTheme {
26+
BoggleTheme {
2727
val boggleViewModel: BoggleViewModel = koinViewModel()
2828
val boggleUiState by boggleViewModel.uiState.collectAsStateWithLifecycle()
2929

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/AnimatedBorderBox.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ import androidx.compose.ui.graphics.drawscope.rotate
3131
import androidx.compose.ui.graphics.drawscope.scale
3232
import androidx.compose.ui.platform.LocalDensity
3333
import androidx.compose.ui.unit.Dp
34-
import androidx.compose.ui.unit.dp
3534
import com.alejandrorios.bogglemultiplatform.currentPlatform
35+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
3636

3737
@Composable
3838
fun AnimatedBorderBox(
@@ -41,8 +41,8 @@ fun AnimatedBorderBox(
4141
backgroundColor: Color = Color(0xFF1F4E78),
4242
borderColor: Color = Color(0xFF9C9C9C),
4343
progressColor: Color = Color(0xFFD28B2D),
44-
cornerRadius: Dp = 16.dp,
45-
strokeWidth: Dp = 10.dp,
44+
cornerRadius: Dp = BoggleTheme.dimensions.cornerRadius.md,
45+
strokeWidth: Dp = BoggleTheme.dimensions.strokeWidth.borderBox,
4646
onProgressComplete: () -> Unit = {},
4747
onRotationComplete: () -> Unit = {},
4848
modifier: Modifier = Modifier,

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/BoggleBoard.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ import androidx.compose.runtime.remember
1111
import androidx.compose.runtime.saveable.rememberSaveable
1212
import androidx.compose.ui.Modifier
1313
import androidx.compose.ui.draw.rotate
14-
import androidx.compose.ui.unit.dp
1514
import com.alejandrorios.bogglemultiplatform.ui.screen.BoggleUiState
15+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
16+
import com.alejandrorios.bogglemultiplatform.utils.BoggleBoardGridSize
1617
import com.alejandrorios.bogglemultiplatform.utils.boggleBoardDragHandler
1718
import com.alejandrorios.bogglemultiplatform.utils.boggleDieModifier
1819

@@ -29,8 +30,11 @@ fun BoggleBoard(
2930
val listState = rememberLazyGridState()
3031

3132
val borderProgress = remember(state.wordsGuessed.size, state.result.size) {
32-
if (state.result.isEmpty()) 0f
33-
else state.wordsGuessed.size / state.result.size.toFloat()
33+
if (state.result.isEmpty()) {
34+
0f
35+
} else {
36+
state.wordsGuessed.size / state.result.size.toFloat()
37+
}
3438
}
3539

3640
AnimatedBorderBox(
@@ -45,10 +49,10 @@ fun BoggleBoard(
4549

4650
LazyVerticalGrid(
4751
state = listState,
48-
columns = GridCells.Fixed(4),
49-
verticalArrangement = Arrangement.spacedBy(18.dp),
50-
horizontalArrangement = Arrangement.spacedBy(18.dp),
51-
contentPadding = PaddingValues(20.dp),
52+
columns = GridCells.Fixed(BoggleBoardGridSize),
53+
verticalArrangement = Arrangement.spacedBy(BoggleTheme.dimensions.spacing.md),
54+
horizontalArrangement = Arrangement.spacedBy(BoggleTheme.dimensions.spacing.md),
55+
contentPadding = PaddingValues(BoggleTheme.dimensions.spacing.lg),
5256
modifier = modifier.boggleBoardDragHandler(listState, selectedIds, onDragEnded, updateKeys),
5357
userScrollEnabled = false
5458
) {

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/BoggleDie.kt

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import androidx.compose.ui.text.font.FontWeight
1919
import androidx.compose.ui.text.style.TextAlign
2020
import androidx.compose.ui.unit.dp
2121
import androidx.compose.ui.unit.sp
22+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
23+
import com.alejandrorios.bogglemultiplatform.utils.cardElevationZero
2224
import com.alejandrorios.bogglemultiplatform.utils.isQ
2325
import org.jetbrains.compose.ui.tooling.preview.Preview
2426

@@ -31,23 +33,16 @@ fun BoggleDie(
3133
) {
3234
Card(
3335
modifier = modifier,
34-
shape = RoundedCornerShape(16.dp),
35-
elevation = CardDefaults.cardElevation(
36-
defaultElevation = 0.dp,
37-
pressedElevation = 0.dp,
38-
focusedElevation = 0.dp,
39-
hoveredElevation = 0.dp,
40-
draggedElevation = 0.dp,
41-
disabledElevation = 0.dp
42-
),
36+
shape = RoundedCornerShape(BoggleTheme.dimensions.cornerRadius.md),
37+
elevation = CardDefaults.cardElevation(cardElevationZero.dp),
4338
colors = CardDefaults.cardColors(
4439
containerColor = getCardColor(selected, isAWord),
4540
),
4641
) {
4742
Box(
4843
contentAlignment = Alignment.Center,
4944
modifier = Modifier
50-
.padding(4.dp)
45+
.padding(BoggleTheme.dimensions.spacing.xxs)
5146
.clip(CircleShape)
5247
.background(color = getBoxColor(selected, isAWord))
5348
.fillMaxSize()
@@ -71,7 +66,7 @@ fun BoggleDie(
7166
color = getLetterColor(selected),
7267
fontWeight = FontWeight.Bold,
7368
textAlign = TextAlign.Center,
74-
modifier = Modifier.padding(4.dp)
69+
modifier = Modifier.padding(BoggleTheme.dimensions.spacing.xxs)
7570
)
7671
}
7772
}
@@ -97,17 +92,17 @@ fun getLetterColor(selected: Boolean): Color = when {
9792
@Preview(showBackground = true)
9893
@Composable
9994
fun NormalDie() {
100-
BoggleDie(letter = "Qu", selected = false, modifier = Modifier.padding(10.dp))
95+
BoggleDie(letter = "Qu", selected = false, modifier = Modifier.padding(BoggleTheme.dimensions.spacing.sm))
10196
}
10297

10398
@Preview(showBackground = true)
10499
@Composable
105100
fun SelectedDie() {
106-
BoggleDie(letter = "B", selected = true, modifier = Modifier.padding(10.dp))
101+
BoggleDie(letter = "B", selected = true, modifier = Modifier.padding(BoggleTheme.dimensions.spacing.sm))
107102
}
108103

109104
@Preview(showBackground = true)
110105
@Composable
111106
fun WordDie() {
112-
BoggleDie(letter = "B", selected = true, isAWord = true, modifier = Modifier.padding(10.dp))
107+
BoggleDie(letter = "B", selected = true, isAWord = true, modifier = Modifier.padding(BoggleTheme.dimensions.spacing.sm))
113108
}

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/Spacers.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import androidx.compose.foundation.layout.width
66
import androidx.compose.runtime.Composable
77
import androidx.compose.ui.Modifier
88
import androidx.compose.ui.unit.Dp
9-
import androidx.compose.ui.unit.dp
9+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
1010

1111
@Composable
12-
fun VerticalSpacer(spacing: Dp = 10.dp) = Spacer(modifier = Modifier.height(spacing))
12+
fun VerticalSpacer(spacing: Dp = BoggleTheme.dimensions.spacing.sm) = Spacer(modifier = Modifier.height(spacing))
1313

1414
@Composable
15-
fun HorizontalSpacer(spacing: Dp = 10.dp) = Spacer(modifier = Modifier.width(spacing))
15+
fun HorizontalSpacer(spacing: Dp = BoggleTheme.dimensions.spacing.sm) = Spacer(modifier = Modifier.width(spacing))

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/WordCounter.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ import androidx.compose.ui.text.TextStyle
2424
import androidx.compose.ui.text.buildAnnotatedString
2525
import androidx.compose.ui.text.style.TextAlign
2626
import androidx.compose.ui.text.withStyle
27-
import androidx.compose.ui.unit.dp
2827
import androidx.compose.ui.unit.sp
2928
import com.alejandrorios.bogglemultiplatform.data.models.WordPair
29+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
3030

3131
@Composable
3232
fun WordCounter(
@@ -44,7 +44,7 @@ fun WordCounter(
4444
).value
4545

4646
Column(
47-
modifier = Modifier.padding(horizontal = 16.dp),
47+
modifier = Modifier.padding(horizontal = BoggleTheme.dimensions.spacing.md),
4848
horizontalAlignment = Alignment.CenterHorizontally,
4949
) {
5050
Text(
@@ -53,7 +53,10 @@ fun WordCounter(
5353
)
5454
VerticalSpacer()
5555
Box(
56-
modifier = Modifier.background(color = Color(0xFFEBEBEB), shape = RoundedCornerShape(100)),
56+
modifier = Modifier.background(
57+
color = Color(0xFFEBEBEB),
58+
shape = RoundedCornerShape(BoggleTheme.dimensions.cornerRadius.full)
59+
),
5760
contentAlignment = Alignment.Center
5861
) {
5962
Text(
@@ -62,7 +65,7 @@ fun WordCounter(
6265
)
6366
CircularProgressIndicator(
6467
progress = { animatedProgress },
65-
strokeWidth = 6.dp,
68+
strokeWidth = BoggleTheme.dimensions.strokeWidth.wordCounterProgress,
6669
trackColor = Color(0xFFEBEBEB),
6770
strokeCap = StrokeCap.Round
6871
)

composeApp/src/commonMain/kotlin/com/alejandrorios/bogglemultiplatform/ui/components/WordCounterRow.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.padding
88
import androidx.compose.foundation.rememberScrollState
99
import androidx.compose.runtime.Composable
1010
import androidx.compose.ui.Modifier
11-
import androidx.compose.ui.unit.dp
1211
import boggle_multiplatform.composeapp.generated.resources.Res
1312
import boggle_multiplatform.composeapp.generated.resources.word_counter_3
1413
import boggle_multiplatform.composeapp.generated.resources.word_counter_4
@@ -17,6 +16,7 @@ import boggle_multiplatform.composeapp.generated.resources.word_counter_6
1716
import boggle_multiplatform.composeapp.generated.resources.word_counter_7
1817
import boggle_multiplatform.composeapp.generated.resources.word_counter_more
1918
import com.alejandrorios.bogglemultiplatform.data.models.WordsCount
19+
import com.alejandrorios.bogglemultiplatform.ui.theme.BoggleTheme
2020
import org.jetbrains.compose.resources.stringResource
2121

2222
@Composable
@@ -26,7 +26,10 @@ fun WordCounterRow(
2626
onWordClick: (String) -> Unit
2727
) {
2828
Row(
29-
modifier = modifier.padding(horizontal = 16.dp).fillMaxWidth().horizontalScroll(rememberScrollState()),
29+
modifier = modifier
30+
.padding(horizontal = BoggleTheme.dimensions.spacing.md)
31+
.fillMaxWidth()
32+
.horizontalScroll(rememberScrollState()),
3033
horizontalArrangement = Arrangement.Center
3134
) {
3235
WordCounter(

0 commit comments

Comments
 (0)