Skip to content

Commit

Permalink
explicit api
Browse files Browse the repository at this point in the history
  • Loading branch information
softartdev committed Feb 14, 2025
1 parent ed4b05d commit a3f442d
Show file tree
Hide file tree
Showing 21 changed files with 109 additions and 102 deletions.
1 change: 1 addition & 0 deletions theme/theme-material/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ kotlin {
implementation(kotlin("test"))
}
}
explicitApi()
}
android {
compileSdk = rootProject.extra["android_compile_sdk_version"] as Int
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ import com.softartdev.theme.pref.ThemeEnum
import com.softartdev.theme.pref.ThemePrefs
import com.softartdev.theme.pref.rememberPreferenceHelper

class MaterialThemePrefs(
public class MaterialThemePrefs(
preferenceHelper: PreferenceHelper,
val darkColorPalette: Colors = darkColors(),
val lightColorPalette: Colors = lightColors()
private val darkColorPalette: Colors = darkColors(),
private val lightColorPalette: Colors = lightColors()
) : ThemePrefs(preferenceHelper) {

val colors: Colors
public val colors: Colors
@Composable
@ReadOnlyComposable
get() = when (darkThemeState.value) {
Expand All @@ -28,7 +28,7 @@ class MaterialThemePrefs(
}
}

val ThemePrefs.colors: Colors
public val ThemePrefs.colors: Colors
@Composable
@ReadOnlyComposable
get() {
Expand All @@ -37,17 +37,17 @@ val ThemePrefs.colors: Colors
}

@Composable
fun rememberThemePrefs(): MaterialThemePrefs {
public fun rememberThemePrefs(): MaterialThemePrefs {
val preferenceHelper = rememberPreferenceHelper()
return remember { MaterialThemePrefs(preferenceHelper) }
}

@Composable
fun rememberThemePrefs(
public fun rememberThemePrefs(
preferHelper: PreferenceHelper = rememberPreferenceHelper(),
darkColorPalette: Colors = darkColors(),
lightColorPalette: Colors = lightColors()
) = remember(
): MaterialThemePrefs = remember(
key1 = preferHelper,
key2 = darkColorPalette,
key3 = lightColorPalette
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,24 @@ import io.github.softartdev.theme_prefs.generated.resources.theme
import org.jetbrains.compose.resources.stringResource

@Composable
fun ThemePreferencesCategory() = PreferenceCategory(
public fun ThemePreferencesCategory(): Unit = PreferenceCategory(
title = stringResource(Res.string.theme),
vector = Icons.Filled.Brightness4
)

@Composable
fun ThemePreferenceItem(
public fun ThemePreferenceItem(
themePrefs: ThemePrefs = LocalThemePrefs.current,
onClick: () -> Unit = {}
) = PreferenceItem(
): Unit = PreferenceItem(
title = stringResource(Res.string.choose_theme),
vector = Icons.Filled.SettingsBrightness,
secondaryText = { Text(text = stringResource(themePrefs.darkThemeState.value.stringRes)) },
onClick = onClick
)

@Composable
fun PreferenceCategory(title: String, vector: ImageVector) = ListItem(
public fun PreferenceCategory(title: String, vector: ImageVector): Unit = ListItem(
icon = { Icon(imageVector = vector, contentDescription = title) },
text = {
Text(text = title,
Expand All @@ -49,13 +49,13 @@ fun PreferenceCategory(title: String, vector: ImageVector) = ListItem(
)

@Composable
fun PreferenceItem(
public fun PreferenceItem(
title: String,
vector: ImageVector,
onClick: () -> Unit = {},
secondaryText: @Composable (() -> Unit)? = null,
trailing: @Composable (() -> Unit)? = null,
) = ListItem(
): Unit = ListItem(
modifier = Modifier.clickable(onClick = onClick),
icon = { Icon(imageVector = vector, contentDescription = title) },
text = { Text(text = title) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import androidx.compose.runtime.CompositionLocalProvider
import com.softartdev.theme.pref.*

@Composable
fun PreferableMaterialTheme(
public fun PreferableMaterialTheme(
preferHelper: PreferenceHelper = rememberPreferenceHelper(),
darkColorPalette: Colors = darkColors(),
lightColorPalette: Colors = lightColors(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,31 @@ import com.softartdev.theme.pref.ThemeEnum
import org.jetbrains.compose.resources.stringResource

@Composable
fun RadioDialogContent(darkThemeState: MutableState<ThemeEnum>) = Column(Modifier.selectableGroup()) {
ThemeEnum.entries.forEach { themeEnum: ThemeEnum ->
Row(
Modifier
.fillMaxWidth()
.height(56.dp)
.selectable(
public fun RadioDialogContent(darkThemeState: MutableState<ThemeEnum>) {
Column(modifier = Modifier.selectableGroup()) {
ThemeEnum.entries.forEach { themeEnum: ThemeEnum ->
Row(
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
.selectable(
selected = themeEnum == darkThemeState.value,
onClick = { darkThemeState.value = themeEnum },
role = Role.RadioButton
)
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = themeEnum == darkThemeState.value,
onClick = { darkThemeState.value = themeEnum },
role = Role.RadioButton
onClick = null // null recommended for accessibility with screenreaders
)
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = themeEnum == darkThemeState.value,
onClick = null // null recommended for accessibility with screenreaders
)
Text(
text = stringResource(themeEnum.stringRes),
style = MaterialTheme.typography.body1.merge(),
modifier = Modifier.padding(start = 16.dp)
)
Text(
text = stringResource(themeEnum.stringRes),
style = MaterialTheme.typography.body1.merge(),
modifier = Modifier.padding(start = 16.dp)
)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,22 @@ import io.github.softartdev.theme_prefs.generated.resources.settings
import org.jetbrains.compose.resources.stringResource

@Composable
fun SettingsScaffold(
public fun SettingsScaffold(
onBackClick: () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {},
content: @Composable (PaddingValues) -> Unit
) = Scaffold(
): Unit = Scaffold(
topBar = { SettingsTopAppBar(onBackClick, actions) },
content = content
)

@Composable
fun SettingsTopAppBar(
public fun SettingsTopAppBar(
onBackClick: () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {},
localizedText: String = stringResource(Res.string.settings),
backVector: ImageVector = Icons.AutoMirrored.Filled.ArrowBack,
) = TopAppBar(
): Unit = TopAppBar(
title = { Text(localizedText) },
navigationIcon = {
IconButton(onClick = onBackClick) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import io.github.softartdev.theme_prefs.generated.resources.ok
import org.jetbrains.compose.resources.stringResource

@Composable
fun ThemeDialog(
public fun ThemeDialog(
darkThemeState: MutableState<ThemeEnum> = mutableStateOf(ThemeEnum.SystemDefault),
writePref: (ThemeEnum) -> Unit = {},
dismissDialog: () -> Unit = {}
Expand Down
1 change: 1 addition & 0 deletions theme/theme-material3/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ kotlin {
implementation(kotlin("test"))
}
}
explicitApi()
}
android {
compileSdk = rootProject.extra["android_compile_sdk_version"] as Int
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.runtime.remember
import com.softartdev.theme.pref.*

class Material3ThemePrefs(
public class Material3ThemePrefs(
preferenceHelper: PreferenceHelper,
val darkColorScheme: ColorScheme = darkColorScheme(),
val lightColorScheme: ColorScheme = lightColorScheme()
private val darkColorScheme: ColorScheme = darkColorScheme(),
private val lightColorScheme: ColorScheme = lightColorScheme()
) : ThemePrefs(preferenceHelper) {

val colorScheme: ColorScheme
public val colorScheme: ColorScheme
@Composable
@ReadOnlyComposable
get() = when (darkThemeState.value) {
Expand All @@ -25,7 +25,7 @@ class Material3ThemePrefs(
}
}

val ThemePrefs.colorScheme: ColorScheme
public val ThemePrefs.colorScheme: ColorScheme
@Composable
@ReadOnlyComposable
get() {
Expand All @@ -34,17 +34,17 @@ val ThemePrefs.colorScheme: ColorScheme
}

@Composable
fun rememberThemePrefs(): Material3ThemePrefs {
public fun rememberThemePrefs(): Material3ThemePrefs {
val preferenceHelper = rememberPreferenceHelper()
return remember { Material3ThemePrefs(preferenceHelper) }
}

@Composable
fun rememberThemePrefs(
public fun rememberThemePrefs(
preferHelper: PreferenceHelper = rememberPreferenceHelper(),
darkColorScheme: ColorScheme = darkColorScheme(),
lightColorScheme: ColorScheme = lightColorScheme()
) = remember(
): Material3ThemePrefs = remember(
key1 = preferHelper,
key2 = darkColorScheme,
key3 = lightColorScheme
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,24 @@ import io.github.softartdev.theme_prefs.generated.resources.theme
import org.jetbrains.compose.resources.stringResource

@Composable
fun ThemePreferencesCategory() = PreferenceCategory(
public fun ThemePreferencesCategory(): Unit = PreferenceCategory(
title = stringResource(Res.string.theme),
vector = Icons.Filled.Brightness4
)

@Composable
fun ThemePreferenceItem(
public fun ThemePreferenceItem(
themePrefs: ThemePrefs = LocalThemePrefs.current,
onClick: () -> Unit = {}
) = PreferenceItem(
): Unit = PreferenceItem(
title = stringResource(Res.string.choose_theme),
vector = Icons.Filled.SettingsBrightness,
secondaryText = { Text(text = stringResource(themePrefs.darkThemeState.value.stringRes)) },
onClick = onClick
)

@Composable
fun PreferenceCategory(title: String, vector: ImageVector) = ListItem(
public fun PreferenceCategory(title: String, vector: ImageVector): Unit = ListItem(
leadingContent = { Icon(imageVector = vector, contentDescription = title) },
headlineContent = {
Text(text = title,
Expand All @@ -46,13 +46,13 @@ fun PreferenceCategory(title: String, vector: ImageVector) = ListItem(
)

@Composable
fun PreferenceItem(
public fun PreferenceItem(
title: String,
vector: ImageVector,
onClick: () -> Unit = {},
secondaryText: @Composable (() -> Unit)? = null,
trailing: @Composable (() -> Unit)? = null,
) = ListItem(
): Unit = ListItem(
modifier = Modifier.clickable(onClick = onClick),
leadingContent = { Icon(imageVector = vector, contentDescription = title) },
headlineContent = { Text(text = title) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import androidx.compose.runtime.CompositionLocalProvider
import com.softartdev.theme.pref.*

@Composable
fun PreferableMaterialTheme(
public fun PreferableMaterialTheme(
preferHelper: PreferenceHelper = rememberPreferenceHelper(),
darkColorScheme: ColorScheme = darkColorScheme(),
lightColorScheme: ColorScheme = lightColorScheme(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,31 @@ import com.softartdev.theme.pref.ThemeEnum
import org.jetbrains.compose.resources.stringResource

@Composable
fun RadioDialogContent(darkThemeState: MutableState<ThemeEnum>) = Column(Modifier.selectableGroup()) {
ThemeEnum.entries.forEach { themeEnum: ThemeEnum ->
Row(
Modifier
.fillMaxWidth()
.height(56.dp)
.selectable(
public fun RadioDialogContent(darkThemeState: MutableState<ThemeEnum>) {
Column(modifier = Modifier.selectableGroup()) {
ThemeEnum.entries.forEach { themeEnum: ThemeEnum ->
Row(
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
.selectable(
selected = themeEnum == darkThemeState.value,
onClick = { darkThemeState.value = themeEnum },
role = Role.RadioButton
)
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = themeEnum == darkThemeState.value,
onClick = { darkThemeState.value = themeEnum },
role = Role.RadioButton
onClick = null // null recommended for accessibility with screenreaders
)
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
RadioButton(
selected = themeEnum == darkThemeState.value,
onClick = null // null recommended for accessibility with screenreaders
)
Text(
text = stringResource(themeEnum.stringRes),
style = MaterialTheme.typography.bodyLarge.merge(),
modifier = Modifier.padding(start = 16.dp)
)
Text(
text = stringResource(themeEnum.stringRes),
style = MaterialTheme.typography.bodyLarge.merge(),
modifier = Modifier.padding(start = 16.dp)
)
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,22 @@ import io.github.softartdev.theme_prefs.generated.resources.settings
import org.jetbrains.compose.resources.stringResource

@Composable
fun SettingsScaffold(
public fun SettingsScaffold(
onBackClick: () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {},
content: @Composable (PaddingValues) -> Unit
) = Scaffold(
): Unit = Scaffold(
topBar = { SettingsTopAppBar(onBackClick, actions) },
content = content
)

@Composable
fun SettingsTopAppBar(
public fun SettingsTopAppBar(
onBackClick: () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {},
localizedText: String = stringResource(Res.string.settings),
backVector: ImageVector = Icons.AutoMirrored.Filled.ArrowBack,
) = TopAppBar(
): Unit = TopAppBar(
title = { Text(localizedText) },
navigationIcon = {
IconButton(onClick = onBackClick) {
Expand Down
Loading

0 comments on commit a3f442d

Please sign in to comment.