~repos /only-bible-app

#kotlin#android#ios

git clone https://pyrossh.dev/repos/only-bible-app.git

The only bible app you will ever need. No ads. No in-app purchases. No distractions.


da3fb7a4 Peter John

1 year ago
improve app
app/src/main/java/dev/pyrossh/onlyBible/{State.kt → AppSettings.kt} RENAMED
@@ -1,14 +1,15 @@
1
1
  package dev.pyrossh.onlyBible
2
2
 
3
- import FontType
4
3
  import android.content.SharedPreferences
4
+ import androidx.compose.foundation.isSystemInDarkTheme
5
+ import androidx.compose.runtime.Composable
6
+ import androidx.compose.runtime.ReadOnlyComposable
5
7
  import androidx.compose.runtime.getValue
6
8
  import androidx.compose.runtime.mutableIntStateOf
7
9
  import androidx.compose.runtime.mutableStateOf
8
10
  import androidx.compose.runtime.setValue
9
11
  import androidx.compose.runtime.staticCompositionLocalOf
10
12
  import androidx.lifecycle.ViewModel
11
- import dev.pyrossh.onlyBible.ui.theme.ThemeType
12
13
  import java.util.Locale
13
14
 
14
15
  val LocalState = staticCompositionLocalOf<State?> { null }
@@ -100,4 +101,10 @@ class State(p: SharedPreferences, val bibles: List<String>, val reload: () -> Un
100
101
  editor.putString("fontType", v.name)
101
102
  editor.apply()
102
103
  }
104
+ }
105
+
106
+ @Composable
107
+ @ReadOnlyComposable
108
+ fun isDarkMode(): Boolean {
109
+ return LocalState.current!!.themeType == ThemeType.Dark || (LocalState.current!!.themeType == ThemeType.Auto && isSystemInDarkTheme())
103
110
  }
app/src/main/java/dev/pyrossh/onlyBible/{ui/theme/Theme.kt → AppTheme.kt} RENAMED
@@ -1,10 +1,12 @@
1
- package dev.pyrossh.onlyBible.ui.theme
1
+ package dev.pyrossh.onlyBible
2
2
 
3
3
  import androidx.compose.foundation.background
4
4
  import androidx.compose.foundation.isSystemInDarkTheme
5
5
  import androidx.compose.foundation.layout.Arrangement
6
6
  import androidx.compose.foundation.layout.Column
7
7
  import androidx.compose.foundation.layout.padding
8
+ import androidx.compose.foundation.layout.width
9
+ import androidx.compose.material3.Icon
8
10
  import androidx.compose.material3.MaterialTheme
9
11
  import androidx.compose.material3.Text
10
12
  import androidx.compose.material3.dynamicDarkColorScheme
@@ -16,13 +18,26 @@ import androidx.compose.ui.graphics.Color
16
18
  import androidx.compose.ui.platform.LocalContext
17
19
  import androidx.compose.ui.res.painterResource
18
20
  import androidx.compose.ui.text.TextStyle
21
+ import androidx.compose.ui.text.font.FontFamily
19
22
  import androidx.compose.ui.text.font.FontWeight
23
+ import androidx.compose.ui.text.font.GenericFontFamily
20
24
  import androidx.compose.ui.unit.dp
21
25
  import androidx.compose.ui.unit.sp
22
26
  import com.google.accompanist.systemuicontroller.rememberSystemUiController
23
- import dev.pyrossh.onlyBible.LocalState
24
- import dev.pyrossh.onlyBible.R
25
27
 
28
+ enum class FontType {
29
+ Sans,
30
+ Serif,
31
+ Mono;
32
+
33
+ fun family(): GenericFontFamily {
34
+ return when (this) {
35
+ Sans -> FontFamily.SansSerif
36
+ Serif -> FontFamily.Serif
37
+ Mono -> FontFamily.Monospace
38
+ }
39
+ }
40
+ }
26
41
 
