Skip to content

Commit b769cb5

Browse files
committed
- Add new design system components: KdAlertDialog, KdTextButton, KdCircularProgressIndicator, and KdTopAppBar.
- Add `modifier` parameter to existing design system components: `KdScaffold`, `KdText`, `KdIcon`, and `KdIconButton`. - Update Konsist tests to ensure all Material3 components are wrapped by the design system and exclude ktlint suppressed files. - Add ktlint plugin and dependency to `design-system` module. - Suppress ktlint for `platform.kt` files.
1 parent f844359 commit b769cb5

File tree

25 files changed

+258
-54
lines changed

25 files changed

+258
-54
lines changed

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/components/ShowAlertDialog.kt

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.developersbreach.kotlindictionarymultiplatform.ui.components
22

3-
import androidx.compose.material3.AlertDialog
4-
import androidx.compose.material3.TextButton
53
import androidx.compose.runtime.Composable
64
import androidx.compose.ui.Modifier
5+
import com.developersbreach.designsystem.components.KdAlertDialog
76
import com.developersbreach.designsystem.components.KdText
7+
import com.developersbreach.designsystem.components.KdTextButton
88
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
99
import kotlindictionarymultiplatform.composeapp.generated.resources.ok
1010
import org.jetbrains.compose.resources.stringResource
@@ -16,14 +16,31 @@ fun ShowAlertDialog(
1616
title: String,
1717
description: String,
1818
) {
19-
AlertDialog(
19+
KdAlertDialog(
2020
onDismissRequest = onButtonClick,
21-
title = { KdText(text = title) },
22-
text = { KdText(text = description) },
21+
title = {
22+
KdText(
23+
modifier = Modifier,
24+
text = title,
25+
)
26+
},
27+
text = {
28+
KdText(
29+
modifier = Modifier,
30+
text = description,
31+
)
32+
},
2333
confirmButton = {
24-
TextButton(onClick = onButtonClick) {
25-
KdText(text = stringResource(Res.string.ok))
26-
}
34+
KdTextButton(
35+
modifier = Modifier,
36+
onClick = onButtonClick,
37+
content = {
38+
KdText(
39+
modifier = Modifier,
40+
text = stringResource(Res.string.ok),
41+
)
42+
},
43+
)
2744
},
2845
modifier = modifier,
2946
)

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/components/UiStateHandler.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package com.developersbreach.kotlindictionarymultiplatform.ui.components
22

33
import androidx.compose.foundation.layout.Box
44
import androidx.compose.foundation.layout.fillMaxSize
5-
import androidx.compose.material3.CircularProgressIndicator
65
import androidx.compose.material3.MaterialTheme
76
import androidx.compose.runtime.Composable
87
import androidx.compose.runtime.LaunchedEffect
98
import androidx.compose.runtime.mutableStateOf
109
import androidx.compose.runtime.saveable.rememberSaveable
1110
import androidx.compose.ui.Alignment
1211
import androidx.compose.ui.Modifier
12+
import com.developersbreach.designsystem.components.KdCircularProgressIndicator
1313
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
1414
import kotlindictionarymultiplatform.composeapp.generated.resources.error_info_unavailable
1515
import kotlindictionarymultiplatform.composeapp.generated.resources.error_occurred
@@ -30,7 +30,7 @@ fun <T> UiStateHandler(
3030
Box(modifier = Modifier.fillMaxSize()) {
3131
when (uiState) {
3232
is UiState.Loading -> {
33-
CircularProgressIndicator(
33+
KdCircularProgressIndicator(
3434
modifier = Modifier.align(Alignment.Center),
3535
color = MaterialTheme.colorScheme.onBackground,
3636
)
@@ -52,7 +52,7 @@ fun <T> UiStateHandler(
5252
}
5353

5454
if (isLoading) {
55-
CircularProgressIndicator(
55+
KdCircularProgressIndicator(
5656
modifier = Modifier.align(Alignment.Center),
5757
color = MaterialTheme.colorScheme.onBackground,
5858
)

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/detail/CodeExampleBox.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,14 @@ fun CodeExampleBox(
100100
.padding(4.dp),
101101
) {
102102
KdIcon(
103+
modifier = Modifier,
103104
imageVector = if (copied) Icons.Default.Check else Icons.Default.ContentCopy,
104105
contentDescription = stringResource(Res.string.copy),
105106
tint = MaterialTheme.colorScheme.onPrimary,
106107
)
107108
Spacer(modifier = Modifier.width(4.dp))
108109
KdText(
110+
modifier = Modifier,
109111
text = if (copied) stringResource(Res.string.copied) else stringResource(Res.string.copy),
110112
fontSize = 12.sp,
111113
color = MaterialTheme.colorScheme.onPrimary,

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/detail/DetailScreenComponents.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ fun IntroductionSection(
3838
intro: String,
3939
) {
4040
KdText(
41+
modifier = Modifier,
4142
text = stringResource(resource = Res.string.introduction),
4243
style = MaterialTheme.typography.headlineLarge,
4344
color = MaterialTheme.colorScheme.onPrimary,
4445
)
4546
Spacer(Modifier.height(4.dp))
4647
KdText(
48+
modifier = Modifier,
4749
text = intro,
4850
style = MaterialTheme.typography.bodyMedium,
4951
)
@@ -55,18 +57,21 @@ fun SyntaxSection(
5557
syntax: Syntax,
5658
) {
5759
KdText(
60+
modifier = Modifier,
5861
text = stringResource(resource = Res.string.syntax),
5962
style = MaterialTheme.typography.headlineLarge,
6063
color = MaterialTheme.colorScheme.onPrimary,
6164
)
6265
Spacer(Modifier.height(4.dp))
6366
KdText(
67+
modifier = Modifier,
6468
text = syntax.signature,
6569
style = MaterialTheme.typography.bodyMedium,
6670
)
6771
syntax.notes?.let {
6872
Spacer(Modifier.height(4.dp))
6973
KdText(
74+
modifier = Modifier,
7075
text = stringResource(
7176
Res.string.notes_with_value,
7277
it,
@@ -83,6 +88,7 @@ fun SectionBlock(
8388
) {
8489
section.heading?.let {
8590
KdText(
91+
modifier = Modifier,
8692
text = it,
8793
style = MaterialTheme.typography.headlineLarge,
8894
color = MaterialTheme.colorScheme.onPrimary,
@@ -92,6 +98,7 @@ fun SectionBlock(
9298

9399
section.content?.let {
94100
KdText(
101+
modifier = Modifier,
95102
text = it,
96103
style = MaterialTheme.typography.bodyMedium,
97104
)
@@ -101,6 +108,7 @@ fun SectionBlock(
101108
section.codeExamples.forEach { example ->
102109
example.description?.let {
103110
KdText(
111+
modifier = Modifier,
104112
text = it,
105113
fontWeight = FontWeight.Bold,
106114
style = MaterialTheme.typography.bodyMedium,
@@ -117,13 +125,15 @@ fun PitfallsSection(
117125
pitfalls: List<String>,
118126
) {
119127
KdText(
128+
modifier = Modifier,
120129
text = stringResource(resource = Res.string.pitfalls),
121130
style = MaterialTheme.typography.headlineLarge,
122131
color = MaterialTheme.colorScheme.onPrimary,
123132
)
124133
Spacer(Modifier.height(4.dp))
125134
pitfalls.forEach {
126135
KdText(
136+
modifier = Modifier,
127137
text = stringResource(
128138
Res.string.bullet_item,
129139
it,
@@ -139,13 +149,15 @@ fun RelatedTopicsSection(
139149
relatedTopics: List<String>,
140150
) {
141151
KdText(
152+
modifier = Modifier,
142153
text = stringResource(resource = Res.string.related_topics),
143154
style = MaterialTheme.typography.headlineLarge,
144155
color = MaterialTheme.colorScheme.onPrimary,
145156
)
146157
Spacer(Modifier.height(4.dp))
147158
relatedTopics.forEach {
148159
KdText(
160+
modifier = Modifier,
149161
text = stringResource(
150162
Res.string.bullet_item,
151163
it,

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/detail/DetailScreenUI.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ fun DetailScreenUI(
2525
navigateUp: () -> Unit,
2626
) {
2727
KdScaffold(
28+
modifier = Modifier,
2829
topBar = {
2930
DetailTopBar(
3031
title = detailUiState.topicName,
@@ -56,6 +57,7 @@ private fun DetailContent(
5657
) {
5758
item {
5859
KdText(
60+
modifier = Modifier,
5961
text = stringResource(Res.string.table_of_contents),
6062
style = MaterialTheme.typography.titleLarge,
6163
color = MaterialTheme.colorScheme.onPrimary,

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/detail/DetailTopAppBar.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import androidx.compose.material.icons.Icons
55
import androidx.compose.material.icons.automirrored.filled.ArrowBack
66
import androidx.compose.material3.ExperimentalMaterial3Api
77
import androidx.compose.material3.MaterialTheme
8-
import androidx.compose.material3.TopAppBar
98
import androidx.compose.material3.TopAppBarDefaults
109
import androidx.compose.runtime.Composable
1110
import androidx.compose.ui.Modifier
1211
import com.developersbreach.designsystem.components.KdIconButton
1312
import com.developersbreach.designsystem.components.KdText
13+
import com.developersbreach.designsystem.components.KdTopAppBar
1414
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
1515
import kotlindictionarymultiplatform.composeapp.generated.resources.back
1616
import org.jetbrains.compose.resources.stringResource
@@ -21,7 +21,7 @@ fun DetailTopBar(
2121
title: String,
2222
navigateUp: () -> Unit,
2323
) {
24-
TopAppBar(
24+
KdTopAppBar(
2525
title = {
2626
KdText(
2727
text = title,
@@ -32,6 +32,8 @@ fun DetailTopBar(
3232
},
3333
navigationIcon = {
3434
KdIconButton(
35+
modifier = Modifier,
36+
iconModifier = Modifier,
3537
onClick = navigateUp,
3638
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
3739
contentDescription = stringResource(Res.string.back),

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/topic/SearchField.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,12 @@ fun SearchField(
4343
maxLines = 1,
4444
overflow = TextOverflow.Ellipsis,
4545
color = MaterialTheme.colorScheme.onBackground,
46+
modifier = Modifier,
4647
)
4748
},
4849
leadingIcon = {
4950
KdIcon(
51+
modifier = Modifier,
5052
imageVector = Icons.Filled.Search,
5153
contentDescription = stringResource(Res.string.search),
5254
tint = MaterialTheme.colorScheme.onBackground,

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/topic/TopicCard.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ fun TopicCard(
6868
),
6969
contentAlignment = Alignment.Center,
7070
) {
71-
KdText(text = itemTopic.initial)
71+
KdText(
72+
modifier = Modifier,
73+
text = itemTopic.initial,
74+
)
7275
}
7376

7477
Spacer(modifier = Modifier.width(12.dp))
@@ -77,6 +80,7 @@ fun TopicCard(
7780
modifier = Modifier.weight(1f),
7881
) {
7982
KdText(
83+
modifier = Modifier,
8084
text = topic,
8185
style = MaterialTheme.typography.headlineMedium.copy(
8286
color = MaterialTheme.colorScheme.onPrimary,
@@ -86,6 +90,7 @@ fun TopicCard(
8690
)
8791
Spacer(modifier = Modifier.height(6.dp))
8892
KdText(
93+
modifier = Modifier,
8994
text = subtitle,
9095
style = MaterialTheme.typography.labelMedium.copy(
9196
color = MaterialTheme.colorScheme.onBackground,
@@ -96,6 +101,8 @@ fun TopicCard(
96101
}
97102

98103
KdIconButton(
104+
modifier = Modifier,
105+
iconModifier = Modifier,
99106
onClick = onBookmarkClick,
100107
imageVector = if (isBookmarked) {
101108
Icons.Outlined.BookmarkBorder

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/topic/TopicScreenUI.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ fun TopicScreenUI(
1919
onTopicClick: (String) -> Unit,
2020
) {
2121
KdScaffold(
22+
modifier = Modifier,
2223
topBar = { TopicTopBar() },
2324
content = { paddingValues ->
2425
Column(

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/screens/topic/TopicTopAppBar.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import androidx.compose.material.icons.Icons
55
import androidx.compose.material.icons.automirrored.filled.ArrowBack
66
import androidx.compose.material3.ExperimentalMaterial3Api
77
import androidx.compose.material3.MaterialTheme
8-
import androidx.compose.material3.TopAppBar
98
import androidx.compose.material3.TopAppBarDefaults
109
import androidx.compose.runtime.Composable
1110
import androidx.compose.ui.Modifier
1211
import androidx.compose.ui.text.style.TextAlign
1312
import com.developersbreach.designsystem.components.KdIconButton
1413
import com.developersbreach.designsystem.components.KdText
14+
import com.developersbreach.designsystem.components.KdTopAppBar
1515
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
1616
import kotlindictionarymultiplatform.composeapp.generated.resources.back
1717
import kotlindictionarymultiplatform.composeapp.generated.resources.topics
@@ -20,7 +20,7 @@ import org.jetbrains.compose.resources.stringResource
2020
@OptIn(ExperimentalMaterial3Api::class)
2121
@Composable
2222
fun TopicTopBar() {
23-
TopAppBar(
23+
KdTopAppBar(
2424
title = {
2525
KdText(
2626
text = stringResource(Res.string.topics),
@@ -31,6 +31,8 @@ fun TopicTopBar() {
3131
},
3232
navigationIcon = {
3333
KdIconButton(
34+
modifier = Modifier,
35+
iconModifier = Modifier,
3436
onClick = {},
3537
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
3638
contentDescription = stringResource(Res.string.back),

0 commit comments

Comments
 (0)