revert: use material 3

This commit is contained in:
greenart7c3
2023-08-14 13:50:30 -03:00
parent fcf4cd5694
commit fe295ccac4
17 changed files with 256 additions and 233 deletions
+3 -3
View File
@@ -6,7 +6,7 @@ plugins {
android {
namespace 'com.greenart7c3.nostrsigner'
compileSdk 34
compileSdk 33
defaultConfig {
applicationId "com.greenart7c3.nostrsigner"
@@ -81,7 +81,7 @@ dependencies {
// Observe Live data as State
implementation "androidx.compose.runtime:runtime-livedata:$compose_ui_version"
implementation "androidx.compose.material3:material3:$material_3"
implementation "androidx.compose.material:material:$compose_ui_version"
implementation "androidx.compose.material:material-icons-extended:$compose_ui_version"
implementation 'androidx.appcompat:appcompat:1.6.1'
@@ -113,7 +113,7 @@ dependencies {
// Markdown (With fix for full-image bleeds)
implementation('com.github.vitorpamplona.compose-richtext:richtext-ui:a0954aba63')
implementation('com.github.vitorpamplona.compose-richtext:richtext-ui-material3:a0954aba63')
implementation('com.github.vitorpamplona.compose-richtext:richtext-ui-material:a0954aba63')
implementation('com.github.vitorpamplona.compose-richtext:richtext-commonmark:a0954aba63')
// Biometrics
@@ -5,8 +5,8 @@ import android.util.Log
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.ui.Modifier
import androidx.lifecycle.viewmodel.compose.viewModel
import com.greenart7c3.nostrsigner.ui.AccountScreen
@@ -26,7 +26,7 @@ class MainActivity : AppCompatActivity() {
NostrSignerTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
color = MaterialTheme.colors.background
) {
val accountStateViewModel: AccountStateViewModel = viewModel {
AccountStateViewModel()
@@ -20,8 +20,7 @@ fun AccountScreen(
Column {
Crossfade(
targetState = accountState,
animationSpec = tween(durationMillis = 100),
label = ""
animationSpec = tween(durationMillis = 100)
) { state ->
when (state) {
is AccountState.LoggedOff -> {
@@ -12,19 +12,21 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.ClickableText
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.OutlinedTextField
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Visibility
import androidx.compose.material.icons.outlined.VisibilityOff
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -53,6 +55,8 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import com.greenart7c3.nostrsigner.R
import com.greenart7c3.nostrsigner.ui.theme.Font14SP
import com.greenart7c3.nostrsigner.ui.theme.Size35dp
import com.greenart7c3.nostrsigner.ui.theme.placeholderText
@OptIn(ExperimentalComposeUiApi::class)
@Composable
@@ -118,7 +122,8 @@ fun LoginPage(
),
placeholder = {
Text(
text = "nsec.."
text = "nsec..",
color = MaterialTheme.colors.placeholderText
)
},
trailingIcon = {
@@ -149,7 +154,7 @@ fun LoginPage(
painter = painterResource(R.drawable.ic_qrcode),
null,
modifier = Modifier.size(24.dp),
tint = MaterialTheme.colorScheme.primary
tint = MaterialTheme.colors.primary
)
}
},
@@ -167,8 +172,8 @@ fun LoginPage(
if (errorMessage.isNotBlank()) {
Text(
text = errorMessage,
color = MaterialTheme.colorScheme.error,
style = MaterialTheme.typography.bodySmall
color = MaterialTheme.colors.error,
style = MaterialTheme.typography.caption
)
}
@@ -190,9 +195,14 @@ fun LoginPage(
}
}
},
shape = RoundedCornerShape(Size35dp),
modifier = Modifier
.fillMaxWidth()
.height(50.dp)
.height(50.dp),
colors = ButtonDefaults
.buttonColors(
backgroundColor = MaterialTheme.colors.primary
)
) {
Text(text = "Login")
}
@@ -211,7 +221,7 @@ fun LoginPage(
style = TextStyle(
fontSize = Font14SP,
textDecoration = TextDecoration.Underline,
color = MaterialTheme.colorScheme.primary,
color = MaterialTheme.colors.primary,
textAlign = TextAlign.Center
)
)
@@ -17,22 +17,21 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.Card
import androidx.compose.material.Divider
import androidx.compose.material.DrawerValue
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccessTime
import androidx.compose.material.icons.filled.CalendarMonth
import androidx.compose.material.icons.filled.ContentPaste
import androidx.compose.material.icons.filled.Person
import androidx.compose.material3.Button
import androidx.compose.material3.Card
import androidx.compose.material3.Divider
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.rememberDrawerState
import androidx.compose.material.rememberDrawerState
import androidx.compose.material.rememberScaffoldState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -64,99 +63,94 @@ import com.greenart7c3.nostrsigner.service.model.Event
import com.greenart7c3.nostrsigner.service.toShortenHex
import com.greenart7c3.nostrsigner.ui.components.Drawer
import com.greenart7c3.nostrsigner.ui.components.MainAppBar
import com.greenart7c3.nostrsigner.ui.theme.ButtonBorder
import com.greenart7c3.nostrsigner.ui.theme.NostrSignerTheme
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.json.JSONObject
@OptIn(ExperimentalStdlibApi::class)
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Composable
fun MainScreen(account: Account, accountStateViewModel: AccountStateViewModel, json: IntentData?, packageName: String?) {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
val scaffoldState = rememberScaffoldState(rememberDrawerState(DrawerValue.Closed))
val coroutineScope = rememberCoroutineScope()
val context = LocalContext.current
val clipboardManager = LocalClipboardManager.current
ModalNavigationDrawer(
drawerState = drawerState,
Scaffold(
scaffoldState = scaffoldState,
drawerContent = {
ModalDrawerSheet {
Drawer(
accountStateViewModel = accountStateViewModel,
account = account,
drawerState = drawerState
)
}
Drawer(
accountStateViewModel = accountStateViewModel,
account = account,
scaffoldState = scaffoldState
)
},
topBar = {
MainAppBar(
scaffoldState,
accountStateViewModel,
account
)
}
) {
Scaffold(
topBar = {
MainAppBar(
drawerState,
accountStateViewModel,
account
)
if (json == null) {
Column(
Modifier.fillMaxSize(),
Arrangement.Center,
Alignment.CenterHorizontally
) {
Text("No event to sign")
}
) {
if (json == null) {
Column(
Modifier.fillMaxSize(),
Arrangement.Center,
Alignment.CenterHorizontally
) {
Text("No event to sign")
}
} else {
json.let {
val event = it.data
EventData(
packageName ?: it.name,
event,
event.toJson(),
coroutineScope,
clipboardManager,
context,
{
if (event.pubKey != account.keyPair.pubKey.toHexKey()) {
coroutineScope.launch {
Toast.makeText(
context,
context.getString(R.string.event_pubkey_is_not_equal_to_current_logged_in_user),
Toast.LENGTH_SHORT
).show()
}
return@EventData
}
val id = event.id.hexToByteArray()
val sig = CryptoUtils.sign(id, account.keyPair.privKey).toHexKey()
clipboardManager.setText(AnnotatedString(sig))
} else {
json.let {
val event = it.data
EventData(
packageName ?: it.name,
event,
event.toJson(),
coroutineScope,
clipboardManager,
context,
{
if (event.pubKey != account.keyPair.pubKey.toHexKey()) {
coroutineScope.launch {
val activity = context.getAppCompatActivity()
if (packageName != null) {
val intent = Intent()
intent.putExtra("signature", sig)
activity?.setResult(RESULT_OK, intent)
} else {
Toast.makeText(
context,
context.getString(R.string.signature_copied_to_the_clipboard),
Toast.LENGTH_SHORT
).show()
}
activity?.finish()
Toast.makeText(
context,
context.getString(R.string.event_pubkey_is_not_equal_to_current_logged_in_user),
Toast.LENGTH_SHORT
).show()
}
},
{
context.getAppCompatActivity()?.finish()
return@EventData
}
)
}
val id = event.id.hexToByteArray()
val sig = CryptoUtils.sign(id, account.keyPair.privKey).toHexKey()
clipboardManager.setText(AnnotatedString(sig))
coroutineScope.launch {
val activity = context.getAppCompatActivity()
if (packageName != null) {
val intent = Intent()
intent.putExtra("signature", sig)
activity?.setResult(RESULT_OK, intent)
} else {
Toast.makeText(
context,
context.getString(R.string.signature_copied_to_the_clipboard),
Toast.LENGTH_SHORT
).show()
}
activity?.finish()
}
},
{
context.getAppCompatActivity()?.finish()
}
)
}
}
}
@@ -186,7 +180,6 @@ fun EventData(
Modifier
.fillMaxSize()
.padding(8.dp)
.verticalScroll(scroll)
) {
Text(
modifier = Modifier.fillMaxWidth(),
@@ -242,6 +235,7 @@ fun EventData(
contentAlignment = Alignment.Center
) {
Button(
shape = ButtonBorder,
onClick = {
showMore = !showMore
}
@@ -251,7 +245,10 @@ fun EventData(
}
if (showMore) {
Text(
modifier = Modifier.padding(5.dp),
modifier = Modifier
.weight(1f)
.padding(5.dp)
.verticalScroll(rememberScrollState()),
text = JSONObject(rawJson).toString(2)
)
Row(
@@ -259,6 +256,7 @@ fun EventData(
horizontalArrangement = Arrangement.Center
) {
Button(
shape = ButtonBorder,
onClick = {
clipboardManager.setText(AnnotatedString(rawJson))
@@ -274,27 +272,9 @@ fun EventData(
Text("Copy raw json")
}
}
} else {
Spacer(modifier = Modifier.weight(1f))
}
Spacer(modifier = Modifier.weight(1f))
// Row(
// horizontalArrangement = Arrangement.SpaceBetween,
// verticalAlignment = Alignment.CenterVertically,
// modifier = Modifier
// .clickable {
// checked = !checked
// }
// ) {
// Text(
// modifier = Modifier.weight(1f),
// text = "Remember my choice and don't ask again"
// )
// Switch(
// checked = checked,
// onCheckedChange = {
// checked = !checked
// }
// )
// }
Row(
Modifier
@@ -303,12 +283,14 @@ fun EventData(
Arrangement.Center
) {
Button(
shape = ButtonBorder,
onClick = onReject
) {
Text("Reject")
}
Spacer(modifier = Modifier.width(8.dp))
Button(
shape = ButtonBorder,
onClick = onAccept
) {
Text("Accept")
@@ -335,7 +317,7 @@ fun EventRow(
Icon(
icon,
null,
tint = MaterialTheme.colorScheme.onBackground
tint = MaterialTheme.colors.onBackground
)
Text(
modifier = Modifier.padding(start = 8.dp),
@@ -352,7 +334,7 @@ fun EventRow(
}
}
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Preview(device = "id:Nexus S")
@Composable
fun Preview() {
@@ -6,7 +6,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
@@ -34,13 +34,13 @@ fun QrCodeDrawer(contents: String, modifier: Modifier = Modifier) {
createQrCode(contents = contents)
}
val foregroundColor = MaterialTheme.colorScheme.onSurface
val foregroundColor = MaterialTheme.colors.onSurface
Box(
modifier = modifier
.defaultMinSize(48.dp, 48.dp)
.aspectRatio(1f)
.background(MaterialTheme.colorScheme.background)
.background(MaterialTheme.colors.background)
) {
Canvas(modifier = Modifier.fillMaxSize()) {
// Calculate the height and width of each column/row
@@ -7,8 +7,8 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -29,7 +29,7 @@ fun ShowQRDialog(account: Account, onClose: () -> Unit) {
Surface(modifier = Modifier.fillMaxSize()) {
Column(
modifier = Modifier
.background(MaterialTheme.colorScheme.background)
.background(MaterialTheme.colors.background)
.fillMaxSize()
) {
Row(
@@ -16,15 +16,14 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Key
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
@@ -43,8 +42,11 @@ import com.greenart7c3.nostrsigner.service.Biometrics
import com.greenart7c3.nostrsigner.service.toNpub
import com.greenart7c3.nostrsigner.service.toNsec
import com.greenart7c3.nostrsigner.ui.components.CloseButton
import com.greenart7c3.nostrsigner.ui.theme.ButtonBorder
import com.halilibo.richtext.markdown.Markdown
import com.halilibo.richtext.ui.material3.Material3RichText
import com.halilibo.richtext.ui.RichTextStyle
import com.halilibo.richtext.ui.material.MaterialRichText
import com.halilibo.richtext.ui.resolveDefaults
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@@ -57,7 +59,7 @@ fun AccountBackupDialog(account: Account, onClose: () -> Unit) {
Surface(modifier = Modifier.fillMaxSize()) {
Column(
modifier = Modifier
.background(MaterialTheme.colorScheme.background)
.background(MaterialTheme.colors.background)
.fillMaxSize()
) {
Row(
@@ -77,7 +79,9 @@ fun AccountBackupDialog(account: Account, onClose: () -> Unit) {
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Material3RichText {
MaterialRichText(
style = RichTextStyle().resolveDefaults()
) {
Markdown(
content = stringResource(R.string.account_backup_tips_md)
)
@@ -120,15 +124,19 @@ private fun NSecCopyButton(
copyNSec(context, scope, account, clipboardManager)
}
},
shape = ButtonBorder,
colors = ButtonDefaults.buttonColors(
backgroundColor = MaterialTheme.colors.primary
),
contentPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
) {
Icon(
tint = MaterialTheme.colors.onPrimary,
imageVector = Icons.Default.Key,
contentDescription = stringResource(R.string.copies_the_nsec_id_your_password_to_the_clipboard_for_backup),
Modifier.size(18.dp)
modifier = Modifier.padding(end = 5.dp)
)
Spacer(modifier = Modifier.width(8.dp))
Text(stringResource(id = R.string.copy_my_secret_key))
Text(stringResource(id = R.string.copy_my_secret_key), color = MaterialTheme.colors.onPrimary)
}
}
@@ -152,16 +160,21 @@ private fun NPubCopyButton(
).show()
}
},
shape = ButtonBorder,
colors = ButtonDefaults.buttonColors(
backgroundColor = MaterialTheme.colors.primary
),
contentPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
) {
Icon(
tint = MaterialTheme.colors.onPrimary,
imageVector = Icons.Default.Key,
contentDescription = stringResource(R.string.copies_the_npub_id_your_user_to_the_clipboard_for_backup),
Modifier.size(18.dp)
modifier = Modifier.padding(end = 5.dp)
)
Spacer(modifier = Modifier.width(8.dp))
Text(
stringResource(R.string.copy_my_public_key)
stringResource(R.string.copy_my_public_key),
color = MaterialTheme.colors.onPrimary
)
}
}
@@ -1,14 +1,22 @@
package com.greenart7c3.nostrsigner.ui.components
import androidx.compose.material3.Button
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import com.greenart7c3.nostrsigner.ui.theme.ButtonBorder
@Composable
fun CloseButton(onCancel: () -> Unit) {
Button(
onClick = {
onCancel()
}
},
shape = ButtonBorder,
colors = ButtonDefaults
.buttonColors(
backgroundColor = Color.Gray
)
) {
CloseIcon()
}
@@ -1,8 +1,8 @@
package com.greenart7c3.nostrsigner.ui.components
import androidx.compose.material.Icon
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Cancel
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import com.greenart7c3.nostrsigner.ui.theme.Size20Modifier
@@ -7,18 +7,18 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.AlertDialog
import androidx.compose.material.Divider
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.ScaffoldState
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Key
import androidx.compose.material.icons.filled.QrCode
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Divider
import androidx.compose.material3.DrawerState
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -42,7 +42,7 @@ import kotlinx.coroutines.launch
fun Drawer(
accountStateViewModel: AccountStateViewModel,
account: Account,
drawerState: DrawerState
scaffoldState: ScaffoldState
) {
var logoutDialog by remember { mutableStateOf(false) }
var backupDialogOpen by remember { mutableStateOf(false) }
@@ -83,34 +83,34 @@ fun Drawer(
Surface(
modifier = Modifier.fillMaxWidth(),
color = MaterialTheme.colorScheme.background
color = MaterialTheme.colors.background
) {
Column {
Spacer(modifier = Modifier.weight(1f))
IconRow(
title = "Backup Keys",
icon = Icons.Default.Key,
tint = MaterialTheme.colorScheme.onBackground,
tint = MaterialTheme.colors.onBackground,
onClick = {
scope.launch {
drawerState.close()
scaffoldState.drawerState.close()
}
backupDialogOpen = true
}
)
BottomContent(account, drawerState)
BottomContent(account, scaffoldState)
}
}
if (backupDialogOpen) {
AccountBackupDialog(account, onClose = { backupDialogOpen = false })
}
BackHandler(enabled = drawerState.isOpen) {
scope.launch { drawerState.close() }
BackHandler(enabled = scaffoldState.drawerState.isOpen) {
scope.launch { scaffoldState.drawerState.close() }
}
}
@Composable
fun BottomContent(account: Account, drawerState: DrawerState) {
fun BottomContent(account: Account, scaffoldState: ScaffoldState) {
val coroutineScope = rememberCoroutineScope()
// store the dialog open or close state
@@ -140,14 +140,14 @@ fun BottomContent(account: Account, drawerState: DrawerState) {
IconButton(onClick = {
dialogOpen = true
coroutineScope.launch {
drawerState.close()
scaffoldState.drawerState.close()
}
}) {
Icon(
Icons.Default.QrCode,
null,
modifier = Modifier.size(24.dp),
tint = MaterialTheme.colorScheme.primary
tint = MaterialTheme.colors.primary
)
}
}
@@ -3,13 +3,11 @@ package com.greenart7c3.nostrsigner.ui.components
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -38,11 +36,11 @@ fun IconRow(title: String, icon: ImageVector, tint: Color, onClick: () -> Unit,
Icon(
icon,
null,
modifier = Modifier.size(18.dp),
modifier = Modifier.size(22.dp),
tint = tint
)
Spacer(modifier = Modifier.width(8.dp))
Text(
modifier = Modifier.padding(start = 16.dp),
text = title,
fontSize = 18.sp
)
@@ -1,12 +1,15 @@
package com.greenart7c3.nostrsigner.ui.components
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.greenart7c3.nostrsigner.ui.theme.ButtonBorder
@Composable
fun PostButton(modifier: Modifier = Modifier, onPost: () -> Unit = {}, isActive: Boolean) {
@@ -17,6 +20,11 @@ fun PostButton(modifier: Modifier = Modifier, onPost: () -> Unit = {}, isActive:
onPost()
}
},
shape = ButtonBorder,
colors = ButtonDefaults
.buttonColors(
backgroundColor = if (isActive) MaterialTheme.colors.primary else Color.Gray
),
contentPadding = PaddingValues(0.dp)
) {
Text(text = "Post", color = Color.White)
@@ -1,31 +1,31 @@
package com.greenart7c3.nostrsigner.ui.components
import androidx.compose.material.AlertDialog
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.ScaffoldState
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Logout
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.DrawerState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.greenart7c3.nostrsigner.models.Account
import com.greenart7c3.nostrsigner.service.toNpub
import com.greenart7c3.nostrsigner.ui.AccountStateViewModel
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MainAppBar(drawerState: DrawerState, accountStateViewModel: AccountStateViewModel, account: Account) {
fun MainAppBar(scaffoldState: ScaffoldState, accountStateViewModel: AccountStateViewModel, account: Account) {
val scope = rememberCoroutineScope()
TopAppBar(
title = { Text(text = "Amber") },
@@ -33,14 +33,14 @@ fun MainAppBar(drawerState: DrawerState, accountStateViewModel: AccountStateView
IconButton(
onClick = {
scope.launch {
drawerState.open()
scaffoldState.drawerState.open()
}
}
) {
Icon(
imageVector = Icons.Default.Menu,
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface
tint = MaterialTheme.colors.onSurface
)
}
},
@@ -49,7 +49,9 @@ fun MainAppBar(drawerState: DrawerState, accountStateViewModel: AccountStateView
accountStateViewModel = accountStateViewModel,
account = account
)
}
},
backgroundColor = Color.Transparent,
elevation = 0.dp
)
}
@@ -96,7 +98,7 @@ fun LogoutButton(accountStateViewModel: AccountStateViewModel, account: Account)
Icon(
imageVector = Icons.Default.Logout,
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface
tint = MaterialTheme.colors.onSurface
)
}
}
@@ -3,9 +3,12 @@ package com.greenart7c3.nostrsigner.ui.theme
import android.app.Activity
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Colors
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Shapes
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.Modifier
@@ -15,52 +18,55 @@ import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
val Shapes = Shapes(
small = RoundedCornerShape(4.dp),
medium = RoundedCornerShape(4.dp),
large = RoundedCornerShape(0.dp)
)
val Font14SP = 14.sp
val Size35dp = 35.dp
val Purple80 = Color(0xFFD0BCFF)
val PurpleGrey80 = Color(0xFFCCC2DC)
val Pink80 = Color(0xFFEFB8C8)
val Purple40 = Color(0xFF6650a4)
val PurpleGrey40 = Color(0xFF625b71)
val Pink40 = Color(0xFF7D5260)
val Purple200 = Color(0xFFBB86FC)
val Purple500 = Color(0xFF6200EE)
val Purple700 = Color(0xFF3700B3)
val Teal200 = Color(0xFF03DAC5)
val ButtonBorder = RoundedCornerShape(20.dp)
val Size20Modifier = Modifier.size(20.dp)
private val DarkColorScheme = darkColorScheme(
primary = Purple80,
secondary = PurpleGrey80,
tertiary = Pink80
private val DarkColorPalette = darkColors(
primary = Purple200,
primaryVariant = Purple700,
secondary = Teal200,
secondaryVariant = Purple200
)
private val LightColorScheme = lightColorScheme(
primary = Purple40,
secondary = PurpleGrey40,
tertiary = Pink40
/* Other default colors to override
background = Color(0xFFFFFBFE),
surface = Color(0xFFFFFBFE),
onPrimary = Color.White,
onSecondary = Color.White,
onTertiary = Color.White,
onBackground = Color(0xFF1C1B1F),
onSurface = Color(0xFF1C1B1F),
*/
private val LightColorPalette = lightColors(
primary = Purple500,
primaryVariant = Purple700,
secondary = Teal200,
secondaryVariant = Purple500
)
private val DarkPlaceholderText = DarkColorPalette.onSurface.copy(alpha = 0.32f)
private val LightPlaceholderText = LightColorPalette.onSurface.copy(alpha = 0.32f)
val Colors.placeholderText: Color
get() = if (isLight) LightPlaceholderText else DarkPlaceholderText
@Composable
fun NostrSignerTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) DarkColorScheme else LightColorScheme
val colors = if (darkTheme) DarkColorPalette else LightColorPalette
MaterialTheme(
colorScheme = colors,
colors = colors,
typography = Typography,
shapes = Shapes,
content = content
)
@@ -1,6 +1,6 @@
package com.greenart7c3.nostrsigner.ui.theme
import androidx.compose.material3.Typography
import androidx.compose.material.Typography
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
@@ -8,12 +8,10 @@ import androidx.compose.ui.unit.sp
// Set of Material typography styles to start with
val Typography = Typography(
bodyLarge = TextStyle(
body1 = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
lineHeight = 24.sp,
letterSpacing = 0.5.sp
fontSize = 16.sp
)
/* Other default text styles to override
titleLarge = TextStyle(
+2 -3
View File
@@ -3,9 +3,8 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
buildscript {
ext {
lifecycle_version = '2.6.1'
compose_ui_version = '1.5.0'
nav_version = "2.7.0"
material_3 = "1.1.1"
compose_ui_version = '1.4.3'
nav_version = "2.6.0"
}
}