27
42
  enum class ThemeType {
28
43
  Light,
@@ -32,7 +47,7 @@ enum class ThemeType {
32
47
  private fun background(isDark: Boolean): Color {
33
48
  return when {
34
49
  this == Light || (this == Auto && !isDark) -> Color.White
35
- else -> Color(0xFF2c2e30)
50
+ else -> if (isDark) Color.Unspecified else Color(0xFF3E4042)
36
51
  }
37
52
  }
38
53
 
@@ -44,16 +59,28 @@ enum class ThemeType {
44
59
  }
45
60
 
46
61
  @Composable
47
- fun Icon() {
62
+ fun ThemeIcon(currentTheme: ThemeType) {
48
63
  val name = this.name;
49
64
  val darkTheme = isSystemInDarkTheme()
50
65
  when (this) {
51
- Light, Dark -> androidx.compose.material3.Icon(
66
+ Light -> Icon(
52
67
  painter = painterResource(id = R.drawable.text_theme),
53
68
  contentDescription = "Light",
54
69
  tint = this.tint(darkTheme),
55
70
  modifier = Modifier
71
+ .background(Color.White)
72
+ .padding(4.dp)
73
+ )
74
+
75
+ Dark -> Icon(
76
+ painter = painterResource(id = R.drawable.text_theme),
77
+ contentDescription = "Dark",
56
- .background(this.background(darkTheme))
78
+ tint = this.tint(darkTheme),
79
+ modifier = Modifier
80
+ .background(
81
+ if (darkTheme && currentTheme == Dark) MaterialTheme.colorScheme.background
82
+ else Color(0xFF3E4042)
83
+ )
57
84
  .padding(4.dp)
58
85
  )
59
86
 
@@ -84,17 +111,25 @@ fun AppTheme(
84
111
  val state = LocalState.current!!
85
112
  val darkTheme = isSystemInDarkTheme()
86
113
  val systemUiController = rememberSystemUiController()
87
- val colorScheme = when (state.themeType) {
114
+ val colorScheme = when {
115
+ state.themeType == ThemeType.Light || (state.themeType == ThemeType.Auto && !darkTheme) ->
88
- ThemeType.Light -> dynamicLightColorScheme(context)
116
+ dynamicLightColorScheme(context).copy(
117
+ outline = Color.LightGray,
118
+
119
+ )
120
+
121
+ else ->
89
- ThemeType.Dark -> dynamicDarkColorScheme(context)
122
+ dynamicDarkColorScheme(context).copy(
90
- ThemeType.Auto -> if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
123
+ background = Color(0xFF090F12),
124
+ surface = Color(0xFF090F12),
125
+ outline = Color(0xAA5D4979),
126
+ )
91
127
  }
92
128
  systemUiController.setSystemBarsColor(
93
129
  color = colorScheme.background
94
130
  )
95
131
  MaterialTheme(
96
132
  colorScheme = colorScheme,
97
- typography = AppTypography,
98
133
  content = content
99
134
  )
100
135
  }
app/src/main/java/dev/pyrossh/onlyBible/ChapterScreen.kt CHANGED
@@ -11,16 +11,17 @@ import android.text.style.StyleSpan
11
11
  import androidx.compose.animation.AnimatedContentTransitionScope
12
12
  import androidx.compose.foundation.clickable
13
13
  import androidx.compose.foundation.gestures.detectHorizontalDragGestures
14
+ import androidx.compose.foundation.interaction.MutableInteractionSource
14
15
  import androidx.compose.foundation.layout.Arrangement
15
- import androidx.compose.foundation.layout.Box
16
16
  import androidx.compose.foundation.layout.Row
17
17
  import androidx.compose.foundation.layout.fillMaxSize
18
+ import androidx.compose.foundation.layout.fillMaxWidth
19
+ import androidx.compose.foundation.layout.height
18
20
  import androidx.compose.foundation.layout.padding
19
- import androidx.compose.foundation.layout.wrapContentSize
20
21
  import androidx.compose.foundation.lazy.LazyColumn
21
22
  import androidx.compose.foundation.lazy.items
22
23
  import androidx.compose.material.icons.Icons
23
- import androidx.compose.material.icons.filled.FaceRetouchingNatural
24
+ import androidx.compose.material.icons.outlined.FaceRetouchingNatural
24
25
  import androidx.compose.material.icons.outlined.MoreVert
25
26
  import androidx.compose.material.icons.outlined.Share
26
27
  import androidx.compose.material3.ExperimentalMaterial3Api
@@ -28,8 +29,8 @@ import androidx.compose.material3.Icon
28
29
  import androidx.compose.material3.IconButton
29
30
  import androidx.compose.material3.MaterialTheme
30
31
  import androidx.compose.material3.Scaffold
31
- import androidx.compose.material3.Surface
32
32
  import androidx.compose.material3.Text
33
+ import androidx.compose.material3.TextButton
33
34
  import androidx.compose.material3.TopAppBar
34
35
  import androidx.compose.runtime.Composable
35
36
  import androidx.compose.runtime.getValue
@@ -94,6 +95,7 @@ fun ChapterScreen(
94
95
  ) {
95
96
  val context = LocalContext.current
96
97
  val state = LocalState.current!!
98
+ val darkTheme = isDarkMode()
97
99
  val fontFamily = state.fontType.family()
98
100
  val boldWeight = if (state.boldEnabled) FontWeight.W700 else FontWeight.W400
99
101
  val scope = rememberCoroutineScope()
@@ -103,6 +105,7 @@ fun ChapterScreen(
103
105
  var dragAmount by remember {
104
106
  mutableFloatStateOf(0.0f)
105
107
  }
108
+ val buttonInteractionSource = remember { MutableInteractionSource() }
106
109
  val chapterVerses =
107
110
  verses.filter { it.bookIndex == bookIndex && it.chapterIndex == chapterIndex }
108
111
  LoadingBox(isLoading = state.isLoading) {
@@ -111,32 +114,36 @@ fun ChapterScreen(
111
114
  .fillMaxSize(),
112
115
  topBar = {
113
116
  TopAppBar(
114
- // modifier = Modifier
117
+ modifier = Modifier
115
- // .height(90.dp),
118
+ .height(72.dp),
116
- // .padding(vertical = 8.dp),
117
119
  title = {
118
120
  Row(
119
121
  modifier = Modifier
120
- .fillMaxSize(),
122
+ .fillMaxWidth(),
121
123
  horizontalArrangement = Arrangement.Start,
122
124
  verticalAlignment = Alignment.CenterVertically,
123
125
  ) {
124
- Row(
125
- horizontalArrangement = Arrangement.Start,
126
- ) {
127
- Surface(onClick = { openDrawer(MenuType.Book, bookIndex) }) {
128
- Text(
126
+ Text(
127
+ modifier = Modifier
128
+ // .padding(end = 16.dp)
129
+ .clickable {
130
+ openDrawer(MenuType.Book, bookIndex)
131
+ },
129
- text = bookNames[bookIndex],
132
+ text = bookNames[bookIndex],
133
+ style = TextStyle(
134
+ fontSize = 22.sp,
135
+ fontWeight = FontWeight.W500,
130
- style = MaterialTheme.typography.headlineLarge,
136
+ color = MaterialTheme.colorScheme.primary,
131
- )
137
+ )
132
-
133
- }
138
+ )
134
- Surface(onClick = { openDrawer(MenuType.Chapter, bookIndex) }) {
139
+ TextButton(onClick = { openDrawer(MenuType.Chapter, bookIndex) }) {
135
- Text(
140
+ Text(
136
- text = "${chapterIndex + 1}",
141
+ text = "${chapterIndex + 1}",
137
- style = MaterialTheme.typography.headlineLarge,
142
+ style = TextStyle(
143
+ fontSize = 22.sp,
144
+ fontWeight = FontWeight.W500,
138
145
  )
139
- }
146
+ )
140
147
  }
141
148
  }
142
149
  },
@@ -150,27 +157,34 @@ fun ChapterScreen(
150
157
  selectedVerses = listOf()
151
158
  }
152
159
  }) {
160
+ Icon(
153
- Icon(Icons.Filled.FaceRetouchingNatural, "Share")
161
+ imageVector = Icons.Outlined.FaceRetouchingNatural,
162
+ contentDescription = "Audio",
163
+ )
154
164
  }
155
165
  IconButton(onClick = {
156
166
  shareVerses(context, selectedVerses)
157
167
  selectedVerses = listOf()
158
168
  }) {
169
+ Icon(
170
+ imageVector = Icons.Outlined.Share,
159
- Icon(Icons.Outlined.Share, "Share")
171
+ contentDescription = "Share",
172
+ )
160
173
  }
161
174
  }
162
- Surface(onClick = { openDrawer(MenuType.Bible, bookIndex) }) {
175
+ TextButton(onClick = { openDrawer(MenuType.Bible, bookIndex) }) {
163
176
  Text(
164
- text = state.getBibleName(),
177
+ text = state.getBibleName().substring(0, 2).uppercase(),
165
- style = MaterialTheme.typography.headlineSmall,
178
+ style = TextStyle(
179
+ fontSize = 18.sp,
180
+ fontWeight = FontWeight.W500,
181
+ ),
166
182
  )
167
183
  }
168
- Box(modifier = Modifier.wrapContentSize(Alignment.TopEnd)) {
169
- IconButton(onClick = {
184
+ IconButton(onClick = {
170
- state.showSheet()
185
+ state.showSheet()
171
- }) {
186
+ }) {
172
- Icon(Icons.Outlined.MoreVert, "More")
187
+ Icon(Icons.Outlined.MoreVert, "More")
173
- }
174
188
  }
175
189
  },
176
190
  )
@@ -287,23 +301,31 @@ fun ChapterScreen(
287
301
  )
288
302
  }
289
303
  val isSelected = selectedVerses.contains(v);
290
- val background =
304
+ Text(
291
- if (isSelected) MaterialTheme.colorScheme.onPrimary else MaterialTheme.colorScheme.background
292
- Text(modifier = Modifier
305
+ modifier = Modifier
293
- .clickable {
306
+ .clickable(
307
+ interactionSource = buttonInteractionSource,
308
+ indication = null
309
+ ) {
294
- selectedVerses = if (selectedVerses.contains(v)) {
310
+ selectedVerses = if (selectedVerses.contains(v)) {
295
- selectedVerses - v
311
+ selectedVerses - v
296
- } else {
312
+ } else {
297
- selectedVerses + v
313
+ selectedVerses + v
298
- }
314
+ }
299
- },
315
+ },
300
316
  style = TextStyle(
301
- background = background,
317
+ background = if (isSelected)
318
+ MaterialTheme.colorScheme.outline
319
+ else
320
+ Color.Unspecified,
302
321
  fontFamily = fontFamily,
303
- color = MaterialTheme.typography.bodyMedium.color,
322
+ color = if (darkTheme)
323
+ Color(0xFFBCBCBC)
324
+ else
325
+ Color(0xFF000104),
304
326
  fontWeight = boldWeight,
305
- fontSize = (16 + state.fontSizeDelta).sp,
327
+ fontSize = (17 + state.fontSizeDelta).sp,
306
- lineHeight = (22 + state.fontSizeDelta).sp,
328
+ lineHeight = (23 + state.fontSizeDelta).sp,
307
329
  letterSpacing = 0.sp,
308
330
  ),
309
331
  text = buildAnnotatedString {
@@ -313,7 +335,8 @@ fun ChapterScreen(
313
335
  withStyle(
314
336
  style = SpanStyle(
315
337
  fontSize = (13 + state.fontSizeDelta).sp,
338
+ color = if (darkTheme) Color(0xFFBBBBBB)
316
- color = Color(0xFF9A1111),
339
+ else Color(0xFFA20101),
317
340
  fontWeight = FontWeight.W700,
318
341
  )
319
342
  ) {
@@ -326,8 +349,21 @@ fun ChapterScreen(
326
349
  val start = spanned.getSpanStart(span)
327
350
  val end = spanned.getSpanEnd(span)
328
351
  when (span) {
329
- is ForegroundColorSpan -> span.spanStyle()
352
+ is ForegroundColorSpan ->
353
+ if (darkTheme) SpanStyle(color = Color(0xFFFF636B))
354
+ else SpanStyle(color = Color(0xFFFF0000))
355
+
330
- is StyleSpan -> span.spanStyle()
356
+ is StyleSpan -> when (span.style) {
357
+ Typeface.BOLD -> SpanStyle(fontWeight = FontWeight.Bold)
358
+ Typeface.ITALIC -> SpanStyle(fontStyle = FontStyle.Italic)
359
+ Typeface.BOLD_ITALIC -> SpanStyle(
360
+ fontWeight = FontWeight.Bold,
361
+ fontStyle = FontStyle.Italic,
362
+ )
363
+
364
+ else -> null
365
+ }
366
+
331
367
  else -> {
332
368
  null
333
369
  }
@@ -345,18 +381,4 @@ fun ChapterScreen(
345
381
  }
346
382
  }
347
383
  }
348
- }
349
-
350
- internal fun ForegroundColorSpan.spanStyle(): SpanStyle =
351
- SpanStyle(color = Color(foregroundColor))
352
-
353
- internal fun StyleSpan.spanStyle(): SpanStyle? = when (style) {
354
- Typeface.BOLD -> SpanStyle(fontWeight = FontWeight.Bold)
355
- Typeface.ITALIC -> SpanStyle(fontStyle = FontStyle.Italic)
356
- Typeface.BOLD_ITALIC -> SpanStyle(
357
- fontWeight = FontWeight.Bold,
358
- fontStyle = FontStyle.Italic,
359
- )
360
-
361
- else -> null
362
384
  }
app/src/main/java/dev/pyrossh/onlyBible/Drawer.kt CHANGED
@@ -21,6 +21,7 @@ import androidx.compose.material3.Button
21
21
  import androidx.compose.material3.DrawerValue
22
22
  import androidx.compose.material3.Icon
23
23
  import androidx.compose.material3.IconButton
24
+ import androidx.compose.material3.MaterialTheme
24
25
  import androidx.compose.material3.ModalDrawerSheet
25
26
  import androidx.compose.material3.ModalNavigationDrawer
26
27
  import androidx.compose.material3.Text
@@ -91,7 +92,7 @@ fun Drawer(
91
92
  drawerState = drawerState,
92
93
  drawerContent = {
93
94
  ModalDrawerSheet(
94
- drawerTonalElevation = 0.dp,
95
+ drawerTonalElevation = 2.dp,
95
96
  ) {
96
97
  Column(
97
98
  modifier = Modifier
@@ -114,7 +115,7 @@ fun Drawer(
114
115
  Text(
115
116
  text = "Select a bible",
116
117
  fontSize = 20.sp,
117
- fontWeight = FontWeight.W500
118
+ fontWeight = FontWeight.W500,
118
119
  )
119
120
  IconButton(onClick = {
120
121
  scope.launch {
@@ -154,7 +155,7 @@ fun Drawer(
154
155
  Text(
155
156
  text = "Old Testament",
156
157
  fontSize = 18.sp,
157
- fontWeight = FontWeight.W500
158
+ fontWeight = FontWeight.W500,
158
159
  )
159
160
  IconButton(onClick = {
160
161
  scope.launch {
app/src/main/java/dev/pyrossh/onlyBible/MainActivity.kt CHANGED
@@ -8,7 +8,6 @@ import androidx.activity.ComponentActivity
8
8
  import androidx.activity.compose.setContent
9
9
  import androidx.activity.enableEdgeToEdge
10
10
  import androidx.compose.runtime.CompositionLocalProvider
11
- import dev.pyrossh.onlyBible.ui.theme.AppTheme
12
11
 
13
12
  class MainActivity : ComponentActivity() {
14
13
 
app/src/main/java/dev/pyrossh/onlyBible/TextSettingsBottomSheet.kt CHANGED
@@ -1,6 +1,5 @@
1
1
  package dev.pyrossh.onlyBible
2
2
 
3
- import FontType
4
3
  import androidx.compose.foundation.BorderStroke
5
4
  import androidx.compose.foundation.background
6
5
  import androidx.compose.foundation.layout.Arrangement
@@ -34,7 +33,6 @@ import androidx.compose.ui.text.TextStyle
34
33
  import androidx.compose.ui.text.font.FontWeight
35
34
  import androidx.compose.ui.unit.dp
36
35
  import androidx.compose.ui.unit.sp
37
- import dev.pyrossh.onlyBible.ui.theme.ThemeType
38
36
  import kotlinx.coroutines.delay
39
37
  import kotlinx.coroutines.launch
40
38
 
@@ -45,6 +43,7 @@ fun TextSettingsBottomSheet() {
45
43
  val sheetState = rememberModalBottomSheetState()
46
44
  val state = LocalState.current!!
47
45
  return ModalBottomSheet(
46
+ tonalElevation = 2.dp,
48
47
  sheetState = sheetState,
49
48
  onDismissRequest = {
50
49
  scope.launch {
@@ -66,7 +65,11 @@ fun TextSettingsBottomSheet() {
66
65
  ) {
67
66
  Text(
68
67
  text = "Text Settings",
68
+ style = TextStyle(
69
+ fontSize = 18.sp,
70
+ fontWeight = FontWeight.W600,
69
- style = MaterialTheme.typography.titleLarge,
71
+ color = MaterialTheme.colorScheme.onBackground,
72
+ )
70
73
  )
71
74
  Row(horizontalArrangement = Arrangement.End) {
72
75
  IconButton(onClick = {
@@ -198,7 +201,8 @@ fun TextSettingsBottomSheet() {
198
201
  horizontalAlignment = Alignment.CenterHorizontally
199
202
  ) {
200
203
  Text(
204
+ text = it.name,
201
- text = it.name, style = TextStyle(
205
+ style = TextStyle(
202
206
  fontFamily = it.family(),
203
207
  fontSize = 18.sp,
204
208
  fontWeight = FontWeight.W600,
@@ -224,7 +228,7 @@ fun TextSettingsBottomSheet() {
224
228
  ) else null,
225
229
  modifier = Modifier
226
230
  .fillMaxWidth()
227
- .height(80.dp)
231
+ .height(60.dp)
228
232
  .padding(end = 16.dp)
229
233
  .weight(1f),
230
234
  onClick = {
@@ -238,7 +242,7 @@ fun TextSettingsBottomSheet() {
238
242
  }
239
243
  }
240
244
  ) {
241
- t.Icon()
245
+ t.ThemeIcon(state.themeType)
242
246
  }
243
247
 
244
248
  }
app/src/main/java/dev/pyrossh/onlyBible/ui/theme/Color.kt DELETED
@@ -1,226 +0,0 @@
1
- package dev.pyrossh.onlyBible.ui.theme
2
-
3
- import androidx.compose.ui.graphics.Color
4
-
5
- val primaryLight = Color(0xFF415F91)
6
- val onPrimaryLight = Color(0xFFFFFFFF)
7
- val primaryContainerLight = Color(0xFFD6E3FF)
8
- val onPrimaryContainerLight = Color(0xFF001B3E)
9
- val secondaryLight = Color(0xFF565F71)
10
- val onSecondaryLight = Color(0xFFFFFFFF)
11
- val secondaryContainerLight = Color(0xFFDAE2F9)
12
- val onSecondaryContainerLight = Color(0xFF131C2B)
13
- val tertiaryLight = Color(0xFF705575)
14
- val onTertiaryLight = Color(0xFFFFFFFF)
15
- val tertiaryContainerLight = Color(0xFFFAD8FD)
16
- val onTertiaryContainerLight = Color(0xFF28132E)
17
- val errorLight = Color(0xFFBA1A1A)
18
- val onErrorLight = Color(0xFFFFFFFF)
19
- val errorContainerLight = Color(0xFFFFDAD6)
20
- val onErrorContainerLight = Color(0xFF410002)
21
- val backgroundLight = Color(0xFFF9F9FF)
22
- val onBackgroundLight = Color(0xFF191C20)
23
- val surfaceLight = Color(0xFFF9F9FF)
24
- val onSurfaceLight = Color(0xFF191C20)
25
- val surfaceVariantLight = Color(0xFFE0E2EC)
26
- val onSurfaceVariantLight = Color(0xFF44474E)
27
- val outlineLight = Color(0xFF74777F)
28
- val outlineVariantLight = Color(0xFFC4C6D0)
29
- val scrimLight = Color(0xFF000000)
30
- val inverseSurfaceLight = Color(0xFF2E3036)
31
- val inverseOnSurfaceLight = Color(0xFFF0F0F7)
32
- val inversePrimaryLight = Color(0xFFAAC7FF)
33
- val surfaceDimLight = Color(0xFFD9D9E0)
34
- val surfaceBrightLight = Color(0xFFF9F9FF)
35
- val surfaceContainerLowestLight = Color(0xFFFFFFFF)
36
- val surfaceContainerLowLight = Color(0xFFF3F3FA)
37
- val surfaceContainerLight = Color(0xFFEDEDF4)
38
- val surfaceContainerHighLight = Color(0xFFE7E8EE)
39
- val surfaceContainerHighestLight = Color(0xFFE2E2E9)
40
-
41
- val primaryLightMediumContrast = Color(0xFF234373)
42
- val onPrimaryLightMediumContrast = Color(0xFFFFFFFF)
43
- val primaryContainerLightMediumContrast = Color(0xFF5875A8)
44
- val onPrimaryContainerLightMediumContrast = Color(0xFFFFFFFF)
45
- val secondaryLightMediumContrast = Color(0xFF3A4354)
46
- val onSecondaryLightMediumContrast = Color(0xFFFFFFFF)
47
- val secondaryContainerLightMediumContrast = Color(0xFF6C7588)
48
- val onSecondaryContainerLightMediumContrast = Color(0xFFFFFFFF)
49
- val tertiaryLightMediumContrast = Color(0xFF523A58)
50
- val onTertiaryLightMediumContrast = Color(0xFFFFFFFF)
51
- val tertiaryContainerLightMediumContrast = Color(0xFF876B8C)
52
- val onTertiaryContainerLightMediumContrast = Color(0xFFFFFFFF)
53
- val errorLightMediumContrast = Color(0xFF8C0009)
54
- val onErrorLightMediumContrast = Color(0xFFFFFFFF)
55
- val errorContainerLightMediumContrast = Color(0xFFDA342E)
56
- val onErrorContainerLightMediumContrast = Color(0xFFFFFFFF)
57
- val backgroundLightMediumContrast = Color(0xFFF9F9FF)
58
- val onBackgroundLightMediumContrast = Color(0xFF191C20)
59
- val surfaceLightMediumContrast = Color(0xFFF9F9FF)
60
- val onSurfaceLightMediumContrast = Color(0xFF191C20)
61
- val surfaceVariantLightMediumContrast = Color(0xFFE0E2EC)
62
- val onSurfaceVariantLightMediumContrast = Color(0xFF40434A)
63
- val outlineLightMediumContrast = Color(0xFF5C5F67)
64
- val outlineVariantLightMediumContrast = Color(0xFF787A83)
65
- val scrimLightMediumContrast = Color(0xFF000000)
66
- val inverseSurfaceLightMediumContrast = Color(0xFF2E3036)
67
- val inverseOnSurfaceLightMediumContrast = Color(0xFFF0F0F7)
68
- val inversePrimaryLightMediumContrast = Color(0xFFAAC7FF)
69
- val surfaceDimLightMediumContrast = Color(0xFFD9D9E0)
70
- val surfaceBrightLightMediumContrast = Color(0xFFF9F9FF)
71
- val surfaceContainerLowestLightMediumContrast = Color(0xFFFFFFFF)
72
- val surfaceContainerLowLightMediumContrast = Color(0xFFF3F3FA)
73
- val surfaceContainerLightMediumContrast = Color(0xFFEDEDF4)
74
- val surfaceContainerHighLightMediumContrast = Color(0xFFE7E8EE)
75
- val surfaceContainerHighestLightMediumContrast = Color(0xFFE2E2E9)
76
-
77
- val primaryLightHighContrast = Color(0xFF00214A)
78
- val onPrimaryLightHighContrast = Color(0xFFFFFFFF)
79
- val primaryContainerLightHighContrast = Color(0xFF234373)
80
- val onPrimaryContainerLightHighContrast = Color(0xFFFFFFFF)
81
- val secondaryLightHighContrast = Color(0xFF192232)
82
- val onSecondaryLightHighContrast = Color(0xFFFFFFFF)
83
- val secondaryContainerLightHighContrast = Color(0xFF3A4354)
84
- val onSecondaryContainerLightHighContrast = Color(0xFFFFFFFF)
85
- val tertiaryLightHighContrast = Color(0xFF301A35)
86
- val onTertiaryLightHighContrast = Color(0xFFFFFFFF)
87
- val tertiaryContainerLightHighContrast = Color(0xFF523A58)
88
- val onTertiaryContainerLightHighContrast = Color(0xFFFFFFFF)
89
- val errorLightHighContrast = Color(0xFF4E0002)
90
- val onErrorLightHighContrast = Color(0xFFFFFFFF)
91
- val errorContainerLightHighContrast = Color(0xFF8C0009)
92
- val onErrorContainerLightHighContrast = Color(0xFFFFFFFF)
93
- val backgroundLightHighContrast = Color(0xFFF9F9FF)
94
- val onBackgroundLightHighContrast = Color(0xFF191C20)
95
- val surfaceLightHighContrast = Color(0xFFF9F9FF)
96
- val onSurfaceLightHighContrast = Color(0xFF000000)
97
- val surfaceVariantLightHighContrast = Color(0xFFE0E2EC)
98
- val onSurfaceVariantLightHighContrast = Color(0xFF21242B)
99
- val outlineLightHighContrast = Color(0xFF40434A)
100
- val outlineVariantLightHighContrast = Color(0xFF40434A)
101
- val scrimLightHighContrast = Color(0xFF000000)
102
- val inverseSurfaceLightHighContrast = Color(0xFF2E3036)
103
- val inverseOnSurfaceLightHighContrast = Color(0xFFFFFFFF)
104
- val inversePrimaryLightHighContrast = Color(0xFFE5ECFF)
105
- val surfaceDimLightHighContrast = Color(0xFFD9D9E0)
106
- val surfaceBrightLightHighContrast = Color(0xFFF9F9FF)
107
- val surfaceContainerLowestLightHighContrast = Color(0xFFFFFFFF)
108
- val surfaceContainerLowLightHighContrast = Color(0xFFF3F3FA)
109
- val surfaceContainerLightHighContrast = Color(0xFFEDEDF4)
110
- val surfaceContainerHighLightHighContrast = Color(0xFFE7E8EE)
111
- val surfaceContainerHighestLightHighContrast = Color(0xFFE2E2E9)
112
-
113
- val primaryDark = Color(0xFFAAC7FF)
114
- val onPrimaryDark = Color(0xFF0A305F)
115
- val primaryContainerDark = Color(0xFF284777)
116
- val onPrimaryContainerDark = Color(0xFFD6E3FF)
117
- val secondaryDark = Color(0xFFBEC6DC)
118
- val onSecondaryDark = Color(0xFF283141)
119
- val secondaryContainerDark = Color(0xFF3E4759)
120
- val onSecondaryContainerDark = Color(0xFFDAE2F9)
121
- val tertiaryDark = Color(0xFFDDBCE0)
122
- val onTertiaryDark = Color(0xFF3F2844)
123
- val tertiaryContainerDark = Color(0xFF573E5C)
124
- val onTertiaryContainerDark = Color(0xFFFAD8FD)
125
- val errorDark = Color(0xFFFFB4AB)
126
- val onErrorDark = Color(0xFF690005)
127
- val errorContainerDark = Color(0xFF93000A)
128
- val onErrorContainerDark = Color(0xFFFFDAD6)
129
- val backgroundDark = Color(0xFF111318)
130
- val onBackgroundDark = Color(0xFFE2E2E9)
131
- val surfaceDark = Color(0xFF111318)
132
- val onSurfaceDark = Color(0xFFE2E2E9)
133
- val surfaceVariantDark = Color(0xFF44474E)
134
- val onSurfaceVariantDark = Color(0xFFC4C6D0)
135
- val outlineDark = Color(0xFF8E9099)
136
- val outlineVariantDark = Color(0xFF44474E)
137
- val scrimDark = Color(0xFF000000)
138
- val inverseSurfaceDark = Color(0xFFE2E2E9)
139
- val inverseOnSurfaceDark = Color(0xFF2E3036)
140
- val inversePrimaryDark = Color(0xFF415F91)
141
- val surfaceDimDark = Color(0xFF111318)
142
- val surfaceBrightDark = Color(0xFF37393E)
143
- val surfaceContainerLowestDark = Color(0xFF0C0E13)
144
- val surfaceContainerLowDark = Color(0xFF191C20)
145
- val surfaceContainerDark = Color(0xFF1D2024)
146
- val surfaceContainerHighDark = Color(0xFF282A2F)
147
- val surfaceContainerHighestDark = Color(0xFF33353A)
148
-
149
- val primaryDarkMediumContrast = Color(0xFFB1CBFF)
150
- val onPrimaryDarkMediumContrast = Color(0xFF001634)
151
- val primaryContainerDarkMediumContrast = Color(0xFF7491C7)
152
- val onPrimaryContainerDarkMediumContrast = Color(0xFF000000)
153
- val secondaryDarkMediumContrast = Color(0xFFC2CBE0)
154
- val onSecondaryDarkMediumContrast = Color(0xFF0D1626)
155
- val secondaryContainerDarkMediumContrast = Color(0xFF8891A5)
156
- val onSecondaryContainerDarkMediumContrast = Color(0xFF000000)
157
- val tertiaryDarkMediumContrast = Color(0xFFE1C0E5)
158
- val onTertiaryDarkMediumContrast = Color(0xFF230E29)
159
- val tertiaryContainerDarkMediumContrast = Color(0xFFA487A9)
160
- val onTertiaryContainerDarkMediumContrast = Color(0xFF000000)
161
- val errorDarkMediumContrast = Color(0xFFFFBAB1)
162
- val onErrorDarkMediumContrast = Color(0xFF370001)
163
- val errorContainerDarkMediumContrast = Color(0xFFFF5449)
164
- val onErrorContainerDarkMediumContrast = Color(0xFF000000)
165
- val backgroundDarkMediumContrast = Color(0xFF111318)
166
- val onBackgroundDarkMediumContrast = Color(0xFFE2E2E9)
167
- val surfaceDarkMediumContrast = Color(0xFF111318)
168
- val onSurfaceDarkMediumContrast = Color(0xFFFBFAFF)
169
- val surfaceVariantDarkMediumContrast = Color(0xFF44474E)
170
- val onSurfaceVariantDarkMediumContrast = Color(0xFFC8CAD4)
171
- val outlineDarkMediumContrast = Color(0xFFA0A3AC)
172
- val outlineVariantDarkMediumContrast = Color(0xFF80838C)
173
- val scrimDarkMediumContrast = Color(0xFF000000)
174
- val inverseSurfaceDarkMediumContrast = Color(0xFFE2E2E9)
175
- val inverseOnSurfaceDarkMediumContrast = Color(0xFF282A2F)
176
- val inversePrimaryDarkMediumContrast = Color(0xFF294878)
177
- val surfaceDimDarkMediumContrast = Color(0xFF111318)
178
- val surfaceBrightDarkMediumContrast = Color(0xFF37393E)
179
- val surfaceContainerLowestDarkMediumContrast = Color(0xFF0C0E13)
180
- val surfaceContainerLowDarkMediumContrast = Color(0xFF191C20)
181
- val surfaceContainerDarkMediumContrast = Color(0xFF1D2024)
182
- val surfaceContainerHighDarkMediumContrast = Color(0xFF282A2F)
183
- val surfaceContainerHighestDarkMediumContrast = Color(0xFF33353A)
184
-
185
- val primaryDarkHighContrast = Color(0xFFFBFAFF)
186
- val onPrimaryDarkHighContrast = Color(0xFF000000)
187
- val primaryContainerDarkHighContrast = Color(0xFFB1CBFF)
188
- val onPrimaryContainerDarkHighContrast = Color(0xFF000000)
189
- val secondaryDarkHighContrast = Color(0xFFFBFAFF)
190
- val onSecondaryDarkHighContrast = Color(0xFF000000)
191
- val secondaryContainerDarkHighContrast = Color(0xFFC2CBE0)
192
- val onSecondaryContainerDarkHighContrast = Color(0xFF000000)
193
- val tertiaryDarkHighContrast = Color(0xFFFFF9FA)
194
- val onTertiaryDarkHighContrast = Color(0xFF000000)
195
- val tertiaryContainerDarkHighContrast = Color(0xFFE1C0E5)
196
- val onTertiaryContainerDarkHighContrast = Color(0xFF000000)
197
- val errorDarkHighContrast = Color(0xFFFFF9F9)
198
- val onErrorDarkHighContrast = Color(0xFF000000)
199
- val errorContainerDarkHighContrast = Color(0xFFFFBAB1)
200
- val onErrorContainerDarkHighContrast = Color(0xFF000000)
201
- val backgroundDarkHighContrast = Color(0xFF111318)
202
- val onBackgroundDarkHighContrast = Color(0xFFE2E2E9)
203
- val surfaceDarkHighContrast = Color(0xFF111318)
204
- val onSurfaceDarkHighContrast = Color(0xFFFFFFFF)
205
- val surfaceVariantDarkHighContrast = Color(0xFF44474E)
206
- val onSurfaceVariantDarkHighContrast = Color(0xFFFBFAFF)
207
- val outlineDarkHighContrast = Color(0xFFC8CAD4)
208
- val outlineVariantDarkHighContrast = Color(0xFFC8CAD4)
209
- val scrimDarkHighContrast = Color(0xFF000000)
210
- val inverseSurfaceDarkHighContrast = Color(0xFFE2E2E9)
211
- val inverseOnSurfaceDarkHighContrast = Color(0xFF000000)
212
- val inversePrimaryDarkHighContrast = Color(0xFF002959)
213
- val surfaceDimDarkHighContrast = Color(0xFF111318)
214
- val surfaceBrightDarkHighContrast = Color(0xFF37393E)
215
- val surfaceContainerLowestDarkHighContrast = Color(0xFF0C0E13)
216
- val surfaceContainerLowDarkHighContrast = Color(0xFF191C20)
217
- val surfaceContainerDarkHighContrast = Color(0xFF1D2024)
218
- val surfaceContainerHighDarkHighContrast = Color(0xFF282A2F)
219
- val surfaceContainerHighestDarkHighContrast = Color(0xFF33353A)
220
-
221
-
222
-
223
-
224
-
225
-
226
-
app/src/main/java/dev/pyrossh/onlyBible/ui/theme/Font.kt DELETED
@@ -1,29 +0,0 @@
1
- import androidx.compose.ui.text.font.FontFamily
2
- import androidx.compose.ui.text.font.GenericFontFamily
3
- import androidx.compose.ui.text.googlefonts.Font
4
- import androidx.compose.ui.text.googlefonts.GoogleFont
5
- import dev.pyrossh.onlyBible.R
6
-
7
- enum class FontType {
8
- Sans,
9
- Serif,
10
- Mono;
11
-
12
- fun family(): GenericFontFamily {
13
- return when (this) {
14
- Sans -> FontFamily.SansSerif
15
- Serif -> FontFamily.Serif
16
- Mono -> FontFamily.Monospace
17
- }
18
- }
19
- }
20
-
21
- val provider = GoogleFont.Provider(
22
- providerAuthority = "com.google.android.gms.fonts",
23
- providerPackage = "com.google.android.gms",
24
- certificates = R.array.com_google_android_gms_fonts_certs
25
- )
26
-
27
- val RobotoFamily = FontFamily(
28
- Font(googleFont = GoogleFont("Roboto"), fontProvider = provider)
29
- )
app/src/main/java/dev/pyrossh/onlyBible/ui/theme/Type.kt DELETED
@@ -1,30 +0,0 @@
1
- package dev.pyrossh.onlyBible.ui.theme
2
-
3
- import androidx.compose.material3.Typography
4
- import androidx.compose.ui.text.TextStyle
5
- import androidx.compose.ui.text.font.FontFamily
6
- import androidx.compose.ui.text.font.FontWeight
7
- import androidx.compose.ui.unit.sp
8
-
9
- // Set of Material typography styles to start with
10
- val AppTypography = Typography(
11
- labelSmall = TextStyle(
12
- fontFamily = FontFamily.Default,
13
- fontWeight = FontWeight.Medium,
14
- fontSize = 11.sp,
15
- lineHeight = 16.sp,
16
- letterSpacing = 0.5.sp,
17
- ),
18
- headlineSmall = TextStyle(
19
- fontSize = 18.sp,
20
- fontWeight = FontWeight.W500,
21
- ),
22
- headlineMedium = TextStyle(
23
- fontSize = 20.sp,
24
- fontWeight = FontWeight.W500,
25
- ),
26
- headlineLarge = TextStyle(
27
- fontSize = 22.sp,
28
- fontWeight = FontWeight.W500,
29
- )
30
- )
readme.md ADDED
@@ -0,0 +1,4 @@
1
+ ## TODO
2
+
3
+ * Improve Paging in dark scheme
4
+ * Use DataManager