Migration to Niel Liesmons' icons

pull/513/head
Vitor Pamplona 2023-07-17 11:48:29 -04:00
rodzic ad59b691fd
commit e298285145
37 zmienionych plików z 4632 dodań i 478 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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
)
} }
} }

Wyświetl plik

@ -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))
} }

Wyświetl plik

@ -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)
)
} }
} }
} }

Wyświetl plik

@ -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)
)
} }
} }
} }

Wyświetl plik

@ -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
)
} }
} }

Wyświetl plik

@ -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
)
}

Wyświetl plik

@ -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
)
}
}

Wyświetl plik

@ -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
) )
} }

Wyświetl plik

@ -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

Wyświetl plik

@ -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(

Wyświetl plik

@ -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,

Wyświetl plik

@ -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,

Wyświetl plik

@ -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
)
} }
} }

Wyświetl plik

@ -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)
) )
} }
} }

Wyświetl plik

@ -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),

Wyświetl plik

@ -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
) )
}, },

Wyświetl plik

@ -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

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.4 KiB

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 5.3 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 2.2 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.2 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.5 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.3 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 2.7 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 2.0 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.3 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.8 KiB

Wyświetl plik

@ -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>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.3 KiB