Migration to Niel Liesmons' icons
@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.heightIn
|
import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.LazyListState
|
import androidx.compose.foundation.lazy.LazyListState
|
||||||
import androidx.compose.foundation.lazy.itemsIndexed
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
@ -45,7 +44,6 @@ import androidx.compose.ui.focus.onFocusChanged
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
@ -62,9 +60,11 @@ import com.vitorpamplona.amethyst.service.NostrSearchEventOrUserDataSource
|
|||||||
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
||||||
import com.vitorpamplona.amethyst.ui.note.ChannelName
|
import com.vitorpamplona.amethyst.ui.note.ChannelName
|
||||||
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.SearchIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.UsernameDisplay
|
import com.vitorpamplona.amethyst.ui.note.UsernameDisplay
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.SearchBarViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.SearchBarViewModel
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size55dp
|
import com.vitorpamplona.amethyst.ui.theme.Size55dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@ -254,12 +254,7 @@ private fun SearchEditTextForJoin(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
leadingIcon = {
|
leadingIcon = {
|
||||||
Icon(
|
SearchIcon(modifier = Size20Modifier, Color.Unspecified)
|
||||||
painter = painterResource(R.drawable.ic_search),
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f, true)
|
.weight(1f, true)
|
||||||
|
@ -21,7 +21,6 @@ import androidx.compose.material.*
|
|||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ArrowForwardIos
|
import androidx.compose.material.icons.filled.ArrowForwardIos
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
import androidx.compose.material.icons.filled.Bolt
|
||||||
import androidx.compose.material.icons.filled.Cancel
|
|
||||||
import androidx.compose.material.icons.filled.CurrencyBitcoin
|
import androidx.compose.material.icons.filled.CurrencyBitcoin
|
||||||
import androidx.compose.material.icons.filled.ShowChart
|
import androidx.compose.material.icons.filled.ShowChart
|
||||||
import androidx.compose.material.icons.filled.Visibility
|
import androidx.compose.material.icons.filled.Visibility
|
||||||
@ -73,7 +72,11 @@ import com.vitorpamplona.amethyst.model.User
|
|||||||
import com.vitorpamplona.amethyst.service.NostrSearchEventOrUserDataSource
|
import com.vitorpamplona.amethyst.service.NostrSearchEventOrUserDataSource
|
||||||
import com.vitorpamplona.amethyst.service.noProtocolUrlValidator
|
import com.vitorpamplona.amethyst.service.noProtocolUrlValidator
|
||||||
import com.vitorpamplona.amethyst.ui.components.*
|
import com.vitorpamplona.amethyst.ui.components.*
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.CancelIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.CloseIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.PollIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.RegularPostIcon
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.TextSpinner
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.TextSpinner
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.UserLine
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.UserLine
|
||||||
@ -479,19 +482,9 @@ private fun AddPollButton(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
if (!isPollActive) {
|
if (!isPollActive) {
|
||||||
Icon(
|
PollIcon()
|
||||||
painter = painterResource(R.drawable.ic_poll),
|
|
||||||
null,
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = MaterialTheme.colors.onBackground
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
RegularPostIcon()
|
||||||
painter = painterResource(R.drawable.ic_lists),
|
|
||||||
null,
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = MaterialTheme.colors.onBackground
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -725,12 +718,7 @@ fun CloseButton(onCancel: () -> Unit) {
|
|||||||
backgroundColor = Color.Gray
|
backgroundColor = Color.Gray
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
Icon(
|
CloseIcon()
|
||||||
painter = painterResource(id = R.drawable.ic_close),
|
|
||||||
contentDescription = stringResource(id = R.string.cancel),
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = Color.White
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -792,30 +780,6 @@ fun CreateButton(onPost: () -> Unit = {}, isActive: Boolean, modifier: Modifier
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun SearchButton(onPost: () -> Unit = {}, isActive: Boolean, modifier: Modifier = Modifier) {
|
|
||||||
Button(
|
|
||||||
modifier = modifier,
|
|
||||||
onClick = {
|
|
||||||
if (isActive) {
|
|
||||||
onPost()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
shape = ButtonBorder,
|
|
||||||
colors = ButtonDefaults
|
|
||||||
.buttonColors(
|
|
||||||
backgroundColor = if (isActive) MaterialTheme.colors.primary else Color.Gray
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_search),
|
|
||||||
null,
|
|
||||||
modifier = Modifier.size(26.dp),
|
|
||||||
tint = Color.White
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum class ServersAvailable {
|
enum class ServersAvailable {
|
||||||
// IMGUR,
|
// IMGUR,
|
||||||
NOSTR_BUILD,
|
NOSTR_BUILD,
|
||||||
@ -910,17 +874,10 @@ fun ImageVideoDescription(
|
|||||||
)
|
)
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
modifier = Modifier.size(30.dp),
|
modifier = Modifier.size(30.dp).padding(end = 5.dp),
|
||||||
onClick = onCancel
|
onClick = onCancel
|
||||||
) {
|
) {
|
||||||
Icon(
|
CancelIcon()
|
||||||
imageVector = Icons.Default.Cancel,
|
|
||||||
null,
|
|
||||||
modifier = Modifier
|
|
||||||
.padding(end = 5.dp)
|
|
||||||
.size(30.dp),
|
|
||||||
tint = MaterialTheme.colors.placeholderText
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,12 +11,8 @@ import androidx.compose.foundation.text.selection.SelectionContainer
|
|||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.Card
|
import androidx.compose.material.Card
|
||||||
import androidx.compose.material.Divider
|
import androidx.compose.material.Divider
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.MaterialTheme
|
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.ArrowBack
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@ -25,6 +21,8 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import com.vitorpamplona.amethyst.R
|
import com.vitorpamplona.amethyst.R
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size24dp
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SelectTextDialog(text: String, onDismiss: () -> Unit) {
|
fun SelectTextDialog(text: String, onDismiss: () -> Unit) {
|
||||||
@ -41,7 +39,7 @@ fun SelectTextDialog(text: String, onDismiss: () -> Unit) {
|
|||||||
) {
|
) {
|
||||||
Card {
|
Card {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.heightIn(24.dp, maxHeight)
|
modifier = Modifier.heightIn(Size24dp, maxHeight)
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
@ -50,11 +48,7 @@ fun SelectTextDialog(text: String, onDismiss: () -> Unit) {
|
|||||||
IconButton(
|
IconButton(
|
||||||
onClick = onDismiss
|
onClick = onDismiss
|
||||||
) {
|
) {
|
||||||
Icon(
|
ArrowBackIcon(Size24dp)
|
||||||
imageVector = Icons.Default.ArrowBack,
|
|
||||||
contentDescription = null,
|
|
||||||
tint = MaterialTheme.colors.primary
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
Text(text = stringResource(R.string.select_text_dialog_top))
|
Text(text = stringResource(R.string.select_text_dialog_top))
|
||||||
}
|
}
|
||||||
|
@ -11,17 +11,9 @@ import androidx.compose.foundation.layout.BoxWithConstraints
|
|||||||
import androidx.compose.foundation.layout.defaultMinSize
|
import androidx.compose.foundation.layout.defaultMinSize
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
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.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.VolumeOff
|
|
||||||
import androidx.compose.material.icons.filled.VolumeUp
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@ -62,7 +54,11 @@ import coil.request.ImageRequest
|
|||||||
import com.vitorpamplona.amethyst.VideoCache
|
import com.vitorpamplona.amethyst.VideoCache
|
||||||
import com.vitorpamplona.amethyst.service.HttpClient
|
import com.vitorpamplona.amethyst.service.HttpClient
|
||||||
import com.vitorpamplona.amethyst.service.connectivitystatus.ConnectivityStatus
|
import com.vitorpamplona.amethyst.service.connectivitystatus.ConnectivityStatus
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.MuteIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.MutedIcon
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size50Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.VolumeBottomIconSize
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.time.ExperimentalTime
|
import kotlin.time.ExperimentalTime
|
||||||
@ -352,14 +348,7 @@ fun LayoutCoordinates.isCompletelyVisible(view: View): Boolean {
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun MuteButton(toggle: (Boolean) -> Unit) {
|
private fun MuteButton(toggle: (Boolean) -> Unit) {
|
||||||
Box(
|
Box(modifier = VolumeBottomIconSize) {
|
||||||
remember {
|
|
||||||
Modifier
|
|
||||||
.width(70.dp)
|
|
||||||
.height(70.dp)
|
|
||||||
.padding(10.dp)
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
Box(
|
Box(
|
||||||
Modifier
|
Modifier
|
||||||
.clip(CircleShape)
|
.clip(CircleShape)
|
||||||
@ -375,22 +364,12 @@ private fun MuteButton(toggle: (Boolean) -> Unit) {
|
|||||||
mutedInstance.value = !mutedInstance.value
|
mutedInstance.value = !mutedInstance.value
|
||||||
toggle(mutedInstance.value)
|
toggle(mutedInstance.value)
|
||||||
},
|
},
|
||||||
modifier = Modifier.size(50.dp)
|
modifier = Size50Modifier
|
||||||
) {
|
) {
|
||||||
if (mutedInstance.value) {
|
if (mutedInstance.value) {
|
||||||
Icon(
|
MutedIcon()
|
||||||
imageVector = Icons.Default.VolumeOff,
|
|
||||||
"Hash Verified",
|
|
||||||
tint = MaterialTheme.colors.onBackground,
|
|
||||||
modifier = Modifier.size(30.dp)
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
MuteIcon()
|
||||||
imageVector = Icons.Default.VolumeUp,
|
|
||||||
"Hash Verified",
|
|
||||||
tint = MaterialTheme.colors.onBackground,
|
|
||||||
modifier = Modifier.size(30.dp)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,15 +26,11 @@ import androidx.compose.foundation.pager.PagerState
|
|||||||
import androidx.compose.foundation.pager.rememberPagerState
|
import androidx.compose.foundation.pager.rememberPagerState
|
||||||
import androidx.compose.foundation.text.InlineTextContent
|
import androidx.compose.foundation.text.InlineTextContent
|
||||||
import androidx.compose.foundation.text.appendInlineContent
|
import androidx.compose.foundation.text.appendInlineContent
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.LocalTextStyle
|
import androidx.compose.material.LocalTextStyle
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Surface
|
import androidx.compose.material.Surface
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.DownloadForOffline
|
|
||||||
import androidx.compose.material.icons.filled.Report
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
@ -47,12 +43,10 @@ import androidx.compose.runtime.rememberCoroutineScope
|
|||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalClipboardManager
|
import androidx.compose.ui.platform.LocalClipboardManager
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalView
|
import androidx.compose.ui.platform.LocalView
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
import androidx.compose.ui.text.Placeholder
|
import androidx.compose.ui.text.Placeholder
|
||||||
import androidx.compose.ui.text.PlaceholderVerticalAlign
|
import androidx.compose.ui.text.PlaceholderVerticalAlign
|
||||||
@ -75,8 +69,14 @@ import com.vitorpamplona.amethyst.ui.actions.CloseButton
|
|||||||
import com.vitorpamplona.amethyst.ui.actions.LoadingAnimation
|
import com.vitorpamplona.amethyst.ui.actions.LoadingAnimation
|
||||||
import com.vitorpamplona.amethyst.ui.actions.SaveToGallery
|
import com.vitorpamplona.amethyst.ui.actions.SaveToGallery
|
||||||
import com.vitorpamplona.amethyst.ui.note.BlankNote
|
import com.vitorpamplona.amethyst.ui.note.BlankNote
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.DownloadForOfflineIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.HashCheckFailedIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.HashCheckIcon
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Font17SP
|
import com.vitorpamplona.amethyst.ui.theme.Font17SP
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size20dp
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size24dp
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size30dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
@ -367,15 +367,10 @@ fun ImageUrlWithDownloadButton(url: String, showImage: MutableState<Boolean>) {
|
|||||||
FlowRow() {
|
FlowRow() {
|
||||||
ClickableUrl(urlText = url, url = url)
|
ClickableUrl(urlText = url, url = url)
|
||||||
IconButton(
|
IconButton(
|
||||||
modifier = Modifier.size(20.dp),
|
modifier = Modifier.size(Size20dp),
|
||||||
onClick = { showImage.value = true }
|
onClick = { showImage.value = true }
|
||||||
) {
|
) {
|
||||||
Icon(
|
DownloadForOfflineIcon(Size24dp)
|
||||||
imageVector = Icons.Default.DownloadForOffline,
|
|
||||||
null,
|
|
||||||
modifier = Modifier.size(24.dp),
|
|
||||||
tint = MaterialTheme.colors.primary
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -717,12 +712,7 @@ private fun HashVerificationSymbol(verifiedHash: Boolean, modifier: Modifier) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Icon(
|
HashCheckIcon(Size30dp)
|
||||||
painter = painterResource(R.drawable.ic_verified),
|
|
||||||
"Hash Verified",
|
|
||||||
tint = Color.Unspecified,
|
|
||||||
modifier = Modifier.size(30.dp)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
IconButton(
|
IconButton(
|
||||||
@ -736,12 +726,7 @@ private fun HashVerificationSymbol(verifiedHash: Boolean, modifier: Modifier) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Icon(
|
HashCheckFailedIcon(Size30dp)
|
||||||
tint = Color.Red,
|
|
||||||
imageVector = Icons.Default.Report,
|
|
||||||
contentDescription = "Invalid Hash",
|
|
||||||
modifier = Modifier.size(30.dp)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,10 +77,12 @@ import com.vitorpamplona.amethyst.service.model.PeopleListEvent
|
|||||||
import com.vitorpamplona.amethyst.service.relays.Client
|
import com.vitorpamplona.amethyst.service.relays.Client
|
||||||
import com.vitorpamplona.amethyst.service.relays.RelayPool
|
import com.vitorpamplona.amethyst.service.relays.RelayPool
|
||||||
import com.vitorpamplona.amethyst.ui.components.RobohashAsyncImageProxy
|
import com.vitorpamplona.amethyst.ui.components.RobohashAsyncImageProxy
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.SearchIcon
|
||||||
import com.vitorpamplona.amethyst.ui.screen.equalImmutableLists
|
import com.vitorpamplona.amethyst.ui.screen.equalImmutableLists
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.SpinnerSelectionDialog
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.SpinnerSelectionDialog
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BottomTopHeight
|
import com.vitorpamplona.amethyst.ui.theme.BottomTopHeight
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size22Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
@ -246,7 +248,7 @@ fun GenericTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewMod
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions = {
|
actions = {
|
||||||
SearchIcon() {
|
SearchButton() {
|
||||||
nav(Route.Search.route)
|
nav(Route.Search.route)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,16 +258,11 @@ fun GenericTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewMod
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SearchIcon(onClick: () -> Unit) {
|
private fun SearchButton(onClick: () -> Unit) {
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = onClick
|
onClick = onClick
|
||||||
) {
|
) {
|
||||||
Icon(
|
SearchIcon(modifier = Size22Modifier, Color.Unspecified)
|
||||||
painter = painterResource(R.drawable.ic_search),
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.size(22.dp),
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
354
app/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
package com.vitorpamplona.amethyst.ui.note
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.material.Icon
|
||||||
|
import androidx.compose.material.MaterialTheme
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.filled.ArrowBack
|
||||||
|
import androidx.compose.material.icons.filled.Bolt
|
||||||
|
import androidx.compose.material.icons.filled.Cancel
|
||||||
|
import androidx.compose.material.icons.filled.Clear
|
||||||
|
import androidx.compose.material.icons.filled.DownloadForOffline
|
||||||
|
import androidx.compose.material.icons.filled.Downloading
|
||||||
|
import androidx.compose.material.icons.filled.ExpandLess
|
||||||
|
import androidx.compose.material.icons.filled.ExpandMore
|
||||||
|
import androidx.compose.material.icons.filled.Link
|
||||||
|
import androidx.compose.material.icons.filled.MoreVert
|
||||||
|
import androidx.compose.material.icons.filled.PushPin
|
||||||
|
import androidx.compose.material.icons.filled.Report
|
||||||
|
import androidx.compose.material.icons.filled.VolumeOff
|
||||||
|
import androidx.compose.material.icons.filled.VolumeUp
|
||||||
|
import androidx.compose.material.icons.outlined.BarChart
|
||||||
|
import androidx.compose.material.icons.outlined.PlayCircle
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import com.vitorpamplona.amethyst.R
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size15Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size30Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.subtleButton
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun FollowingIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.following),
|
||||||
|
contentDescription = stringResource(id = R.string.following),
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = Color.Unspecified
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ArrowBackIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.ArrowBack,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = MaterialTheme.colors.primary
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun MessageIcon(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_dm),
|
||||||
|
null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = MaterialTheme.colors.primary
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun DownloadForOfflineIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.DownloadForOffline,
|
||||||
|
null,
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = MaterialTheme.colors.primary
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun HashCheckIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.original),
|
||||||
|
contentDescription = stringResource(id = R.string.hash_verification_passed),
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = Color.Unspecified
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun HashCheckFailedIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Report,
|
||||||
|
contentDescription = stringResource(id = R.string.hash_verification_failed),
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = Color.Red
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LikedIcon(iconSize: Dp) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_liked),
|
||||||
|
null,
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = Color.Unspecified
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LikeIcon(iconSize: Dp, grayTint: Color) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_like),
|
||||||
|
null,
|
||||||
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
|
tint = grayTint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun RepostedIcon(modifier: Modifier, tint: Color = Color.Unspecified) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_retweeted),
|
||||||
|
null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LightningAddressIcon(modifier: Modifier, tint: Color = Color.Unspecified) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Bolt,
|
||||||
|
contentDescription = stringResource(R.string.lightning_address),
|
||||||
|
tint = tint,
|
||||||
|
modifier = modifier
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ZappedIcon(iconSize: Dp) {
|
||||||
|
ZappedIcon(modifier = remember(iconSize) { Modifier.size(iconSize) })
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ZappedIcon(modifier: Modifier) {
|
||||||
|
ZapIcon(modifier = modifier, BitcoinOrange)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ZapIcon(iconSize: Dp, tint: Color = Color.Unspecified) {
|
||||||
|
ZapIcon(modifier = remember(iconSize) { Modifier.size(iconSize) }, tint)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ZapIcon(modifier: Modifier, tint: Color = Color.Unspecified) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Bolt,
|
||||||
|
contentDescription = stringResource(R.string.zaps),
|
||||||
|
tint = tint,
|
||||||
|
modifier = modifier
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ExpandLessIcon(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.ExpandLess,
|
||||||
|
null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = MaterialTheme.colors.subtleButton
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ExpandMoreIcon(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.ExpandMore,
|
||||||
|
null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = MaterialTheme.colors.subtleButton
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun CommentIcon(iconSize: Dp, tint: Color) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_comment),
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = remember { Modifier.size(iconSize) },
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ViewCountIcon(iconSize: Dp, tint: Color = Color.Unspecified) {
|
||||||
|
ViewCountIcon(remember { Modifier.size(iconSize) }, tint)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ViewCountIcon(modifier: Modifier, tint: Color = Color.Unspecified) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Outlined.BarChart,
|
||||||
|
null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PollIcon() {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_poll),
|
||||||
|
null,
|
||||||
|
modifier = Size20Modifier,
|
||||||
|
tint = MaterialTheme.colors.onBackground
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun RegularPostIcon() {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_lists),
|
||||||
|
null,
|
||||||
|
modifier = Size20Modifier,
|
||||||
|
tint = MaterialTheme.colors.onBackground
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun CancelIcon() {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Cancel,
|
||||||
|
null,
|
||||||
|
modifier = Size30Modifier,
|
||||||
|
tint = MaterialTheme.colors.placeholderText
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun CloseIcon() {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(id = R.drawable.ic_close),
|
||||||
|
contentDescription = stringResource(id = R.string.cancel),
|
||||||
|
modifier = Size20Modifier,
|
||||||
|
tint = Color.White
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun MutedIcon() {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.VolumeOff,
|
||||||
|
contentDescription = stringResource(id = R.string.muted_button),
|
||||||
|
tint = MaterialTheme.colors.onBackground,
|
||||||
|
modifier = Size30Modifier
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun MuteIcon() {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.VolumeUp,
|
||||||
|
contentDescription = stringResource(id = R.string.mute_button),
|
||||||
|
tint = MaterialTheme.colors.onBackground,
|
||||||
|
modifier = Size30Modifier
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SearchIcon(modifier: Modifier, tint: Color = Color.Unspecified) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_search),
|
||||||
|
contentDescription = stringResource(id = R.string.search_button),
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PlayIcon(modifier: Modifier, tint: Color) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Outlined.PlayCircle,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PinIcon(modifier: Modifier, tint: Color) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.PushPin,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ClearTextIcon() {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Clear,
|
||||||
|
contentDescription = stringResource(R.string.clear)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LinkIcon(modifier: Modifier, tint: Color) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Link,
|
||||||
|
contentDescription = stringResource(R.string.website),
|
||||||
|
modifier = modifier,
|
||||||
|
tint = tint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun VerticalDotsIcon() {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.MoreVert,
|
||||||
|
null,
|
||||||
|
modifier = Size15Modifier,
|
||||||
|
tint = MaterialTheme.colors.placeholderText
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun NIP05CheckingIcon(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Downloading,
|
||||||
|
contentDescription = stringResource(id = R.string.nip05_checking),
|
||||||
|
modifier = modifier,
|
||||||
|
tint = Color.Yellow
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun NIP05VerifiedIcon(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.nip_05_light),
|
||||||
|
contentDescription = stringResource(id = R.string.nip05_verified),
|
||||||
|
modifier = modifier,
|
||||||
|
tint = Color.Unspecified
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun NIP05FailedVerification(modifier: Modifier) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Report,
|
||||||
|
contentDescription = stringResource(id = R.string.nip05_failed),
|
||||||
|
modifier = modifier,
|
||||||
|
tint = Color.Red
|
||||||
|
)
|
||||||
|
}
|
@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@ -24,9 +23,7 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.compositeOver
|
import androidx.compose.ui.graphics.compositeOver
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.R
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.MessageSetCard
|
import com.vitorpamplona.amethyst.ui.screen.MessageSetCard
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.theme.newItemBackgroundColor
|
import com.vitorpamplona.amethyst.ui.theme.newItemBackgroundColor
|
||||||
@ -94,7 +91,21 @@ fun MessageSetCompose(messageSetCard: MessageSetCard, routeForLastRead: String,
|
|||||||
|
|
||||||
Column(columnModifier) {
|
Column(columnModifier) {
|
||||||
Row(Modifier.fillMaxWidth()) {
|
Row(Modifier.fillMaxWidth()) {
|
||||||
MessageIcon()
|
Box(
|
||||||
|
modifier = remember {
|
||||||
|
Modifier
|
||||||
|
.width(55.dp)
|
||||||
|
.padding(top = 5.dp, end = 5.dp)
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
MessageIcon(
|
||||||
|
remember {
|
||||||
|
Modifier
|
||||||
|
.size(16.dp)
|
||||||
|
.align(Alignment.TopEnd)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
Column(modifier = remember { Modifier.padding(start = 10.dp) }) {
|
Column(modifier = remember { Modifier.padding(start = 10.dp) }) {
|
||||||
NoteCompose(
|
NoteCompose(
|
||||||
@ -113,25 +124,3 @@ fun MessageSetCompose(messageSetCard: MessageSetCard, routeForLastRead: String,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun MessageIcon() {
|
|
||||||
Box(
|
|
||||||
modifier = remember {
|
|
||||||
Modifier
|
|
||||||
.width(55.dp)
|
|
||||||
.padding(top = 5.dp, end = 5.dp)
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_dm),
|
|
||||||
null,
|
|
||||||
modifier = remember {
|
|
||||||
Modifier
|
|
||||||
.size(16.dp)
|
|
||||||
.align(Alignment.TopEnd)
|
|
||||||
},
|
|
||||||
tint = MaterialTheme.colors.primary
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -17,11 +17,8 @@ import androidx.compose.foundation.layout.padding
|
|||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@ -38,7 +35,6 @@ import androidx.compose.ui.draw.clip
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.compositeOver
|
import androidx.compose.ui.graphics.compositeOver
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.SpanStyle
|
import androidx.compose.ui.text.SpanStyle
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
@ -61,11 +57,11 @@ import com.vitorpamplona.amethyst.ui.screen.CombinedZap
|
|||||||
import com.vitorpamplona.amethyst.ui.screen.MultiSetCard
|
import com.vitorpamplona.amethyst.ui.screen.MultiSetCard
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.showAmountAxis
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.showAmountAxis
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
|
||||||
import com.vitorpamplona.amethyst.ui.theme.NotificationIconModifier
|
import com.vitorpamplona.amethyst.ui.theme.NotificationIconModifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.NotificationIconModifierSmaller
|
import com.vitorpamplona.amethyst.ui.theme.NotificationIconModifierSmaller
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size10dp
|
import com.vitorpamplona.amethyst.ui.theme.Size10dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size18dp
|
import com.vitorpamplona.amethyst.ui.theme.Size18dp
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size19dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size25dp
|
import com.vitorpamplona.amethyst.ui.theme.Size25dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size35Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size35Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size35dp
|
import com.vitorpamplona.amethyst.ui.theme.Size35dp
|
||||||
@ -238,13 +234,7 @@ fun RenderLikeGallery(
|
|||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
when (val shortReaction = reactionType) {
|
when (val shortReaction = reactionType) {
|
||||||
"+" -> Icon(
|
"+" -> LikedIcon(Size18dp)
|
||||||
painter = painterResource(R.drawable.ic_liked),
|
|
||||||
null,
|
|
||||||
modifier = modifier.size(Size18dp),
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
|
|
||||||
"-" -> Text(text = "\uD83D\uDC4E", modifier = modifier)
|
"-" -> Text(text = "\uD83D\uDC4E", modifier = modifier)
|
||||||
else -> Text(text = shortReaction, modifier = modifier)
|
else -> Text(text = shortReaction, modifier = modifier)
|
||||||
}
|
}
|
||||||
@ -264,30 +254,20 @@ fun RenderZapGallery(
|
|||||||
accountViewModel: AccountViewModel
|
accountViewModel: AccountViewModel
|
||||||
) {
|
) {
|
||||||
Row(Modifier.fillMaxWidth()) {
|
Row(Modifier.fillMaxWidth()) {
|
||||||
ZapIcon()
|
Box(
|
||||||
|
modifier = WidthAuthorPictureModifier
|
||||||
|
) {
|
||||||
|
ZappedIcon(
|
||||||
|
modifier = remember {
|
||||||
|
Modifier.size(Size25dp).align(Alignment.TopEnd)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
AuthorGalleryZaps(zapEvents, backgroundColor, nav, accountViewModel)
|
AuthorGalleryZaps(zapEvents, backgroundColor, nav, accountViewModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun ZapIcon() {
|
|
||||||
Box(
|
|
||||||
modifier = WidthAuthorPictureModifier
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Bolt,
|
|
||||||
contentDescription = "Zaps",
|
|
||||||
tint = BitcoinOrange,
|
|
||||||
modifier =
|
|
||||||
Modifier
|
|
||||||
.size(Size25dp)
|
|
||||||
.align(Alignment.TopEnd)
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RenderBoostGallery(
|
fun RenderBoostGallery(
|
||||||
boostEvents: ImmutableList<Note>,
|
boostEvents: ImmutableList<Note>,
|
||||||
@ -300,15 +280,8 @@ fun RenderBoostGallery(
|
|||||||
Box(
|
Box(
|
||||||
modifier = NotificationIconModifierSmaller
|
modifier = NotificationIconModifierSmaller
|
||||||
) {
|
) {
|
||||||
Icon(
|
RepostedIcon(
|
||||||
painter = painterResource(R.drawable.ic_retweeted),
|
modifier = remember { Modifier.size(Size19dp).align(Alignment.TopEnd) }
|
||||||
null,
|
|
||||||
modifier = remember {
|
|
||||||
Modifier
|
|
||||||
.size(19.dp)
|
|
||||||
.align(Alignment.TopEnd)
|
|
||||||
},
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,13 +6,8 @@ import androidx.compose.foundation.layout.Row
|
|||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.text.ClickableText
|
import androidx.compose.foundation.text.ClickableText
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.LocalTextStyle
|
import androidx.compose.material.LocalTextStyle
|
||||||
import androidx.compose.material.MaterialTheme
|
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Downloading
|
|
||||||
import androidx.compose.material.icons.filled.Report
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
@ -23,21 +18,22 @@ import androidx.compose.runtime.mutableStateOf
|
|||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.platform.LocalUriHandler
|
import androidx.compose.ui.platform.LocalUriHandler
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.map
|
import androidx.lifecycle.map
|
||||||
import com.vitorpamplona.amethyst.R
|
|
||||||
import com.vitorpamplona.amethyst.model.Note
|
import com.vitorpamplona.amethyst.model.Note
|
||||||
import com.vitorpamplona.amethyst.model.TimeUtils
|
import com.vitorpamplona.amethyst.model.TimeUtils
|
||||||
import com.vitorpamplona.amethyst.model.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.UserMetadata
|
import com.vitorpamplona.amethyst.model.UserMetadata
|
||||||
import com.vitorpamplona.amethyst.service.Nip05Verifier
|
import com.vitorpamplona.amethyst.service.Nip05Verifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Nip05
|
import com.vitorpamplona.amethyst.ui.note.NIP05CheckingIcon
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.note.NIP05FailedVerification
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.NIP05VerifiedIcon
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.NIP05IconSize
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Nip05EmailColor
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size16Modifier
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@ -152,52 +148,31 @@ private fun DisplayNIP05(
|
|||||||
if (user != "_") {
|
if (user != "_") {
|
||||||
Text(
|
Text(
|
||||||
text = remember(nip05) { AnnotatedString(user) },
|
text = remember(nip05) { AnnotatedString(user) },
|
||||||
color = MaterialTheme.colors.placeholderText,
|
color = Nip05EmailColor,
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
NIP05VerifiedSymbol(nip05Verified)
|
NIP05VerifiedSymbol(nip05Verified, NIP05IconSize)
|
||||||
|
|
||||||
ClickableText(
|
ClickableText(
|
||||||
text = remember(nip05) { AnnotatedString(domain) },
|
text = remember(nip05) { AnnotatedString(domain) },
|
||||||
onClick = { runCatching { uri.openUri("https://$domain") } },
|
onClick = { runCatching { uri.openUri("https://$domain") } },
|
||||||
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary.copy(0.52f)),
|
style = LocalTextStyle.current.copy(color = Nip05EmailColor),
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Visible
|
overflow = TextOverflow.Visible
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun NIP05VerifiedSymbol(nip05Verified: MutableState<Boolean?>) {
|
private fun NIP05VerifiedSymbol(nip05Verified: MutableState<Boolean?>, modifier: Modifier) {
|
||||||
if (nip05Verified.value == null) {
|
Crossfade(targetState = nip05Verified.value) {
|
||||||
Icon(
|
when (it) {
|
||||||
tint = Color.Yellow,
|
null -> NIP05CheckingIcon(modifier = modifier)
|
||||||
imageVector = Icons.Default.Downloading,
|
true -> NIP05VerifiedIcon(modifier = modifier)
|
||||||
contentDescription = "Downloading",
|
false -> NIP05FailedVerification(modifier = modifier)
|
||||||
modifier = Modifier
|
}
|
||||||
.size(14.dp)
|
|
||||||
.padding(top = 1.dp)
|
|
||||||
)
|
|
||||||
} else if (nip05Verified.value == true) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_verified_transparent),
|
|
||||||
"Nostr Address Verified",
|
|
||||||
tint = Nip05.copy(0.52f),
|
|
||||||
modifier = Modifier
|
|
||||||
.size(14.dp)
|
|
||||||
.padding(top = 1.dp)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
Icon(
|
|
||||||
tint = Color.Red,
|
|
||||||
imageVector = Icons.Default.Report,
|
|
||||||
contentDescription = "Invalid Nostr Address",
|
|
||||||
modifier = Modifier
|
|
||||||
.size(14.dp)
|
|
||||||
.padding(top = 1.dp)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,31 +182,9 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
|
|
||||||
user.nip05()?.let { nip05 ->
|
user.nip05()?.let { nip05 ->
|
||||||
if (nip05.split("@").size <= 2) {
|
if (nip05.split("@").size <= 2) {
|
||||||
val nip05Verified by nip05VerificationAsAState(user.info!!, user.pubkeyHex)
|
val nip05Verified = nip05VerificationAsAState(user.info!!, user.pubkeyHex)
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
if (nip05Verified == null) {
|
NIP05VerifiedSymbol(nip05Verified, Size16Modifier)
|
||||||
Icon(
|
|
||||||
tint = Color.Yellow,
|
|
||||||
imageVector = Icons.Default.Downloading,
|
|
||||||
contentDescription = "Downloading",
|
|
||||||
modifier = Modifier.size(16.dp)
|
|
||||||
)
|
|
||||||
} else if (nip05Verified == true) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_verified_transparent),
|
|
||||||
"NIP-05 Verified",
|
|
||||||
tint = Nip05,
|
|
||||||
modifier = Modifier.size(16.dp)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
Icon(
|
|
||||||
tint = Color.Red,
|
|
||||||
imageVector = Icons.Default.Report,
|
|
||||||
contentDescription = "Invalid Nip05",
|
|
||||||
modifier = Modifier.size(16.dp)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
var domainPadStart = 5.dp
|
var domainPadStart = 5.dp
|
||||||
|
|
||||||
val (user, domain) = remember(nip05) {
|
val (user, domain) = remember(nip05) {
|
||||||
@ -246,6 +199,7 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
if (user != "_") {
|
if (user != "_") {
|
||||||
Text(
|
Text(
|
||||||
text = remember { AnnotatedString(user + "@") },
|
text = remember { AnnotatedString(user + "@") },
|
||||||
|
color = Nip05EmailColor,
|
||||||
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = 5.dp),
|
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = 5.dp),
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
@ -256,7 +210,7 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
ClickableText(
|
ClickableText(
|
||||||
text = AnnotatedString(domain),
|
text = AnnotatedString(domain),
|
||||||
onClick = { nip05.let { runCatching { uri.openUri("https://${it.split("@")[1]}") } } },
|
onClick = { nip05.let { runCatching { uri.openUri("https://${it.split("@")[1]}") } } },
|
||||||
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary),
|
style = LocalTextStyle.current.copy(color = Nip05EmailColor),
|
||||||
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = domainPadStart),
|
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = domainPadStart),
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
|
@ -29,17 +29,11 @@ import androidx.compose.foundation.text.ClickableText
|
|||||||
import androidx.compose.material.Button
|
import androidx.compose.material.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material.ButtonDefaults
|
||||||
import androidx.compose.material.Divider
|
import androidx.compose.material.Divider
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.LocalTextStyle
|
import androidx.compose.material.LocalTextStyle
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.darkColors
|
import androidx.compose.material.darkColors
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
|
||||||
import androidx.compose.material.icons.filled.Link
|
|
||||||
import androidx.compose.material.icons.filled.MoreVert
|
|
||||||
import androidx.compose.material.icons.filled.PushPin
|
|
||||||
import androidx.compose.material.lightColors
|
import androidx.compose.material.lightColors
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
@ -153,7 +147,6 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.JoinCommunityButton
|
|||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.LeaveCommunityButton
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.LeaveCommunityButton
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.LiveFlag
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.LiveFlag
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.ScheduledFlag
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.ScheduledFlag
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
||||||
import com.vitorpamplona.amethyst.ui.theme.DividerThickness
|
import com.vitorpamplona.amethyst.ui.theme.DividerThickness
|
||||||
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
|
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
|
||||||
@ -164,6 +157,8 @@ import com.vitorpamplona.amethyst.ui.theme.HalfStartPadding
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.HalfVertSpacer
|
import com.vitorpamplona.amethyst.ui.theme.HalfVertSpacer
|
||||||
import com.vitorpamplona.amethyst.ui.theme.QuoteBorder
|
import com.vitorpamplona.amethyst.ui.theme.QuoteBorder
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size15Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size15Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size16Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size24Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size24Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size25dp
|
import com.vitorpamplona.amethyst.ui.theme.Size25dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size30Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size30Modifier
|
||||||
@ -1431,12 +1426,7 @@ fun RenderAppDefinition(
|
|||||||
val website = remember(it) { it.website }
|
val website = remember(it) { it.website }
|
||||||
if (!website.isNullOrEmpty()) {
|
if (!website.isNullOrEmpty()) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
Icon(
|
LinkIcon(Size16Modifier, MaterialTheme.colors.placeholderText)
|
||||||
tint = MaterialTheme.colors.placeholderText,
|
|
||||||
imageVector = Icons.Default.Link,
|
|
||||||
contentDescription = stringResource(R.string.website),
|
|
||||||
modifier = Modifier.size(16.dp)
|
|
||||||
)
|
|
||||||
|
|
||||||
ClickableText(
|
ClickableText(
|
||||||
text = AnnotatedString(website.removePrefix("https://")),
|
text = AnnotatedString(website.removePrefix("https://")),
|
||||||
@ -2182,12 +2172,7 @@ fun RenderPinListEvent(
|
|||||||
FlowRow(modifier = Modifier.padding(top = 5.dp)) {
|
FlowRow(modifier = Modifier.padding(top = 5.dp)) {
|
||||||
pinsToShow.forEach { pin ->
|
pinsToShow.forEach { pin ->
|
||||||
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = CenterVertically) {
|
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = CenterVertically) {
|
||||||
Icon(
|
PinIcon(modifier = Size15Modifier, tint = MaterialTheme.colors.onBackground.copy(0.32f))
|
||||||
imageVector = Icons.Default.PushPin,
|
|
||||||
contentDescription = null,
|
|
||||||
tint = MaterialTheme.colors.onBackground.copy(0.32f),
|
|
||||||
modifier = Modifier.size(15.dp)
|
|
||||||
)
|
|
||||||
|
|
||||||
Spacer(modifier = Modifier.width(5.dp))
|
Spacer(modifier = Modifier.width(5.dp))
|
||||||
|
|
||||||
@ -2500,16 +2485,6 @@ fun MoreOptionsButton(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun VerticalDotsIcon() {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.MoreVert,
|
|
||||||
null,
|
|
||||||
modifier = Size15Modifier,
|
|
||||||
tint = MaterialTheme.colors.placeholderText
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TimeAgo(note: Note) {
|
fun TimeAgo(note: Note) {
|
||||||
val time = remember(note) { note.createdAt() } ?: return
|
val time = remember(note) { note.createdAt() } ?: return
|
||||||
@ -3025,19 +3000,9 @@ private fun RenderPledgeAmount(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hasPledge) {
|
if (hasPledge) {
|
||||||
Icon(
|
ZappedIcon(modifier = Size20Modifier)
|
||||||
imageVector = Icons.Default.Bolt,
|
|
||||||
contentDescription = stringResource(R.string.zaps),
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = BitcoinOrange
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
ZapIcon(modifier = Size20Modifier, MaterialTheme.colors.placeholderText)
|
||||||
imageVector = Icons.Default.Bolt,
|
|
||||||
contentDescription = stringResource(R.string.zaps),
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = MaterialTheme.colors.placeholderText
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
|
@ -38,12 +38,6 @@ import androidx.compose.material.LinearProgressIndicator
|
|||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.ProgressIndicatorDefaults
|
import androidx.compose.material.ProgressIndicatorDefaults
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
|
||||||
import androidx.compose.material.icons.filled.ExpandLess
|
|
||||||
import androidx.compose.material.icons.filled.ExpandMore
|
|
||||||
import androidx.compose.material.icons.outlined.BarChart
|
|
||||||
import androidx.compose.material.icons.outlined.Bolt
|
|
||||||
import androidx.compose.material.ripple.rememberRipple
|
import androidx.compose.material.ripple.rememberRipple
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@ -88,7 +82,6 @@ import com.vitorpamplona.amethyst.ui.components.InLineIconRenderer
|
|||||||
import com.vitorpamplona.amethyst.ui.components.TextType
|
import com.vitorpamplona.amethyst.ui.components.TextType
|
||||||
import com.vitorpamplona.amethyst.ui.screen.CombinedZap
|
import com.vitorpamplona.amethyst.ui.screen.CombinedZap
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
||||||
import com.vitorpamplona.amethyst.ui.theme.DarkerGreen
|
import com.vitorpamplona.amethyst.ui.theme.DarkerGreen
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Font14SP
|
import com.vitorpamplona.amethyst.ui.theme.Font14SP
|
||||||
@ -112,7 +105,6 @@ import com.vitorpamplona.amethyst.ui.theme.TinyBorders
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink
|
import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderTextColorFilter
|
import com.vitorpamplona.amethyst.ui.theme.placeholderTextColorFilter
|
||||||
import com.vitorpamplona.amethyst.ui.theme.subtleButton
|
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import kotlinx.collections.immutable.toImmutableMap
|
import kotlinx.collections.immutable.toImmutableMap
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@ -405,19 +397,9 @@ private fun RenderShowIndividualReactionsButton(wantsToSeeReactions: MutableStat
|
|||||||
) {
|
) {
|
||||||
Crossfade(targetState = wantsToSeeReactions.value) {
|
Crossfade(targetState = wantsToSeeReactions.value) {
|
||||||
if (it) {
|
if (it) {
|
||||||
Icon(
|
ExpandLessIcon(modifier = Size22Modifier)
|
||||||
imageVector = Icons.Default.ExpandLess,
|
|
||||||
null,
|
|
||||||
modifier = Size22Modifier,
|
|
||||||
tint = MaterialTheme.colors.subtleButton
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
ExpandMoreIcon(modifier = Size22Modifier)
|
||||||
imageVector = Icons.Default.ExpandMore,
|
|
||||||
null,
|
|
||||||
modifier = Size22Modifier,
|
|
||||||
tint = MaterialTheme.colors.subtleButton
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -558,12 +540,7 @@ fun ReplyReaction(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Icon(
|
CommentIcon(iconSize, grayTint)
|
||||||
painter = painterResource(R.drawable.ic_comment),
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = remember { Modifier.size(iconSize) },
|
|
||||||
tint = grayTint
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showCounter) {
|
if (showCounter) {
|
||||||
@ -704,12 +681,7 @@ fun BoostIcon(baseNote: Note, iconSize: Dp = Size20dp, grayTint: Color, accountV
|
|||||||
Modifier.size(iconSize)
|
Modifier.size(iconSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
Icon(
|
RepostedIcon(iconModifier, iconTint)
|
||||||
painter = painterResource(R.drawable.ic_retweeted),
|
|
||||||
null,
|
|
||||||
modifier = iconModifier,
|
|
||||||
tint = iconTint
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -819,7 +791,7 @@ fun LikeIcon(
|
|||||||
if (value != null) {
|
if (value != null) {
|
||||||
RenderReactionType(value, iconSize, iconFontSize)
|
RenderReactionType(value, iconSize, iconFontSize)
|
||||||
} else {
|
} else {
|
||||||
RenderLikeIcon(iconSize, grayTint)
|
LikeIcon(iconSize, grayTint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -836,33 +808,12 @@ private fun WatchReactionTypeForNote(baseNote: Note, accountViewModel: AccountVi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun RenderLikeIcon(
|
|
||||||
iconSize: Dp = Size20dp,
|
|
||||||
grayTint: Color
|
|
||||||
) {
|
|
||||||
val iconModifier = remember {
|
|
||||||
Modifier.size(iconSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_like),
|
|
||||||
null,
|
|
||||||
modifier = iconModifier,
|
|
||||||
tint = grayTint
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun RenderReactionType(
|
private fun RenderReactionType(
|
||||||
reactionType: String,
|
reactionType: String,
|
||||||
iconSize: Dp = Size20dp,
|
iconSize: Dp = Size20dp,
|
||||||
iconFontSize: TextUnit
|
iconFontSize: TextUnit
|
||||||
) {
|
) {
|
||||||
val iconModifier = remember {
|
|
||||||
Modifier.size(iconSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reactionType.startsWith(":")) {
|
if (reactionType.startsWith(":")) {
|
||||||
val noStartColon = reactionType.removePrefix(":")
|
val noStartColon = reactionType.removePrefix(":")
|
||||||
val url = noStartColon.substringAfter(":")
|
val url = noStartColon.substringAfter(":")
|
||||||
@ -879,15 +830,7 @@ private fun RenderReactionType(
|
|||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
when (reactionType) {
|
when (reactionType) {
|
||||||
"+" -> {
|
"+" -> LikedIcon(iconSize)
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_liked),
|
|
||||||
null,
|
|
||||||
modifier = iconModifier,
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
"-" -> Text(text = "\uD83D\uDC4E", fontSize = iconFontSize)
|
"-" -> Text(text = "\uD83D\uDC4E", fontSize = iconFontSize)
|
||||||
else -> Text(text = reactionType, fontSize = iconFontSize)
|
else -> Text(text = reactionType, fontSize = iconFontSize)
|
||||||
}
|
}
|
||||||
@ -1151,19 +1094,9 @@ private fun ZapIcon(
|
|||||||
|
|
||||||
Crossfade(targetState = wasZappedByLoggedInUser) {
|
Crossfade(targetState = wasZappedByLoggedInUser) {
|
||||||
if (it.value) {
|
if (it.value) {
|
||||||
Icon(
|
ZappedIcon(iconSize)
|
||||||
imageVector = Icons.Default.Bolt,
|
|
||||||
contentDescription = stringResource(R.string.zaps),
|
|
||||||
modifier = remember { Modifier.size(iconSize) },
|
|
||||||
tint = BitcoinOrange
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
ZapIcon(iconSize, grayTint)
|
||||||
imageVector = Icons.Outlined.Bolt,
|
|
||||||
contentDescription = stringResource(id = R.string.zaps),
|
|
||||||
modifier = remember { Modifier.size(iconSize) },
|
|
||||||
tint = grayTint
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1219,27 +1152,10 @@ fun ViewCountReaction(
|
|||||||
numberSize: Dp = Size24dp,
|
numberSize: Dp = Size24dp,
|
||||||
viewCountColorFilter: ColorFilter
|
viewCountColorFilter: ColorFilter
|
||||||
) {
|
) {
|
||||||
DrawViewCountIcon(barChartSize, grayTint)
|
ViewCountIcon(barChartSize, grayTint)
|
||||||
DrawViewCount(note, numberSize, viewCountColorFilter)
|
DrawViewCount(note, numberSize, viewCountColorFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun DrawViewCountIcon(
|
|
||||||
barChartSize: Dp = Size19dp,
|
|
||||||
grayTint: Color
|
|
||||||
) {
|
|
||||||
val iconButtonModifier = remember {
|
|
||||||
Modifier.size(barChartSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Outlined.BarChart,
|
|
||||||
null,
|
|
||||||
modifier = iconButtonModifier,
|
|
||||||
tint = grayTint
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun DrawViewCount(
|
private fun DrawViewCount(
|
||||||
note: Note,
|
note: Note,
|
||||||
|
@ -13,7 +13,6 @@ import androidx.compose.foundation.shape.CircleShape
|
|||||||
import androidx.compose.material.Divider
|
import androidx.compose.material.Divider
|
||||||
import androidx.compose.material.DropdownMenu
|
import androidx.compose.material.DropdownMenu
|
||||||
import androidx.compose.material.DropdownMenuItem
|
import androidx.compose.material.DropdownMenuItem
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.ripple.rememberRipple
|
import androidx.compose.material.ripple.rememberRipple
|
||||||
@ -31,11 +30,9 @@ import androidx.compose.runtime.setValue
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalClipboardManager
|
import androidx.compose.ui.platform.LocalClipboardManager
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.semantics.Role
|
import androidx.compose.ui.semantics.Role
|
||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
@ -286,20 +283,6 @@ fun WatchUserFollows(userHex: String, accountViewModel: AccountViewModel, onFoll
|
|||||||
onFollowChanges(showFollowingMark)
|
onFollowChanges(showFollowingMark)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun FollowingIcon(iconSize: Dp) {
|
|
||||||
val modifier = remember {
|
|
||||||
Modifier.size(iconSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.verified_follow_shield),
|
|
||||||
contentDescription = stringResource(id = R.string.following),
|
|
||||||
modifier = modifier,
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
data class DropDownParams(
|
data class DropDownParams(
|
||||||
val isFollowingAuthor: Boolean,
|
val isFollowingAuthor: Boolean,
|
||||||
|
@ -5,12 +5,9 @@ import android.util.Log
|
|||||||
import androidx.compose.animation.Crossfade
|
import androidx.compose.animation.Crossfade
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.outlined.PlayCircle
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
@ -163,16 +160,8 @@ fun DrawPlayName(name: String) {
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DrawPlayNameIcon(onClick: () -> Unit) {
|
fun DrawPlayNameIcon(onClick: () -> Unit) {
|
||||||
IconButton(
|
IconButton(onClick = onClick, modifier = StdButtonSizeModifier) {
|
||||||
onClick = onClick,
|
PlayIcon(modifier = StdButtonSizeModifier, tint = MaterialTheme.colors.placeholderText)
|
||||||
modifier = StdButtonSizeModifier
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Outlined.PlayCircle,
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = StdButtonSizeModifier,
|
|
||||||
tint = MaterialTheme.colors.placeholderText
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,11 +7,7 @@ import androidx.compose.foundation.layout.Column
|
|||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
@ -23,12 +19,11 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.compositeOver
|
import androidx.compose.ui.graphics.compositeOver
|
||||||
import androidx.compose.ui.res.stringResource
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.R
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.ZapUserSetCard
|
import com.vitorpamplona.amethyst.ui.screen.ZapUserSetCard
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
import com.vitorpamplona.amethyst.ui.theme.Size25dp
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size55Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.newItemBackgroundColor
|
import com.vitorpamplona.amethyst.ui.theme.newItemBackgroundColor
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -75,17 +70,14 @@ fun ZapUserSetCompose(zapSetCard: ZapUserSetCard, isInnerNote: Boolean = false,
|
|||||||
// Draws the like picture outside the boosted card.
|
// Draws the like picture outside the boosted card.
|
||||||
if (!isInnerNote) {
|
if (!isInnerNote) {
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Size55Modifier
|
||||||
.width(55.dp)
|
|
||||||
.padding(0.dp)
|
|
||||||
) {
|
) {
|
||||||
Icon(
|
ZappedIcon(
|
||||||
imageVector = Icons.Default.Bolt,
|
remember {
|
||||||
contentDescription = stringResource(id = R.string.zaps),
|
Modifier
|
||||||
tint = BitcoinOrange,
|
.size(Size25dp)
|
||||||
modifier = Modifier
|
.align(Alignment.TopEnd)
|
||||||
.size(25.dp)
|
}
|
||||||
.align(Alignment.TopEnd)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@ import androidx.compose.foundation.shape.CircleShape
|
|||||||
import androidx.compose.foundation.text.ClickableText
|
import androidx.compose.foundation.text.ClickableText
|
||||||
import androidx.compose.material.*
|
import androidx.compose.material.*
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Bolt
|
|
||||||
import androidx.compose.material.icons.filled.ContentCopy
|
import androidx.compose.material.icons.filled.ContentCopy
|
||||||
import androidx.compose.material.icons.filled.EditNote
|
import androidx.compose.material.icons.filled.EditNote
|
||||||
import androidx.compose.material.icons.filled.Link
|
import androidx.compose.material.icons.filled.Link
|
||||||
@ -81,6 +80,7 @@ import com.vitorpamplona.amethyst.ui.components.figureOutMimeType
|
|||||||
import com.vitorpamplona.amethyst.ui.dal.UserProfileReportsFeedFilter
|
import com.vitorpamplona.amethyst.ui.dal.UserProfileReportsFeedFilter
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.ShowQRDialog
|
import com.vitorpamplona.amethyst.ui.navigation.ShowQRDialog
|
||||||
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.LightningAddressIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.LoadAddressableNote
|
import com.vitorpamplona.amethyst.ui.note.LoadAddressableNote
|
||||||
import com.vitorpamplona.amethyst.ui.screen.FeedState
|
import com.vitorpamplona.amethyst.ui.screen.FeedState
|
||||||
import com.vitorpamplona.amethyst.ui.screen.LnZapFeedView
|
import com.vitorpamplona.amethyst.ui.screen.LnZapFeedView
|
||||||
@ -97,8 +97,8 @@ import com.vitorpamplona.amethyst.ui.screen.RefreshingFeedUserFeedView
|
|||||||
import com.vitorpamplona.amethyst.ui.screen.RelayFeedView
|
import com.vitorpamplona.amethyst.ui.screen.RelayFeedView
|
||||||
import com.vitorpamplona.amethyst.ui.screen.RelayFeedViewModel
|
import com.vitorpamplona.amethyst.ui.screen.RelayFeedViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.UserFeedViewModel
|
import com.vitorpamplona.amethyst.ui.screen.UserFeedViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
|
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size16Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size35dp
|
import com.vitorpamplona.amethyst.ui.theme.Size35dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
@ -984,12 +984,7 @@ fun DisplayLNAddress(
|
|||||||
|
|
||||||
if (!lud16.isNullOrEmpty()) {
|
if (!lud16.isNullOrEmpty()) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
Icon(
|
LightningAddressIcon(modifier = Size16Modifier)
|
||||||
tint = BitcoinOrange,
|
|
||||||
imageVector = Icons.Default.Bolt,
|
|
||||||
contentDescription = stringResource(R.string.lightning_address),
|
|
||||||
modifier = Modifier.size(16.dp)
|
|
||||||
)
|
|
||||||
|
|
||||||
ClickableText(
|
ClickableText(
|
||||||
text = AnnotatedString(lud16),
|
text = AnnotatedString(lud16),
|
||||||
|
@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxHeight
|
|||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.LazyListState
|
import androidx.compose.foundation.lazy.LazyListState
|
||||||
import androidx.compose.foundation.lazy.itemsIndexed
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
@ -18,14 +17,11 @@ import androidx.compose.foundation.lazy.rememberLazyListState
|
|||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
import androidx.compose.material.Divider
|
import androidx.compose.material.Divider
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.TextField
|
import androidx.compose.material.TextField
|
||||||
import androidx.compose.material.TextFieldDefaults
|
import androidx.compose.material.TextFieldDefaults
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Clear
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
@ -41,7 +37,6 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.input.KeyboardCapitalization
|
import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||||
@ -62,10 +57,13 @@ import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
|||||||
import com.vitorpamplona.amethyst.ui.components.BundledUpdate
|
import com.vitorpamplona.amethyst.ui.components.BundledUpdate
|
||||||
import com.vitorpamplona.amethyst.ui.note.AboutDisplay
|
import com.vitorpamplona.amethyst.ui.note.AboutDisplay
|
||||||
import com.vitorpamplona.amethyst.ui.note.ChannelName
|
import com.vitorpamplona.amethyst.ui.note.ChannelName
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.ClearTextIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
||||||
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.SearchIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.UserCompose
|
import com.vitorpamplona.amethyst.ui.note.UserCompose
|
||||||
import com.vitorpamplona.amethyst.ui.note.UsernameDisplay
|
import com.vitorpamplona.amethyst.ui.note.UsernameDisplay
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
@ -288,12 +286,7 @@ private fun SearchTextField(
|
|||||||
capitalization = KeyboardCapitalization.Sentences
|
capitalization = KeyboardCapitalization.Sentences
|
||||||
),
|
),
|
||||||
leadingIcon = {
|
leadingIcon = {
|
||||||
Icon(
|
SearchIcon(modifier = Size20Modifier, Color.Unspecified)
|
||||||
painter = painterResource(R.drawable.ic_search),
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.size(20.dp),
|
|
||||||
tint = Color.Unspecified
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f, true)
|
.weight(1f, true)
|
||||||
@ -312,10 +305,7 @@ private fun SearchTextField(
|
|||||||
NostrSearchEventOrUserDataSource.clear()
|
NostrSearchEventOrUserDataSource.clear()
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Icon(
|
ClearTextIcon()
|
||||||
imageVector = Icons.Default.Clear,
|
|
||||||
contentDescription = stringResource(R.string.clear)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -381,7 +371,7 @@ private fun DisplaySearchResults(
|
|||||||
channelPicture = item.profilePicture(),
|
channelPicture = item.profilePicture(),
|
||||||
channelTitle = {
|
channelTitle = {
|
||||||
Text(
|
Text(
|
||||||
"${item.toBestDisplayName()}",
|
item.toBestDisplayName(),
|
||||||
fontWeight = FontWeight.Bold
|
fontWeight = FontWeight.Bold
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
@ -12,7 +12,7 @@ val BitcoinOrange = Color(0xFFF7931A)
|
|||||||
val RoyalBlue = Color(0xFF4169E1)
|
val RoyalBlue = Color(0xFF4169E1)
|
||||||
|
|
||||||
val Following = Color(0xFF03DAC5)
|
val Following = Color(0xFF03DAC5)
|
||||||
val Nip05 = Color(0xFF01BAFF)
|
val Nip05EmailColor = Color(0xFFb198ec)
|
||||||
val FollowsFollow = Color.Yellow
|
val FollowsFollow = Color.Yellow
|
||||||
val NIP05Verified = Color.Blue
|
val NIP05Verified = Color.Blue
|
||||||
|
|
||||||
|
@ -72,12 +72,15 @@ val StdPadding = Modifier.padding(10.dp)
|
|||||||
val Size6Modifier = Modifier.size(6.dp)
|
val Size6Modifier = Modifier.size(6.dp)
|
||||||
val Size10Modifier = Modifier.size(10.dp)
|
val Size10Modifier = Modifier.size(10.dp)
|
||||||
val Size15Modifier = Modifier.size(15.dp)
|
val Size15Modifier = Modifier.size(15.dp)
|
||||||
|
val Size16Modifier = Modifier.size(16.dp)
|
||||||
val Size18Modifier = Modifier.size(18.dp)
|
val Size18Modifier = Modifier.size(18.dp)
|
||||||
val Size20Modifier = Modifier.size(20.dp)
|
val Size20Modifier = Modifier.size(20.dp)
|
||||||
val Size22Modifier = Modifier.size(22.dp)
|
val Size22Modifier = Modifier.size(22.dp)
|
||||||
val Size24Modifier = Modifier.size(24.dp)
|
val Size24Modifier = Modifier.size(24.dp)
|
||||||
|
val Size26Modifier = Modifier.size(26.dp)
|
||||||
val Size30Modifier = Modifier.size(30.dp)
|
val Size30Modifier = Modifier.size(30.dp)
|
||||||
val Size35Modifier = Modifier.size(35.dp)
|
val Size35Modifier = Modifier.size(35.dp)
|
||||||
|
val Size50Modifier = Modifier.size(50.dp)
|
||||||
val Size55Modifier = Modifier.size(55.dp)
|
val Size55Modifier = Modifier.size(55.dp)
|
||||||
|
|
||||||
val TinyBorders = Modifier.padding(2.dp)
|
val TinyBorders = Modifier.padding(2.dp)
|
||||||
@ -112,3 +115,6 @@ val NotificationIconModifierSmaller = Modifier.width(55.dp).padding(end = 4.dp)
|
|||||||
|
|
||||||
val ZapPictureCommentModifier = Modifier.height(35.dp).widthIn(min = 35.dp)
|
val ZapPictureCommentModifier = Modifier.height(35.dp).widthIn(min = 35.dp)
|
||||||
val ChatHeadlineBorders = Modifier.padding(start = 12.dp, end = 12.dp, top = 10.dp)
|
val ChatHeadlineBorders = Modifier.padding(start = 12.dp, end = 12.dp, top = 10.dp)
|
||||||
|
|
||||||
|
val VolumeBottomIconSize = Modifier.size(70.dp).padding(10.dp)
|
||||||
|
val NIP05IconSize = Modifier.size(14.dp).padding(top = 1.dp, start = 1.dp, end = 1.dp)
|
||||||
|
@ -89,9 +89,6 @@ private val LightReplyItemBackground = LightColorPalette.onSurface.copy(alpha =
|
|||||||
private val DarkZapraiserBackground = BitcoinOrange.copy(0.52f).compositeOver(DarkColorPalette.background)
|
private val DarkZapraiserBackground = BitcoinOrange.copy(0.52f).compositeOver(DarkColorPalette.background)
|
||||||
private val LightZapraiserBackground = BitcoinOrange.copy(0.52f).compositeOver(LightColorPalette.background)
|
private val LightZapraiserBackground = BitcoinOrange.copy(0.52f).compositeOver(LightColorPalette.background)
|
||||||
|
|
||||||
private val DarkImageVerifier = Nip05.copy(0.52f).compositeOver(DarkColorPalette.background)
|
|
||||||
private val LightImageVerifier = Nip05.copy(0.52f).compositeOver(LightColorPalette.background)
|
|
||||||
|
|
||||||
private val DarkOverPictureBackground = DarkColorPalette.background.copy(0.62f)
|
private val DarkOverPictureBackground = DarkColorPalette.background.copy(0.62f)
|
||||||
private val LightOverPictureBackground = LightColorPalette.background.copy(0.62f)
|
private val LightOverPictureBackground = LightColorPalette.background.copy(0.62f)
|
||||||
|
|
||||||
@ -278,9 +275,6 @@ val Colors.subtleBorder: Color
|
|||||||
val Colors.subtleButton: Color
|
val Colors.subtleButton: Color
|
||||||
get() = if (isLight) LightSubtleButton else DarkSubtleButton
|
get() = if (isLight) LightSubtleButton else DarkSubtleButton
|
||||||
|
|
||||||
val Colors.hashVerified: Color
|
|
||||||
get() = if (isLight) LightImageVerifier else DarkImageVerifier
|
|
||||||
|
|
||||||
val Colors.overPictureBackground: Color
|
val Colors.overPictureBackground: Color
|
||||||
get() = if (isLight) LightOverPictureBackground else DarkOverPictureBackground
|
get() = if (isLight) LightOverPictureBackground else DarkOverPictureBackground
|
||||||
|
|
||||||
|
21
app/src/main/res/drawable/following.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="30dp"
|
||||||
|
android:height="30dp"
|
||||||
|
android:viewportWidth="30"
|
||||||
|
android:viewportHeight="30">
|
||||||
|
<path
|
||||||
|
android:pathData="M27.8,12.8L27.8,12.8C27.8,5 27.2,0 24.4,0S15,0 15,0S8.4,0 5.6,0C2.8,0 2.2,5 2.2,12.8v0l0,0c0,0 0,0 0,0C2.2,24.9 15,30 15,30S27.8,24.9 27.8,12.8C27.8,12.8 27.8,12.8 27.8,12.8L27.8,12.8z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15.1,24l-0.5,-0.2c-0.2,-0.1 -4.5,-2 -6.8,-6.4c-0.3,-0.6 -0.1,-1.4 0.6,-1.7c0.6,-0.3 1.4,-0.1 1.7,0.6c1.4,2.8 3.9,4.4 5,4.9c1.1,-0.6 3.6,-2.2 5,-4.9c0.3,-0.6 1.1,-0.9 1.7,-0.6c0.6,0.3 0.9,1.1 0.6,1.7c-2.2,4.4 -6.6,6.3 -6.8,6.4L15.1,24z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15.1,24.3l-0.6,-0.3c-0.2,-0.1 -4.6,-2 -6.9,-6.5c-0.2,-0.4 -0.2,-0.8 -0.1,-1.2c0.1,-0.4 0.4,-0.7 0.8,-0.9c0.4,-0.2 0.8,-0.2 1.2,-0.1c0.4,0.1 0.7,0.4 0.9,0.8c1.3,2.6 3.7,4.2 4.8,4.8c1.1,-0.6 3.5,-2.2 4.8,-4.8c0.2,-0.4 0.5,-0.6 0.9,-0.8c0.4,-0.1 0.8,-0.1 1.2,0.1c0.4,0.2 0.6,0.5 0.8,0.9c0.1,0.4 0.1,0.8 -0.1,1.2c-2.3,4.5 -6.7,6.4 -6.9,6.5L15.1,24.3zM8.9,15.8c-0.2,0 -0.3,0 -0.5,0.1C8.2,16 8,16.3 7.9,16.5c-0.1,0.3 -0.1,0.5 0.1,0.8c2.2,4.3 6.5,6.2 6.7,6.3l0.4,0.2l0.4,-0.2c0.2,-0.1 4.5,-2 6.7,-6.3c0.1,-0.2 0.1,-0.5 0.1,-0.8c-0.1,-0.3 -0.3,-0.5 -0.5,-0.6c-0.2,-0.1 -0.5,-0.1 -0.8,-0.1c-0.3,0.1 -0.5,0.3 -0.6,0.5c-1.4,2.8 -4,4.5 -5.1,5.1l-0.1,0.1l-0.1,-0.1c-1,-0.6 -3.6,-2.2 -5.1,-5.1c-0.1,-0.2 -0.3,-0.4 -0.6,-0.5C9.1,15.8 9,15.8 8.9,15.8z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15,15c-2.9,0 -5.2,-2.3 -5.2,-5.2s2.3,-5.2 5.2,-5.2s5.2,2.3 5.2,5.2S17.8,15 15,15zM15,7.2c-1.4,0 -2.6,1.2 -2.6,2.6s1.2,2.6 2.6,2.6s2.6,-1.2 2.6,-2.6S16.4,7.2 15,7.2z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15,15.2c-3,0 -5.4,-2.4 -5.4,-5.4S12,4.4 15,4.4s5.4,2.4 5.4,5.4S18,15.2 15,15.2zM15,4.9c-2.7,0 -4.9,2.2 -4.9,4.9s2.2,4.9 4.9,4.9c2.7,0 4.9,-2.2 4.9,-4.9S17.7,4.9 15,4.9zM15,12.6c-1.6,0 -2.9,-1.3 -2.9,-2.9s1.3,-2.9 2.9,-2.9c1.6,0 2.9,1.3 2.9,2.9S16.5,12.6 15,12.6zM15,7.4c-1.3,0 -2.4,1.1 -2.4,2.4s1.1,2.4 2.4,2.4c1.3,0 2.4,-1.1 2.4,-2.4S16.3,7.4 15,7.4z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
</vector>
|
23
app/src/main/res/drawable/nip_05.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="30dp"
|
||||||
|
android:height="30dp"
|
||||||
|
android:viewportWidth="30"
|
||||||
|
android:viewportHeight="30">
|
||||||
|
<path
|
||||||
|
android:pathData="M15,15m-15,0a15,15 0,1 1,30 0a15,15 0,1 1,-30 0"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15.3,19.5l-4.1,-3.7c-0.5,-0.5 -0.6,-1.3 -0.1,-1.8s1.3,-0.6 1.8,-0.1l2.1,1.9l3.4,-3.8c0.5,-0.5 1.3,-0.6 1.8,-0.1s0.6,1.3 0.1,1.8L15.3,19.5z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15.4,19.9L11.1,16c-0.6,-0.6 -0.7,-1.5 -0.1,-2.2c0.3,-0.3 0.7,-0.5 1.1,-0.5c0.4,0 0.8,0.1 1.1,0.4l2,1.8l3.3,-3.7c0.6,-0.6 1.5,-0.7 2.2,-0.1c0.3,0.3 0.5,0.6 0.5,1.1c0,0.4 -0.1,0.8 -0.4,1.1L15.4,19.9zM12.1,13.9L12.1,13.9c-0.3,0 -0.6,0.1 -0.8,0.3c-0.4,0.4 -0.3,1.1 0.1,1.5l3.9,3.5l5,-5.6c0.2,-0.2 0.3,-0.5 0.3,-0.7c0,-0.3 -0.1,-0.5 -0.3,-0.7c-0.4,-0.4 -1.1,-0.3 -1.5,0.1l-3.6,4l-2.4,-2.2C12.6,14 12.4,13.9 12.1,13.9z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15,4C9,4 4,8.9 4,15s4.9,11 11,11c0.7,0 1.3,-0.6 1.3,-1.3c0,-0.7 -0.6,-1.3 -1.3,-1.3c-4.6,0 -8.4,-3.8 -8.4,-8.4s3.8,-8.4 8.4,-8.4s8.4,3.8 8.4,8.4c0,2 -1.1,3.9 -2.5,4.5c-0.9,0.4 -1.8,0.1 -2.7,-0.7l0,0l-1.7,1.9c1.6,1.5 3.5,2 5.4,1.2c2.4,-1 4.1,-3.8 4.1,-6.9C25.9,8.9 21,4 15,4z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15,26.2c-6.2,0 -11.2,-5 -11.2,-11.2S8.8,3.8 15,3.8s11.2,5 11.2,11.2c0,3.1 -1.7,6.1 -4.2,7.1c-1.9,0.8 -4,0.3 -5.6,-1.3l-0.2,-0.2l2,-2.3l0.2,0.2l0,0c0.8,0.8 1.6,1 2.4,0.7c1.3,-0.6 2.3,-2.4 2.3,-4.2c0,-4.5 -3.7,-8.1 -8.1,-8.1c-4.5,-0.1 -8.2,3.6 -8.2,8.1s3.7,8.1 8.1,8.1c0.8,0 1.5,0.7 1.5,1.5C16.5,25.5 15.8,26.2 15,26.2zM15,4.3C9.1,4.3 4.3,9.1 4.3,15S9.1,25.7 15,25.7c0.6,0 1,-0.5 1,-1c0,-0.6 -0.5,-1 -1,-1c-4.8,0 -8.6,-3.9 -8.6,-8.6c0,-4.8 3.9,-8.6 8.6,-8.6s8.6,3.9 8.6,8.6c0,2.1 -1.1,4.1 -2.6,4.7c-0.9,0.4 -1.9,0.2 -2.8,-0.6l-1.4,1.4c1.5,1.3 3.3,1.7 4.9,1c2.3,-1 3.9,-3.7 3.9,-6.6C25.7,9.1 20.9,4.3 15,4.3z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
</vector>
|
||||||
|
|
||||||
|
|
12
app/src/main/res/drawable/nip_05_light.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="30dp"
|
||||||
|
android:height="30dp"
|
||||||
|
android:viewportWidth="30"
|
||||||
|
android:viewportHeight="30">
|
||||||
|
<path
|
||||||
|
android:pathData="m15.408,21.113 l-5.57,-5.026c-0.679,-0.679 -0.815,-1.766 -0.136,-2.445 0.679,-0.679 1.766,-0.815 2.445,-0.136L15,16.087 19.619,10.924c0.679,-0.679 1.766,-0.815 2.445,-0.136 0.679,0.679 0.815,1.766 0.136,2.445z"
|
||||||
|
android:fillColor="#b198ec"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M15,0.056C6.849,0.056 0.056,6.713 0.056,15c0,8.287 6.657,14.944 14.944,14.944 0.951,0 1.766,-0.815 1.766,-1.766 0,-0.951 -0.815,-1.766 -1.766,-1.766 -6.249,0 -11.411,-5.162 -11.411,-11.411 0,-6.249 5.162,-11.411 11.411,-11.411 6.249,0 11.411,5.162 11.411,11.411 0,2.717 -1.494,5.298 -3.396,6.113 -1.223,0.543 -2.445,0.136 -3.668,-0.951l0,0l-2.309,2.581c2.174,2.038 4.755,2.717 7.336,1.63C27.634,23.015 29.944,19.211 29.944,15 29.808,6.713 23.151,0.056 15,0.056Z"
|
||||||
|
android:fillColor="#b198ec"/>
|
||||||
|
</vector>
|
12
app/src/main/res/drawable/original.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="30dp"
|
||||||
|
android:height="30dp"
|
||||||
|
android:viewportWidth="30"
|
||||||
|
android:viewportHeight="30">
|
||||||
|
<path
|
||||||
|
android:pathData="M13.4,0.3c0.9,0.5 2.3,0.5 3.1,0c0.9,-0.5 2,-0.3 2.6,0.5s1.9,1.3 2.9,1.2c1,-0.1 2,0.5 2.2,1.5c0.3,1 1.2,1.9 2.2,2.2s1.6,1.3 1.5,2.2c-0.1,1 0.4,2.3 1.2,2.9c0.8,0.6 1,1.8 0.5,2.6c-0.5,0.9 -0.5,2.3 0,3.1c0.5,0.9 0.3,2 -0.5,2.6c-0.8,0.6 -1.3,1.9 -1.2,2.9c0.1,1 -0.5,2 -1.5,2.2c-1,0.3 -1.9,1.2 -2.2,2.2c-0.3,1 -1.3,1.6 -2.2,1.5c-1,-0.1 -2.3,0.4 -2.9,1.2c-0.6,0.8 -1.8,1 -2.6,0.5c-0.9,-0.5 -2.3,-0.5 -3.1,0c-0.9,0.5 -2,0.3 -2.6,-0.5c-0.6,-0.8 -1.9,-1.3 -2.9,-1.2c-1,0.1 -2,-0.5 -2.2,-1.5s-1.2,-1.9 -2.2,-2.2c-1,-0.3 -1.6,-1.3 -1.5,-2.2c0.1,-1 -0.4,-2.3 -1.2,-2.9s-1,-1.8 -0.5,-2.6c0.5,-0.9 0.5,-2.3 0,-3.1c-0.5,-0.9 -0.3,-2 0.5,-2.6S2.1,8.9 2,7.9s0.5,-2 1.5,-2.2s1.9,-1.2 2.2,-2.2S6.9,1.8 7.9,2s2.3,-0.4 2.9,-1.2S12.6,-0.2 13.4,0.3z"
|
||||||
|
android:fillColor="#7F2EFF"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M0.3,24.5c-0.4,0.4 -0.3,0.8 0.3,0.9l2.5,0.4c0.5,0.1 1.1,0.6 1.1,1.1l0.4,2.5c0.1,0.5 0.5,0.7 0.9,0.3L29.7,5.5c0.4,-0.4 0.3,-0.8 -0.3,-0.9l-2.5,-0.4c-0.5,-0.1 -1.1,-0.6 -1.1,-1.1l-0.4,-2.5c-0.1,-0.5 -0.5,-0.7 -0.9,-0.3L0.3,24.5z"
|
||||||
|
android:fillColor="#BA8AF9"/>
|
||||||
|
</vector>
|
@ -299,8 +299,8 @@
|
|||||||
<string name="poll_author_no_vote">Poll authors can\'t vote in their own polls.</string>
|
<string name="poll_author_no_vote">Poll authors can\'t vote in their own polls.</string>
|
||||||
<string name="poll_hashtag" translatable="false">#zappoll</string>
|
<string name="poll_hashtag" translatable="false">#zappoll</string>
|
||||||
|
|
||||||
<string name="hash_verification_passed">Image is the same since the post</string>
|
<string name="hash_verification_passed">This content is the same since the post</string>
|
||||||
<string name="hash_verification_failed">Image has changed. The author might not have seen the change</string>
|
<string name="hash_verification_failed">This content has changed. The author might not have seen or approved the change</string>
|
||||||
|
|
||||||
<string name="content_description_add_image">Add Image</string>
|
<string name="content_description_add_image">Add Image</string>
|
||||||
<string name="content_description_add_video">Add Video</string>
|
<string name="content_description_add_video">Add Video</string>
|
||||||
@ -496,4 +496,12 @@
|
|||||||
<string name="load_image">Load Image</string>
|
<string name="load_image">Load Image</string>
|
||||||
|
|
||||||
<string name="spamming_users">Spammers</string>
|
<string name="spamming_users">Spammers</string>
|
||||||
|
|
||||||
|
<string name="muted_button">Muted. Click to unmute</string>
|
||||||
|
<string name="mute_button">Sound on. Click to mute</string>
|
||||||
|
<string name="search_button">Search local and remote records</string>
|
||||||
|
|
||||||
|
<string name="nip05_verified">Nostr address was verified</string>
|
||||||
|
<string name="nip05_failed">Nostr address failed verification</string>
|
||||||
|
<string name="nip05_checking">Checking Nostr address</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
28
docs/design/VerificationIcons/Address-Book-Icon-Amethyst.svg
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;}
|
||||||
|
.st1{fill:#7F2EFF;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M25.7,1.3H5.6c-0.6,0-1,0.5-1,1s0.5,1,1,1l21.1,2.3V2.1C26.6,1.5,26.3,1.3,25.7,1.3z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M24.7,0H5.3c-1.1,0-2,0.9-2,2v26c0,1.1,0.9,2,2,2h19.4c1.1,0,2-0.9,2-2V4.4c0-0.6-0.5-1-1-1H5.6
|
||||||
|
c-0.5,0-1-0.4-1.1-0.9c0-0.7,0.5-1.2,1.1-1.2h20.1c0.5,0,0.9,0.4,1,0.8l0,0V2C26.7,0.9,25.8,0,24.7,0z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M14.9,21.8l-5.5-5c-0.5-0.5-0.6-1.3-0.1-1.8s1.3-0.6,1.8-0.1l3.6,3.2l5.4-6.1c0.5-0.5,1.3-0.6,1.8-0.1
|
||||||
|
s0.6,1.3,0.1,1.8L14.9,21.8z"/>
|
||||||
|
<path class="st1" d="M14.9,22.1L9.2,17c-0.3-0.3-0.5-0.7-0.5-1.1s0.1-0.8,0.4-1.1c0.3-0.3,0.7-0.5,1.1-0.5c0.4,0,0.8,0.1,1.1,0.4
|
||||||
|
l3.4,3.1l5.3-5.9c0.3-0.3,0.7-0.5,1.1-0.5s0.8,0.1,1.1,0.4c0.3,0.3,0.5,0.7,0.5,1.1c0,0.4-0.1,0.8-0.4,1.1L14.9,22.1z M10.2,14.8
|
||||||
|
L10.2,14.8c-0.3,0-0.6,0.1-0.8,0.3s-0.3,0.5-0.3,0.8s0.1,0.5,0.3,0.7l5.3,4.8l7-7.9c0.2-0.2,0.3-0.5,0.3-0.8s-0.1-0.5-0.3-0.7
|
||||||
|
c-0.2-0.2-0.5-0.3-0.8-0.3s-0.5,0.1-0.7,0.3l-5.6,6.3l-3.8-3.4C10.7,14.9,10.5,14.8,10.2,14.8z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
3704
docs/design/VerificationIcons/Amethyst-Proposal.pdf
Normal file
70
docs/design/VerificationIcons/App-Launch-Screen.svg
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 1125 2436" style="enable-background:new 0 0 1125 2436;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{opacity:0.16;fill:url(#SVGID_1_);}
|
||||||
|
.st1{opacity:0.16;fill:url(#SVGID_2_);}
|
||||||
|
.st2{opacity:0;fill:none;stroke:#D9CAFF;stroke-miterlimit:10;}
|
||||||
|
.st3{fill:#D9CAFF;}
|
||||||
|
.st4{fill:url(#SVGID_3_);}
|
||||||
|
</style>
|
||||||
|
<rect x="1" width="1121.8" height="2436"/>
|
||||||
|
<radialGradient id="SVGID_1_" cx="1932.6792" cy="2840.8818" r="3111.124" gradientTransform="matrix(1.0398 0 0 2.2579 -22.5496 -2166.8965)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" style="stop-color:#00FFFF"/>
|
||||||
|
<stop offset="1" style="stop-color:#FF00FF;stop-opacity:0.93"/>
|
||||||
|
</radialGradient>
|
||||||
|
<rect x="3.2" class="st0" width="1121.8" height="2436"/>
|
||||||
|
<rect x="1" width="1121.8" height="2436"/>
|
||||||
|
<radialGradient id="SVGID_2_" cx="1932.6792" cy="2840.8818" r="3111.124" gradientTransform="matrix(1.0398 0 0 2.2579 -22.5496 -2166.8965)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" style="stop-color:#558FFF"/>
|
||||||
|
<stop offset="0.508" style="stop-color:#8337F9"/>
|
||||||
|
<stop offset="1" style="stop-color:#AA1EF4"/>
|
||||||
|
</radialGradient>
|
||||||
|
<rect x="3.2" class="st1" width="1121.8" height="2436"/>
|
||||||
|
<path class="st2" d="M426.5,832.5c-11.2,0-23.8,8.4-28,18.8l-263.6,642.6c-4.2,10.3-4.2,27.2,0,37.5l23.6,57.4
|
||||||
|
c4.2,10.3,16.8,18.8,28,18.8h758.8c11.2,0,23.8-8.4,28-18.8l23.6-57.4c4.2-10.3,4.2-27.2,0-37.5L733.2,851.3
|
||||||
|
c-4.2-10.3-16.8-18.8-28-18.8H426.5z"/>
|
||||||
|
<g>
|
||||||
|
<path class="st3" d="M261.4,1492.3l-8.9,20.1h-15.9l39-88.4h15.9l39,88.4h-15.9l-8.9-20.1H261.4z M299.6,1478.5l-16.1-36.4
|
||||||
|
l-16.1,36.4H299.6z"/>
|
||||||
|
<path class="st3" d="M359.9,1476v36.4h-14.2v-67.3h14.2v12.3c2-4.1,5.1-7.4,9.2-9.7c4.1-2.4,8.5-3.5,13.2-3.5
|
||||||
|
c10.6,0,17.8,4.4,21.6,13.2c6.7-8.8,15-13.2,24.9-13.2c7.6,0,13.7,2.3,18.4,7c4.7,4.6,7,11.3,7,20.1v41.2h-14.2v-36.9
|
||||||
|
c0-12.4-5.1-18.6-15.4-18.6c-4.8,0-9,1.5-12.6,4.6c-3.6,3.1-5.5,7.6-5.6,13.5v37.4h-14.2v-36.9c0-6.4-1.1-11.1-3.4-14.1
|
||||||
|
c-2.3-3-5.9-4.5-10.8-4.5c-4.9,0-9.1,1.6-12.8,4.9C361.8,1465,359.9,1469.7,359.9,1476z"/>
|
||||||
|
<path class="st3" d="M541.7,1484.9h-52.7c0.3,4.9,2.6,8.8,6.7,11.8c4.1,3,8.9,4.5,14.2,4.5c8.4,0,14.8-2.7,19.2-8l8.1,8.9
|
||||||
|
c-7.3,7.5-16.7,11.3-28.3,11.3c-9.4,0-17.5-3.1-24.1-9.4c-6.6-6.3-9.9-14.7-9.9-25.3s3.4-19,10.1-25.2c6.7-6.2,14.7-9.4,23.8-9.4
|
||||||
|
c9.1,0,16.9,2.8,23.3,8.3c6.4,5.5,9.6,13.1,9.6,22.8V1484.9z M488.9,1473.8h38.6c0-5.6-1.8-10-5.3-13c-3.5-3-7.9-4.6-13.1-4.6
|
||||||
|
c-5.2,0-9.8,1.6-14,4.7C491,1464.1,488.9,1468.4,488.9,1473.8z"/>
|
||||||
|
<path class="st3" d="M579.2,1456.5v34.1c0,3.2,0.8,5.8,2.5,7.7c1.7,1.9,4,2.8,7.1,2.8s5.9-1.5,8.7-4.4l5.8,10
|
||||||
|
c-5,4.5-10.5,6.7-16.5,6.7c-6,0-11.2-2.1-15.4-6.3c-4.3-4.2-6.4-9.8-6.4-16.9v-33.8h-8.5v-11.4h8.5V1424h14.2v21.1H597v11.4H579.2z
|
||||||
|
"/>
|
||||||
|
<path class="st3" d="M633.9,1476v36.4h-14.2v-93.7h14.2v38.7c2-4.1,5.1-7.4,9.2-9.7c4.1-2.4,8.5-3.5,13.2-3.5
|
||||||
|
c7.6,0,13.7,2.3,18.4,7c4.7,4.6,7,11.3,7,20.1v41.2h-14.2v-36.9c0-12.4-5.1-18.6-15.4-18.6c-4.9,0-9.1,1.6-12.8,4.9
|
||||||
|
C635.7,1465,633.9,1469.7,633.9,1476z"/>
|
||||||
|
<path class="st3" d="M714.9,1539.2c-6.2,0-11.7-2.2-16.7-6.7l6.5-11.5c3,2.8,6,4.2,9.2,4.2c3.2,0,5.7-1.1,7.7-3.4
|
||||||
|
c2-2.3,3-4.8,3-7.5c0-1.2-9.1-24.2-27.2-69.2h15.2l20.1,49.6l20.1-49.6h15.2l-32.6,79.9c-1.9,4.4-4.7,7.8-8.3,10.4
|
||||||
|
C723.3,1537.9,719.3,1539.2,714.9,1539.2z"/>
|
||||||
|
<path class="st3" d="M831.3,1492.3c0,6.4-2.3,11.5-7,15.4c-4.6,3.8-10.6,5.8-17.8,5.8c-4.9,0-10-0.9-15.2-2.7
|
||||||
|
c-5.3-1.8-9.9-4.3-14-7.5l6.8-11c7.8,5.9,15.4,8.9,22.8,8.9c3.2,0,5.7-0.7,7.6-2.2c1.9-1.5,2.8-3.3,2.8-5.6c0-3.4-4.5-6.4-13.4-9.1
|
||||||
|
c-0.7-0.3-1.2-0.4-1.5-0.5c-14-3.8-21-10.1-21-19c0-6.2,2.4-11.2,7.3-15c4.9-3.7,11.2-5.6,18.9-5.6c7.8,0,15.1,2.3,22,6.8
|
||||||
|
l-5.3,10.5c-5.5-3.6-11.4-5.4-17.8-5.4c-3.4,0-6.1,0.6-8.2,1.8c-2.1,1.2-3.2,3.1-3.2,5.5c0,2.2,1.1,3.8,3.3,4.8
|
||||||
|
c1.5,0.8,3.6,1.5,6.4,2.2c2.7,0.7,5.2,1.3,7.3,2c2.1,0.7,4.2,1.4,6.1,2.3c2,0.8,4.1,2,6.4,3.5
|
||||||
|
C829,1481.1,831.3,1485.9,831.3,1492.3z"/>
|
||||||
|
<path class="st3" d="M869.9,1456.5v34.1c0,3.2,0.8,5.8,2.5,7.7c1.7,1.9,4,2.8,7.1,2.8s5.9-1.5,8.7-4.4l5.8,10
|
||||||
|
c-5,4.5-10.5,6.7-16.5,6.7c-6,0-11.2-2.1-15.4-6.3c-4.3-4.2-6.4-9.8-6.4-16.9v-33.8h-8.5v-11.4h8.5V1424h14.2v21.1h17.7v11.4H869.9
|
||||||
|
z"/>
|
||||||
|
</g>
|
||||||
|
<radialGradient id="SVGID_3_" cx="245.2459" cy="771.7286" r="880.4387" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" style="stop-color:#558FFF"/>
|
||||||
|
<stop offset="0.508" style="stop-color:#8337F9"/>
|
||||||
|
<stop offset="1" style="stop-color:#AA1EF4"/>
|
||||||
|
</radialGradient>
|
||||||
|
<path class="st4" d="M714.5,1252.6c-2.9,7-11.4,12.7-19,12.7h-56.6c-7.6,0-13.8,6.2-13.8,13.8v66.7c0,7.6-2.4,8-5.2,1l-28.2-68.8
|
||||||
|
c-2.9-7-5.2-12.7-5.2-12.7s-2.4-5.7-5.2-12.7l-28.2-68.8c-2.9-7,1-12.7,8.5-12.7h25.3c7.6,0,16.4-3.6,19.7-8.1
|
||||||
|
c3.2-4.4,12.1-8.1,19.7-8.1h34.9c7.6,0,15.9-4.6,18.5-10.1c2.6-5.6-0.9-12.5-7.9-15.5l-32.1-13.6c-7-3-15-11.1-17.9-18.1l-13-32
|
||||||
|
c-2.9-7-11.4-12.7-19-12.7H538c-7.6,0-16.1,5.7-19.1,12.7l-38.6,92.8c-2.9,7-2.9,18.4-0.1,25.4l28.2,68.8c2.9,7-1,12.7-8.5,12.7
|
||||||
|
h-68.3c-7.6,0-16.1-5.7-19-12.7l-28.2-68.8c-2.9-7-2.9-18.5,0-25.5l91.3-222.5c2.9-7,11.4-12.7,19-12.7h51.5c7.6,0,20,0,27.5,0h58.7
|
||||||
|
c7.6,0,16.1,5.7,19,12.7l91.3,222.5c2.9,7,2.9,18.5,0,25.5L714.5,1252.6z M579.2,1092.3c-4,0-9.7,5.7-12.6,12.7l-0.8,1.8
|
||||||
|
c-2.9,7,0.9,12.7,8.5,12.7h9c7.6,0,11.5-5.8,8.8-12.8l-0.6-1.6C588.7,1098.1,583.2,1092.3,579.2,1092.3z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
36
docs/design/VerificationIcons/Follow-Icon-Amethyst.svg
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M27.8,12.8L27.8,12.8C27.8,5,27.2,0,24.4,0S15,0,15,0S8.4,0,5.6,0C2.8,0,2.2,5,2.2,12.8v0l0,0c0,0,0,0,0,0
|
||||||
|
C2.2,24.9,15,30,15,30S27.8,24.9,27.8,12.8C27.8,12.8,27.8,12.8,27.8,12.8L27.8,12.8z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M15.1,24l-0.5-0.2c-0.2-0.1-4.5-2-6.8-6.4c-0.3-0.6-0.1-1.4,0.6-1.7c0.6-0.3,1.4-0.1,1.7,0.6
|
||||||
|
c1.4,2.8,3.9,4.4,5,4.9c1.1-0.6,3.6-2.2,5-4.9c0.3-0.6,1.1-0.9,1.7-0.6c0.6,0.3,0.9,1.1,0.6,1.7c-2.2,4.4-6.6,6.3-6.8,6.4L15.1,24
|
||||||
|
z"/>
|
||||||
|
<path class="st0" d="M15.1,24.3l-0.6-0.3c-0.2-0.1-4.6-2-6.9-6.5c-0.2-0.4-0.2-0.8-0.1-1.2c0.1-0.4,0.4-0.7,0.8-0.9
|
||||||
|
c0.4-0.2,0.8-0.2,1.2-0.1c0.4,0.1,0.7,0.4,0.9,0.8c1.3,2.6,3.7,4.2,4.8,4.8c1.1-0.6,3.5-2.2,4.8-4.8c0.2-0.4,0.5-0.6,0.9-0.8
|
||||||
|
c0.4-0.1,0.8-0.1,1.2,0.1c0.4,0.2,0.6,0.5,0.8,0.9c0.1,0.4,0.1,0.8-0.1,1.2c-2.3,4.5-6.7,6.4-6.9,6.5L15.1,24.3z M8.9,15.8
|
||||||
|
c-0.2,0-0.3,0-0.5,0.1C8.2,16,8,16.3,7.9,16.5c-0.1,0.3-0.1,0.5,0.1,0.8c2.2,4.3,6.5,6.2,6.7,6.3l0.4,0.2l0.4-0.2
|
||||||
|
c0.2-0.1,4.5-2,6.7-6.3c0.1-0.2,0.1-0.5,0.1-0.8c-0.1-0.3-0.3-0.5-0.5-0.6c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3,0.1-0.5,0.3-0.6,0.5
|
||||||
|
c-1.4,2.8-4,4.5-5.1,5.1l-0.1,0.1l-0.1-0.1c-1-0.6-3.6-2.2-5.1-5.1c-0.1-0.2-0.3-0.4-0.6-0.5C9.1,15.8,9,15.8,8.9,15.8z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M15,15c-2.9,0-5.2-2.3-5.2-5.2s2.3-5.2,5.2-5.2s5.2,2.3,5.2,5.2S17.8,15,15,15z M15,7.2
|
||||||
|
c-1.4,0-2.6,1.2-2.6,2.6s1.2,2.6,2.6,2.6s2.6-1.2,2.6-2.6S16.4,7.2,15,7.2z"/>
|
||||||
|
<path class="st0" d="M15,15.2c-3,0-5.4-2.4-5.4-5.4S12,4.4,15,4.4s5.4,2.4,5.4,5.4S18,15.2,15,15.2z M15,4.9
|
||||||
|
c-2.7,0-4.9,2.2-4.9,4.9s2.2,4.9,4.9,4.9c2.7,0,4.9-2.2,4.9-4.9S17.7,4.9,15,4.9z M15,12.6c-1.6,0-2.9-1.3-2.9-2.9
|
||||||
|
s1.3-2.9,2.9-2.9c1.6,0,2.9,1.3,2.9,2.9S16.5,12.6,15,12.6z M15,7.4c-1.3,0-2.4,1.1-2.4,2.4s1.1,2.4,2.4,2.4
|
||||||
|
c1.3,0,2.4-1.1,2.4-2.4S16.3,7.4,15,7.4z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
13
docs/design/VerificationIcons/Logo-Black-Amethyst.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 434 512" style="enable-background:new 0 0 434 512;" xml:space="preserve">
|
||||||
|
<path d="M398.2,393.3c-3.4,8.4-13.7,15.2-22.7,15.2h-67.7c-9.1,0-16.5,7.4-16.5,16.5v79.8c0,9.1-2.8,9.6-6.3,1.2l-33.8-82.3
|
||||||
|
c-3.4-8.4-6.3-15.2-6.3-15.2c0,0-2.8-6.9-6.3-15.2L204.9,311c-3.4-8.4,1.2-15.2,10.2-15.2h30.3c9.1,0,19.7-4.3,23.5-9.7
|
||||||
|
c3.9-5.3,14.5-9.7,23.5-9.7h41.8c9.1,0,19-5.5,22.2-12.1c3.1-6.7-1.1-15-9.4-18.6l-38.4-16.3c-8.3-3.5-18-13.3-21.4-21.7l-15.6-38.3
|
||||||
|
c-3.4-8.4-13.6-15.3-22.7-15.3h-62c-9.1,0-19.3,6.8-22.8,15.2l-46.2,111.1c-3.5,8.4-3.5,22.1-0.1,30.5l33.8,82.3
|
||||||
|
c3.4,8.4-1.2,15.2-10.2,15.2H59.6c-9.1,0-19.3-6.9-22.7-15.2L3.1,311c-3.4-8.4-3.4-22.1,0-30.5L112.3,14.2
|
||||||
|
c3.4-8.4,13.7-15.2,22.7-15.2h61.7c9.1,0,23.9,0,32.9,0h70.3c9.1,0,19.3,6.9,22.7,15.2l109.3,266.3c3.4,8.4,3.4,22.1,0,30.5
|
||||||
|
L398.2,393.3z M236.3,201.4c-4.8,0-11.6,6.8-15,15.2l-0.9,2.2c-3.5,8.4,1.1,15.2,10.1,15.2h10.7c9.1,0,13.8-6.9,10.5-15.3l-0.7-1.9
|
||||||
|
C247.6,208.3,241,201.4,236.3,201.4z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
21
docs/design/VerificationIcons/Logo-Main-Amethyst.svg
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 434 512" style="enable-background:new 0 0 434 512;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:url(#SVGID_1_);}
|
||||||
|
</style>
|
||||||
|
<radialGradient id="SVGID_1_" cx="-163.4305" cy="-182.2201" r="1053.7416" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" style="stop-color:#558FFF"/>
|
||||||
|
<stop offset="0.508" style="stop-color:#8337F9"/>
|
||||||
|
<stop offset="1" style="stop-color:#AA1EF4"/>
|
||||||
|
</radialGradient>
|
||||||
|
<path class="st0" d="M398.2,393.3c-3.4,8.4-13.7,15.2-22.7,15.2h-67.7c-9.1,0-16.5,7.4-16.5,16.5v79.8c0,9.1-2.8,9.6-6.3,1.2
|
||||||
|
l-33.8-82.3c-3.4-8.4-6.3-15.2-6.3-15.2c0,0-2.8-6.9-6.3-15.2L204.9,311c-3.4-8.4,1.2-15.2,10.2-15.2h30.3c9.1,0,19.7-4.3,23.5-9.7
|
||||||
|
c3.9-5.3,14.5-9.7,23.5-9.7h41.8c9.1,0,19-5.5,22.2-12.1c3.1-6.7-1.1-15-9.4-18.6l-38.4-16.3c-8.3-3.5-18-13.3-21.4-21.7l-15.6-38.3
|
||||||
|
c-3.4-8.4-13.6-15.3-22.7-15.3h-62c-9.1,0-19.3,6.8-22.8,15.2l-46.2,111.1c-3.5,8.4-3.5,22.1-0.1,30.5l33.8,82.3
|
||||||
|
c3.4,8.4-1.2,15.2-10.2,15.2H59.6c-9.1,0-19.3-6.9-22.7-15.2L3.1,311c-3.4-8.4-3.4-22.1,0-30.5L112.3,14.2
|
||||||
|
c3.4-8.4,13.7-15.2,22.7-15.2h61.7c9.1,0,23.9,0,32.9,0h70.3c9.1,0,19.3,6.9,22.7,15.2l109.3,266.3c3.4,8.4,3.4,22.1,0,30.5
|
||||||
|
L398.2,393.3z M236.3,201.4c-4.8,0-11.6,6.8-15,15.2l-0.9,2.2c-3.5,8.4,1.1,15.2,10.1,15.2h10.7c9.1,0,13.8-6.9,10.5-15.3l-0.7-1.9
|
||||||
|
C247.6,208.3,241,201.4,236.3,201.4z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
16
docs/design/VerificationIcons/Logo-White-Amethyst.svg
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 434 512" style="enable-background:new 0 0 434 512;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M398.2,393.3c-3.4,8.4-13.7,15.2-22.7,15.2h-67.7c-9.1,0-16.5,7.4-16.5,16.5v79.8c0,9.1-2.8,9.6-6.3,1.2
|
||||||
|
l-33.8-82.3c-3.4-8.4-6.3-15.2-6.3-15.2c0,0-2.8-6.9-6.3-15.2L204.9,311c-3.4-8.4,1.2-15.2,10.2-15.2h30.3c9.1,0,19.7-4.3,23.5-9.7
|
||||||
|
c3.9-5.3,14.5-9.7,23.5-9.7h41.8c9.1,0,19-5.5,22.2-12.1c3.1-6.7-1.1-15-9.4-18.6l-38.4-16.3c-8.3-3.5-18-13.3-21.4-21.7l-15.6-38.3
|
||||||
|
c-3.4-8.4-13.6-15.3-22.7-15.3h-62c-9.1,0-19.3,6.8-22.8,15.2l-46.2,111.1c-3.5,8.4-3.5,22.1-0.1,30.5l33.8,82.3
|
||||||
|
c3.4,8.4-1.2,15.2-10.2,15.2H59.6c-9.1,0-19.3-6.9-22.7-15.2L3.1,311c-3.4-8.4-3.4-22.1,0-30.5L112.3,14.2
|
||||||
|
c3.4-8.4,13.7-15.2,22.7-15.2h61.7c9.1,0,23.9,0,32.9,0h70.3c9.1,0,19.3,6.9,22.7,15.2l109.3,266.3c3.4,8.4,3.4,22.1,0,30.5
|
||||||
|
L398.2,393.3z M236.3,201.4c-4.8,0-11.6,6.8-15,15.2l-0.9,2.2c-3.5,8.4,1.1,15.2,10.1,15.2h10.7c9.1,0,13.8-6.9,10.5-15.3l-0.7-1.9
|
||||||
|
C247.6,208.3,241,201.4,236.3,201.4z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
79
docs/design/VerificationIcons/NIP-05-2-Icon-Amethyst.svg
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="Layer_1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
viewBox="0 0 30 30"
|
||||||
|
style="enable-background:new 0 0 30 30;"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:docname="NIP-05-2-Icon-Amethyst.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a84865, 2022-12-01)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||||
|
id="defs27" /><sodipodi:namedview
|
||||||
|
id="namedview25"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="34.233333"
|
||||||
|
inkscape:cx="9.0993184"
|
||||||
|
inkscape:cy="15.701071"
|
||||||
|
inkscape:window-width="2198"
|
||||||
|
inkscape:window-height="1205"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="g22" />
|
||||||
|
<style
|
||||||
|
type="text/css"
|
||||||
|
id="style2">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<g
|
||||||
|
id="g22">
|
||||||
|
<g
|
||||||
|
id="g6">
|
||||||
|
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14"
|
||||||
|
style="fill:#b198ec;fill-opacity:1"
|
||||||
|
transform="matrix(1.3585023,0,0,1.3585023,-5.3775339,-5.3775339)">
|
||||||
|
<g
|
||||||
|
id="g12"
|
||||||
|
style="fill:#b198ec;fill-opacity:1">
|
||||||
|
<path
|
||||||
|
class="st1"
|
||||||
|
d="m 15.3,19.5 -4.1,-3.7 c -0.5,-0.5 -0.6,-1.3 -0.1,-1.8 0.5,-0.5 1.3,-0.6 1.8,-0.1 L 15,15.8 18.4,12 c 0.5,-0.5 1.3,-0.6 1.8,-0.1 0.5,0.5 0.6,1.3 0.1,1.8 z"
|
||||||
|
id="path8"
|
||||||
|
style="fill:#b198ec;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="M 15.4,19.9 11.1,16 c -0.6,-0.6 -0.7,-1.5 -0.1,-2.2 0.3,-0.3 0.7,-0.5 1.1,-0.5 0.4,0 0.8,0.1 1.1,0.4 l 2,1.8 3.3,-3.7 c 0.6,-0.6 1.5,-0.7 2.2,-0.1 0.3,0.3 0.5,0.6 0.5,1.1 0,0.4 -0.1,0.8 -0.4,1.1 z m -3.3,-6 v 0 c -0.3,0 -0.6,0.1 -0.8,0.3 -0.4,0.4 -0.3,1.1 0.1,1.5 l 3.9,3.5 5,-5.6 c 0.2,-0.2 0.3,-0.5 0.3,-0.7 0,-0.3 -0.1,-0.5 -0.3,-0.7 -0.4,-0.4 -1.1,-0.3 -1.5,0.1 l -3.6,4 -2.4,-2.2 C 12.6,14 12.4,13.9 12.1,13.9 Z"
|
||||||
|
id="path10"
|
||||||
|
style="fill:#b198ec;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g20"
|
||||||
|
transform="matrix(1.3585023,0,0,1.3585023,-5.3775339,-5.3775339)">
|
||||||
|
<path
|
||||||
|
class="st1"
|
||||||
|
d="M 15,4 C 9,4 4,8.9 4,15 c 0,6.1 4.9,11 11,11 0.7,0 1.3,-0.6 1.3,-1.3 0,-0.7 -0.6,-1.3 -1.3,-1.3 -4.6,0 -8.4,-3.8 -8.4,-8.4 0,-4.6 3.8,-8.4 8.4,-8.4 4.6,0 8.4,3.8 8.4,8.4 0,2 -1.1,3.9 -2.5,4.5 -0.9,0.4 -1.8,0.1 -2.7,-0.7 v 0 l -1.7,1.9 c 1.6,1.5 3.5,2 5.4,1.2 C 24.3,20.9 26,18.1 26,15 25.9,8.9 21,4 15,4 Z"
|
||||||
|
id="path16"
|
||||||
|
style="fill:#b198ec;fill-opacity:1" />
|
||||||
|
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
35
docs/design/VerificationIcons/NIP-05-Icon-Amethyst.svg
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<circle class="st0" cx="15" cy="15" r="15"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M15.3,19.5l-4.1-3.7c-0.5-0.5-0.6-1.3-0.1-1.8s1.3-0.6,1.8-0.1l2.1,1.9l3.4-3.8c0.5-0.5,1.3-0.6,1.8-0.1
|
||||||
|
s0.6,1.3,0.1,1.8L15.3,19.5z"/>
|
||||||
|
<path class="st0" d="M15.4,19.9L11.1,16c-0.6-0.6-0.7-1.5-0.1-2.2c0.3-0.3,0.7-0.5,1.1-0.5c0.4,0,0.8,0.1,1.1,0.4l2,1.8l3.3-3.7
|
||||||
|
c0.6-0.6,1.5-0.7,2.2-0.1c0.3,0.3,0.5,0.6,0.5,1.1c0,0.4-0.1,0.8-0.4,1.1L15.4,19.9z M12.1,13.9L12.1,13.9
|
||||||
|
c-0.3,0-0.6,0.1-0.8,0.3c-0.4,0.4-0.3,1.1,0.1,1.5l3.9,3.5l5-5.6c0.2-0.2,0.3-0.5,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7
|
||||||
|
c-0.4-0.4-1.1-0.3-1.5,0.1l-3.6,4l-2.4-2.2C12.6,14,12.4,13.9,12.1,13.9z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M15,4C9,4,4,8.9,4,15s4.9,11,11,11c0.7,0,1.3-0.6,1.3-1.3c0-0.7-0.6-1.3-1.3-1.3c-4.6,0-8.4-3.8-8.4-8.4
|
||||||
|
s3.8-8.4,8.4-8.4s8.4,3.8,8.4,8.4c0,2-1.1,3.9-2.5,4.5c-0.9,0.4-1.8,0.1-2.7-0.7l0,0l-1.7,1.9c1.6,1.5,3.5,2,5.4,1.2
|
||||||
|
c2.4-1,4.1-3.8,4.1-6.9C25.9,8.9,21,4,15,4z"/>
|
||||||
|
<path class="st0" d="M15,26.2c-6.2,0-11.2-5-11.2-11.2S8.8,3.8,15,3.8s11.2,5,11.2,11.2c0,3.1-1.7,6.1-4.2,7.1
|
||||||
|
c-1.9,0.8-4,0.3-5.6-1.3l-0.2-0.2l2-2.3l0.2,0.2l0,0c0.8,0.8,1.6,1,2.4,0.7c1.3-0.6,2.3-2.4,2.3-4.2c0-4.5-3.7-8.1-8.1-8.1
|
||||||
|
c-4.5-0.1-8.2,3.6-8.2,8.1s3.7,8.1,8.1,8.1c0.8,0,1.5,0.7,1.5,1.5C16.5,25.5,15.8,26.2,15,26.2z M15,4.3C9.1,4.3,4.3,9.1,4.3,15
|
||||||
|
S9.1,25.7,15,25.7c0.6,0,1-0.5,1-1c0-0.6-0.5-1-1-1c-4.8,0-8.6-3.9-8.6-8.6c0-4.8,3.9-8.6,8.6-8.6s8.6,3.9,8.6,8.6
|
||||||
|
c0,2.1-1.1,4.1-2.6,4.7c-0.9,0.4-1.9,0.2-2.8-0.6l-1.4,1.4c1.5,1.3,3.3,1.7,4.9,1c2.3-1,3.9-3.7,3.9-6.6C25.7,9.1,20.9,4.3,15,4.3
|
||||||
|
z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
17
docs/design/VerificationIcons/Seal-Icon-Amethyst.svg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#BA8AF9;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M13.4,0.3c0.9,0.5,2.3,0.5,3.1,0c0.9-0.5,2-0.3,2.6,0.5s1.9,1.3,2.9,1.2c1-0.1,2,0.5,2.2,1.5
|
||||||
|
c0.3,1,1.2,1.9,2.2,2.2s1.6,1.3,1.5,2.2c-0.1,1,0.4,2.3,1.2,2.9c0.8,0.6,1,1.8,0.5,2.6c-0.5,0.9-0.5,2.3,0,3.1
|
||||||
|
c0.5,0.9,0.3,2-0.5,2.6c-0.8,0.6-1.3,1.9-1.2,2.9c0.1,1-0.5,2-1.5,2.2c-1,0.3-1.9,1.2-2.2,2.2c-0.3,1-1.3,1.6-2.2,1.5
|
||||||
|
c-1-0.1-2.3,0.4-2.9,1.2c-0.6,0.8-1.8,1-2.6,0.5c-0.9-0.5-2.3-0.5-3.1,0c-0.9,0.5-2,0.3-2.6-0.5c-0.6-0.8-1.9-1.3-2.9-1.2
|
||||||
|
c-1,0.1-2-0.5-2.2-1.5s-1.2-1.9-2.2-2.2c-1-0.3-1.6-1.3-1.5-2.2c0.1-1-0.4-2.3-1.2-2.9s-1-1.8-0.5-2.6c0.5-0.9,0.5-2.3,0-3.1
|
||||||
|
c-0.5-0.9-0.3-2,0.5-2.6S2.1,8.9,2,7.9s0.5-2,1.5-2.2s1.9-1.2,2.2-2.2S6.9,1.8,7.9,2s2.3-0.4,2.9-1.2S12.6-0.2,13.4,0.3z"/>
|
||||||
|
<path class="st1" d="M0.3,24.5c-0.4,0.4-0.3,0.8,0.3,0.9l2.5,0.4c0.5,0.1,1.1,0.6,1.1,1.1l0.4,2.5c0.1,0.5,0.5,0.7,0.9,0.3L29.7,5.5
|
||||||
|
c0.4-0.4,0.3-0.8-0.3-0.9l-2.5-0.4c-0.5-0.1-1.1-0.6-1.1-1.1l-0.4-2.5c-0.1-0.5-0.5-0.7-0.9-0.3L0.3,24.5z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
27
docs/design/VerificationIcons/SealCheck-Icon-Amethyst.svg
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M13.4,0.3c0.9,0.5,2.3,0.5,3.1,0c0.9-0.5,2-0.3,2.6,0.5s1.9,1.3,2.9,1.2c1-0.1,2,0.5,2.2,1.5
|
||||||
|
c0.3,1,1.2,1.9,2.2,2.2s1.6,1.3,1.5,2.2c-0.1,1,0.4,2.3,1.2,2.9c0.8,0.6,1,1.8,0.5,2.6c-0.5,0.9-0.5,2.3,0,3.1
|
||||||
|
c0.5,0.9,0.3,2-0.5,2.6c-0.8,0.6-1.3,1.9-1.2,2.9c0.1,1-0.5,2-1.5,2.2c-1,0.3-1.9,1.2-2.2,2.2c-0.3,1-1.3,1.6-2.2,1.5
|
||||||
|
c-1-0.1-2.3,0.4-2.9,1.2c-0.6,0.8-1.8,1-2.6,0.5c-0.9-0.5-2.3-0.5-3.1,0c-0.9,0.5-2,0.3-2.6-0.5c-0.6-0.8-1.9-1.3-2.9-1.2
|
||||||
|
c-1,0.1-2-0.5-2.2-1.5s-1.2-1.9-2.2-2.2c-1-0.3-1.6-1.3-1.5-2.2c0.1-1-0.4-2.3-1.2-2.9s-1-1.8-0.5-2.6c0.5-0.9,0.5-2.3,0-3.1
|
||||||
|
c-0.5-0.9-0.3-2,0.5-2.6S2.1,8.9,2,7.9s0.5-2,1.5-2.2s1.9-1.2,2.2-2.2S6.9,1.8,7.9,2s2.3-0.4,2.9-1.2S12.6-0.2,13.4,0.3z"/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M14.2,20.6l-5.5-5c-0.5-0.5-0.6-1.3-0.1-1.8c0.5-0.5,1.3-0.6,1.8-0.1l3.6,3.2l5.4-6.1
|
||||||
|
c0.5-0.5,1.3-0.6,1.8-0.1c0.5,0.5,0.6,1.3,0.1,1.8L14.2,20.6z"/>
|
||||||
|
<path class="st0" d="M14.3,20.9l-5.7-5.1c-0.3-0.3-0.5-0.7-0.5-1.1c0-0.4,0.1-0.8,0.4-1.1c0.3-0.3,0.7-0.5,1.1-0.5
|
||||||
|
c0.4,0,0.8,0.1,1.1,0.4l3.4,3.1l5.2-5.9c0.3-0.3,0.6-0.5,1.1-0.5c0.4,0,0.8,0.1,1.1,0.4c0.6,0.6,0.7,1.5,0.1,2.2L14.3,20.9z
|
||||||
|
M9.6,13.6C9.6,13.6,9.6,13.6,9.6,13.6c-0.3,0-0.6,0.1-0.8,0.3c-0.2,0.2-0.3,0.5-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l5.3,4.8l7-7.8
|
||||||
|
c0.4-0.4,0.3-1.1-0.1-1.5c-0.4-0.4-1.1-0.3-1.5,0.1l-5.6,6.3l-3.8-3.4C10.1,13.7,9.8,13.6,9.6,13.6z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
25
docs/design/VerificationIcons/Source-Icon-Amethyst.svg
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#7F2EFF;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M26.9,18.3L26.9,18.3C26.9,18.3,26.9,18.3,26.9,18.3C26.9,7.3,15.2,0,15.2,0S3.6,7.3,3.6,18.3c0,0,0,0,0,0v0
|
||||||
|
v0l0,0C3.6,24.8,8.8,30,15.2,30S26.9,24.8,26.9,18.3L26.9,18.3L26.9,18.3z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M15,23.7l-5.5-5c-0.5-0.5-0.6-1.3-0.1-1.8c0.5-0.5,1.3-0.6,1.8-0.1l3.6,3.2l5.4-6.1c0.5-0.5,1.3-0.6,1.8-0.1
|
||||||
|
c0.5,0.5,0.6,1.3,0.1,1.8L15,23.7z"/>
|
||||||
|
<path class="st0" d="M15,24.1l-5.7-5.1c-0.3-0.3-0.5-0.7-0.5-1.1c0-0.4,0.1-0.8,0.4-1.1c0.6-0.6,1.5-0.7,2.2-0.1l3.4,3.1l5.2-5.9
|
||||||
|
c0.3-0.3,0.6-0.5,1.1-0.5c0.4,0,0.8,0.1,1.1,0.4c0.3,0.3,0.5,0.6,0.5,1.1c0,0.4-0.1,0.8-0.4,1.1L15,24.1z M10.4,16.7
|
||||||
|
c-0.3,0-0.6,0.1-0.8,0.3c-0.2,0.2-0.3,0.5-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l5.3,4.8l7-7.8c0.2-0.2,0.3-0.5,0.3-0.8
|
||||||
|
c0-0.3-0.1-0.5-0.3-0.7c-0.2-0.2-0.5-0.3-0.8-0.3c-0.3,0-0.5,0.1-0.7,0.3l-5.6,6.3L11.1,17C10.9,16.8,10.6,16.7,10.4,16.7z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |