Skip to content

Commit f844359

Browse files
committed
- Introduce KdText composable, a wrapper around material3.Text.
- Replace direct usages of `material3.Text` with `KdText`. - Rename design system components from `Ca` prefix to `Kd` (e.g., `CaScaffold` to `KdScaffold`). - Add a test to prevent direct usage of `androidx.compose.material3.Text` outside the design system.
1 parent b221871 commit f844359

File tree

16 files changed

+110
-58
lines changed

16 files changed

+110
-58
lines changed

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

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

33
import androidx.compose.material3.AlertDialog
4-
import androidx.compose.material3.Text
54
import androidx.compose.material3.TextButton
65
import androidx.compose.runtime.Composable
76
import androidx.compose.ui.Modifier
7+
import com.developersbreach.designsystem.components.KdText
88
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
99
import kotlindictionarymultiplatform.composeapp.generated.resources.ok
1010
import org.jetbrains.compose.resources.stringResource
@@ -18,11 +18,11 @@ fun ShowAlertDialog(
1818
) {
1919
AlertDialog(
2020
onDismissRequest = onButtonClick,
21-
title = { Text(text = title) },
22-
text = { Text(text = description) },
21+
title = { KdText(text = title) },
22+
text = { KdText(text = description) },
2323
confirmButton = {
2424
TextButton(onClick = onButtonClick) {
25-
Text(text = stringResource(Res.string.ok))
25+
KdText(text = stringResource(Res.string.ok))
2626
}
2727
},
2828
modifier = modifier,

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import androidx.compose.material.icons.Icons
1717
import androidx.compose.material.icons.filled.Check
1818
import androidx.compose.material.icons.filled.ContentCopy
1919
import androidx.compose.material3.MaterialTheme
20-
import androidx.compose.material3.Text
2120
import androidx.compose.runtime.Composable
2221
import androidx.compose.runtime.getValue
2322
import androidx.compose.runtime.mutableStateOf
@@ -31,7 +30,8 @@ import androidx.compose.ui.text.font.FontFamily
3130
import androidx.compose.ui.text.font.FontWeight
3231
import androidx.compose.ui.unit.dp
3332
import androidx.compose.ui.unit.sp
34-
import com.developersbreach.designsystem.components.CaIcon
33+
import com.developersbreach.designsystem.components.KdIcon
34+
import com.developersbreach.designsystem.components.KdText
3535
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
3636
import kotlindictionarymultiplatform.composeapp.generated.resources.copied
3737
import kotlindictionarymultiplatform.composeapp.generated.resources.copy
@@ -78,7 +78,7 @@ fun CodeExampleBox(
7878
horizontalArrangement = Arrangement.SpaceBetween,
7979
verticalAlignment = Alignment.CenterVertically,
8080
) {
81-
Text(
81+
KdText(
8282
text = stringResource(Res.string.kotlin),
8383
color = MaterialTheme.colorScheme.onPrimary,
8484
fontWeight = FontWeight.Bold,
@@ -99,13 +99,13 @@ fun CodeExampleBox(
9999
}
100100
.padding(4.dp),
101101
) {
102-
CaIcon(
102+
KdIcon(
103103
imageVector = if (copied) Icons.Default.Check else Icons.Default.ContentCopy,
104104
contentDescription = stringResource(Res.string.copy),
105105
tint = MaterialTheme.colorScheme.onPrimary,
106106
)
107107
Spacer(modifier = Modifier.width(4.dp))
108-
Text(
108+
KdText(
109109
text = if (copied) stringResource(Res.string.copied) else stringResource(Res.string.copy),
110110
fontSize = 12.sp,
111111
color = MaterialTheme.colorScheme.onPrimary,
@@ -116,7 +116,7 @@ fun CodeExampleBox(
116116

117117
Spacer(modifier = Modifier.height(8.dp))
118118

119-
Text(
119+
KdText(
120120
text = code,
121121
modifier = Modifier.padding(
122122
start = 12.dp,

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import androidx.compose.foundation.clickable
44
import androidx.compose.foundation.layout.Spacer
55
import androidx.compose.foundation.layout.height
66
import androidx.compose.material3.MaterialTheme
7-
import androidx.compose.material3.Text
87
import androidx.compose.runtime.Composable
98
import androidx.compose.ui.Modifier
109
import androidx.compose.ui.text.font.FontWeight
1110
import androidx.compose.ui.unit.dp
11+
import com.developersbreach.designsystem.components.KdText
1212
import com.developersbreach.kotlindictionarymultiplatform.data.detail.model.Section
1313
import com.developersbreach.kotlindictionarymultiplatform.data.detail.model.Syntax
1414
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
@@ -25,7 +25,7 @@ fun TableOfContents(
2525
item: String,
2626
onClick: () -> Unit,
2727
) {
28-
Text(
28+
KdText(
2929
text = item,
3030
modifier = Modifier.clickable { onClick() },
3131
color = MaterialTheme.colorScheme.onSurface,
@@ -37,13 +37,13 @@ fun TableOfContents(
3737
fun IntroductionSection(
3838
intro: String,
3939
) {
40-
Text(
40+
KdText(
4141
text = stringResource(resource = Res.string.introduction),
4242
style = MaterialTheme.typography.headlineLarge,
4343
color = MaterialTheme.colorScheme.onPrimary,
4444
)
4545
Spacer(Modifier.height(4.dp))
46-
Text(
46+
KdText(
4747
text = intro,
4848
style = MaterialTheme.typography.bodyMedium,
4949
)
@@ -54,19 +54,19 @@ fun IntroductionSection(
5454
fun SyntaxSection(
5555
syntax: Syntax,
5656
) {
57-
Text(
57+
KdText(
5858
text = stringResource(resource = Res.string.syntax),
5959
style = MaterialTheme.typography.headlineLarge,
6060
color = MaterialTheme.colorScheme.onPrimary,
6161
)
6262
Spacer(Modifier.height(4.dp))
63-
Text(
63+
KdText(
6464
text = syntax.signature,
6565
style = MaterialTheme.typography.bodyMedium,
6666
)
6767
syntax.notes?.let {
6868
Spacer(Modifier.height(4.dp))
69-
Text(
69+
KdText(
7070
text = stringResource(
7171
Res.string.notes_with_value,
7272
it,
@@ -82,7 +82,7 @@ fun SectionBlock(
8282
section: Section,
8383
) {
8484
section.heading?.let {
85-
Text(
85+
KdText(
8686
text = it,
8787
style = MaterialTheme.typography.headlineLarge,
8888
color = MaterialTheme.colorScheme.onPrimary,
@@ -91,7 +91,7 @@ fun SectionBlock(
9191
}
9292

9393
section.content?.let {
94-
Text(
94+
KdText(
9595
text = it,
9696
style = MaterialTheme.typography.bodyMedium,
9797
)
@@ -100,7 +100,7 @@ fun SectionBlock(
100100

101101
section.codeExamples.forEach { example ->
102102
example.description?.let {
103-
Text(
103+
KdText(
104104
text = it,
105105
fontWeight = FontWeight.Bold,
106106
style = MaterialTheme.typography.bodyMedium,
@@ -116,14 +116,14 @@ fun SectionBlock(
116116
fun PitfallsSection(
117117
pitfalls: List<String>,
118118
) {
119-
Text(
119+
KdText(
120120
text = stringResource(resource = Res.string.pitfalls),
121121
style = MaterialTheme.typography.headlineLarge,
122122
color = MaterialTheme.colorScheme.onPrimary,
123123
)
124124
Spacer(Modifier.height(4.dp))
125125
pitfalls.forEach {
126-
Text(
126+
KdText(
127127
text = stringResource(
128128
Res.string.bullet_item,
129129
it,
@@ -138,14 +138,14 @@ fun PitfallsSection(
138138
fun RelatedTopicsSection(
139139
relatedTopics: List<String>,
140140
) {
141-
Text(
141+
KdText(
142142
text = stringResource(resource = Res.string.related_topics),
143143
style = MaterialTheme.typography.headlineLarge,
144144
color = MaterialTheme.colorScheme.onPrimary,
145145
)
146146
Spacer(Modifier.height(4.dp))
147147
relatedTopics.forEach {
148-
Text(
148+
KdText(
149149
text = stringResource(
150150
Res.string.bullet_item,
151151
it,

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import androidx.compose.foundation.lazy.LazyColumn
88
import androidx.compose.foundation.lazy.items
99
import androidx.compose.foundation.lazy.rememberLazyListState
1010
import androidx.compose.material3.MaterialTheme
11-
import androidx.compose.material3.Text
1211
import androidx.compose.runtime.Composable
1312
import androidx.compose.runtime.rememberCoroutineScope
1413
import androidx.compose.ui.Modifier
1514
import androidx.compose.ui.unit.dp
16-
import com.developersbreach.designsystem.components.CaScaffold
15+
import com.developersbreach.designsystem.components.KdScaffold
16+
import com.developersbreach.designsystem.components.KdText
1717
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
1818
import kotlindictionarymultiplatform.composeapp.generated.resources.table_of_contents
1919
import kotlinx.coroutines.launch
@@ -24,7 +24,7 @@ fun DetailScreenUI(
2424
detailUiState: DetailUiState,
2525
navigateUp: () -> Unit,
2626
) {
27-
CaScaffold(
27+
KdScaffold(
2828
topBar = {
2929
DetailTopBar(
3030
title = detailUiState.topicName,
@@ -55,7 +55,7 @@ private fun DetailContent(
5555
.padding(horizontal = 16.dp),
5656
) {
5757
item {
58-
Text(
58+
KdText(
5959
text = stringResource(Res.string.table_of_contents),
6060
style = MaterialTheme.typography.titleLarge,
6161
color = MaterialTheme.colorScheme.onPrimary,

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

Lines changed: 4 additions & 4 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.Text
98
import androidx.compose.material3.TopAppBar
109
import androidx.compose.material3.TopAppBarDefaults
1110
import androidx.compose.runtime.Composable
1211
import androidx.compose.ui.Modifier
13-
import com.developersbreach.designsystem.components.CaIconButton
12+
import com.developersbreach.designsystem.components.KdIconButton
13+
import com.developersbreach.designsystem.components.KdText
1414
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
1515
import kotlindictionarymultiplatform.composeapp.generated.resources.back
1616
import org.jetbrains.compose.resources.stringResource
@@ -23,15 +23,15 @@ fun DetailTopBar(
2323
) {
2424
TopAppBar(
2525
title = {
26-
Text(
26+
KdText(
2727
text = title,
2828
style = MaterialTheme.typography.displayMedium,
2929
color = MaterialTheme.colorScheme.onPrimary,
3030
modifier = Modifier.fillMaxWidth(),
3131
)
3232
},
3333
navigationIcon = {
34-
CaIconButton(
34+
KdIconButton(
3535
onClick = navigateUp,
3636
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
3737
contentDescription = stringResource(Res.string.back),

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import androidx.compose.foundation.text.KeyboardOptions
88
import androidx.compose.material.icons.Icons
99
import androidx.compose.material.icons.filled.Search
1010
import androidx.compose.material3.MaterialTheme
11-
import androidx.compose.material3.Text
1211
import androidx.compose.material3.TextFieldDefaults
1312
import androidx.compose.runtime.Composable
1413
import androidx.compose.ui.Modifier
@@ -18,8 +17,9 @@ import androidx.compose.ui.text.input.ImeAction
1817
import androidx.compose.ui.text.style.TextOverflow
1918
import androidx.compose.ui.unit.dp
2019
import androidx.compose.ui.unit.sp
21-
import com.developersbreach.designsystem.components.CaIcon
22-
import com.developersbreach.designsystem.components.CaTextField
20+
import com.developersbreach.designsystem.components.KdIcon
21+
import com.developersbreach.designsystem.components.KdText
22+
import com.developersbreach.designsystem.components.KdTextField
2323
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
2424
import kotlindictionarymultiplatform.composeapp.generated.resources.search
2525
import kotlindictionarymultiplatform.composeapp.generated.resources.search_kotlin_terms
@@ -30,23 +30,23 @@ fun SearchField(
3030
searchQuery: String,
3131
onQueryChange: (String) -> Unit,
3232
) {
33-
CaTextField(
33+
KdTextField(
3434
value = searchQuery,
3535
onValueChange = onQueryChange,
3636
modifier = Modifier
3737
.fillMaxWidth()
3838
.clip(RoundedCornerShape(25.dp))
3939
.padding(4.dp),
4040
placeholder = {
41-
Text(
41+
KdText(
4242
stringResource(Res.string.search_kotlin_terms),
4343
maxLines = 1,
4444
overflow = TextOverflow.Ellipsis,
4545
color = MaterialTheme.colorScheme.onBackground,
4646
)
4747
},
4848
leadingIcon = {
49-
CaIcon(
49+
KdIcon(
5050
imageVector = Icons.Filled.Search,
5151
contentDescription = stringResource(Res.string.search),
5252
tint = MaterialTheme.colorScheme.onBackground,

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ import androidx.compose.material.icons.Icons
1717
import androidx.compose.material.icons.filled.Bookmark
1818
import androidx.compose.material.icons.outlined.BookmarkBorder
1919
import androidx.compose.material3.MaterialTheme
20-
import androidx.compose.material3.Text
2120
import androidx.compose.runtime.Composable
2221
import androidx.compose.ui.Alignment
2322
import androidx.compose.ui.Modifier
2423
import androidx.compose.ui.draw.shadow
2524
import androidx.compose.ui.text.style.TextOverflow
2625
import androidx.compose.ui.unit.dp
27-
import com.developersbreach.designsystem.components.CaIconButton
28-
import com.developersbreach.designsystem.components.CaSurface
26+
import com.developersbreach.designsystem.components.KdIconButton
27+
import com.developersbreach.designsystem.components.KdSurface
28+
import com.developersbreach.designsystem.components.KdText
2929
import kotlindictionarymultiplatform.composeapp.generated.resources.Res
3030
import kotlindictionarymultiplatform.composeapp.generated.resources.add_bookmark
3131
import kotlindictionarymultiplatform.composeapp.generated.resources.remove_bookmark
@@ -40,7 +40,7 @@ fun TopicCard(
4040
onBookmarkClick: () -> Unit,
4141
onCardClick: () -> Unit,
4242
) {
43-
CaSurface(
43+
KdSurface(
4444
modifier = Modifier
4545
.fillMaxWidth()
4646
.padding(8.dp)
@@ -68,15 +68,15 @@ fun TopicCard(
6868
),
6969
contentAlignment = Alignment.Center,
7070
) {
71-
Text(text = itemTopic.initial)
71+
KdText(text = itemTopic.initial)
7272
}
7373

7474
Spacer(modifier = Modifier.width(12.dp))
7575

7676
Column(
7777
modifier = Modifier.weight(1f),
7878
) {
79-
Text(
79+
KdText(
8080
text = topic,
8181
style = MaterialTheme.typography.headlineMedium.copy(
8282
color = MaterialTheme.colorScheme.onPrimary,
@@ -85,7 +85,7 @@ fun TopicCard(
8585
overflow = TextOverflow.Ellipsis,
8686
)
8787
Spacer(modifier = Modifier.height(6.dp))
88-
Text(
88+
KdText(
8989
text = subtitle,
9090
style = MaterialTheme.typography.labelMedium.copy(
9191
color = MaterialTheme.colorScheme.onBackground,
@@ -95,7 +95,7 @@ fun TopicCard(
9595
)
9696
}
9797

98-
CaIconButton(
98+
KdIconButton(
9999
onClick = onBookmarkClick,
100100
imageVector = if (isBookmarked) {
101101
Icons.Outlined.BookmarkBorder

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import androidx.compose.foundation.layout.padding
77
import androidx.compose.runtime.Composable
88
import androidx.compose.ui.Modifier
99
import androidx.compose.ui.unit.dp
10-
import com.developersbreach.designsystem.components.CaScaffold
10+
import com.developersbreach.designsystem.components.KdScaffold
1111

1212
@Composable
1313
fun TopicScreenUI(
@@ -18,7 +18,7 @@ fun TopicScreenUI(
1818
onBookmarkClick: (Int) -> Unit,
1919
onTopicClick: (String) -> Unit,
2020
) {
21-
CaScaffold(
21+
KdScaffold(
2222
topBar = { TopicTopBar() },
2323
content = { paddingValues ->
2424
Column(

0 commit comments

Comments
 (0)