diff --git a/app/src/main/assets/design-icons/README.md b/app/src/main/assets/design-icons/README.md new file mode 100644 index 00000000..cd04de8f --- /dev/null +++ b/app/src/main/assets/design-icons/README.md @@ -0,0 +1,6 @@ +# Design-spec icons + +These standalone SVGs were extracted from the supplied 393 px Figma screen exports. The matching +Android vector resources in `res/drawable/ic_spec_*.xml` are the runtime copies used by Compose. +Paths and stroke weights remain faithful to the exports; UI tint and opacity are applied at the +call site so selected and disabled states remain theme-aware. diff --git a/app/src/main/assets/design-icons/bookmark-filled.svg b/app/src/main/assets/design-icons/bookmark-filled.svg new file mode 100644 index 00000000..a2f90c78 --- /dev/null +++ b/app/src/main/assets/design-icons/bookmark-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/bookmark-outline.svg b/app/src/main/assets/design-icons/bookmark-outline.svg new file mode 100644 index 00000000..7ffb105f --- /dev/null +++ b/app/src/main/assets/design-icons/bookmark-outline.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/chat-bubbles.svg b/app/src/main/assets/design-icons/chat-bubbles.svg new file mode 100644 index 00000000..32546ff8 --- /dev/null +++ b/app/src/main/assets/design-icons/chat-bubbles.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/command.svg b/app/src/main/assets/design-icons/command.svg new file mode 100644 index 00000000..3be46195 --- /dev/null +++ b/app/src/main/assets/design-icons/command.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/eye-off.svg b/app/src/main/assets/design-icons/eye-off.svg new file mode 100644 index 00000000..1e8ad44d --- /dev/null +++ b/app/src/main/assets/design-icons/eye-off.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/globe.svg b/app/src/main/assets/design-icons/globe.svg new file mode 100644 index 00000000..e0dc1a45 --- /dev/null +++ b/app/src/main/assets/design-icons/globe.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/assets/design-icons/lock.svg b/app/src/main/assets/design-icons/lock.svg new file mode 100644 index 00000000..28a95cb0 --- /dev/null +++ b/app/src/main/assets/design-icons/lock.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/assets/design-icons/mention.svg b/app/src/main/assets/design-icons/mention.svg new file mode 100644 index 00000000..59f2fa19 --- /dev/null +++ b/app/src/main/assets/design-icons/mention.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/panic.svg b/app/src/main/assets/design-icons/panic.svg new file mode 100644 index 00000000..614b9070 --- /dev/null +++ b/app/src/main/assets/design-icons/panic.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/people.svg b/app/src/main/assets/design-icons/people.svg new file mode 100644 index 00000000..f0bce1af --- /dev/null +++ b/app/src/main/assets/design-icons/people.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/person.svg b/app/src/main/assets/design-icons/person.svg new file mode 100644 index 00000000..c0c93053 --- /dev/null +++ b/app/src/main/assets/design-icons/person.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/range.svg b/app/src/main/assets/design-icons/range.svg new file mode 100644 index 00000000..88c36115 --- /dev/null +++ b/app/src/main/assets/design-icons/range.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/assets/design-icons/shuffle.svg b/app/src/main/assets/design-icons/shuffle.svg new file mode 100644 index 00000000..7f054978 --- /dev/null +++ b/app/src/main/assets/design-icons/shuffle.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/star.svg b/app/src/main/assets/design-icons/star.svg new file mode 100644 index 00000000..b385fc1f --- /dev/null +++ b/app/src/main/assets/design-icons/star.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/teleport.svg b/app/src/main/assets/design-icons/teleport.svg new file mode 100644 index 00000000..4209d337 --- /dev/null +++ b/app/src/main/assets/design-icons/teleport.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/assets/design-icons/waveform.svg b/app/src/main/assets/design-icons/waveform.svg new file mode 100644 index 00000000..558ccc9d --- /dev/null +++ b/app/src/main/assets/design-icons/waveform.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/assets/design-icons/wifi-off.svg b/app/src/main/assets/design-icons/wifi-off.svg new file mode 100644 index 00000000..5bb5a4d7 --- /dev/null +++ b/app/src/main/assets/design-icons/wifi-off.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/app/src/main/java/com/bitchat/android/ui/AboutSections.kt b/app/src/main/java/com/bitchat/android/ui/AboutSections.kt index af0cc08b..e6da1eee 100644 --- a/app/src/main/java/com/bitchat/android/ui/AboutSections.kt +++ b/app/src/main/java/com/bitchat/android/ui/AboutSections.kt @@ -1,15 +1,6 @@ package com.bitchat.android.ui -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AlternateEmail -import androidx.compose.material.icons.filled.DeleteForever -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Terminal -import androidx.compose.material.icons.filled.WifiOff -import androidx.compose.material.icons.outlined.BookmarkBorder -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.Public -import androidx.compose.material.icons.outlined.VisibilityOff +import androidx.annotation.DrawableRes import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.animateColorAsState @@ -45,6 +36,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -122,7 +114,7 @@ internal fun AboutSectionLabel( */ @Composable internal fun SheetIconSectionHeader( - icon: ImageVector, + @DrawableRes iconRes: Int, title: String, subtitle: String? = null, modifier: Modifier = Modifier @@ -141,7 +133,7 @@ internal fun SheetIconSectionHeader( horizontalArrangement = Arrangement.spacedBy(10.dp) ) { Icon( - imageVector = icon, + painter = painterResource(iconRes), contentDescription = null, tint = colorScheme.primary, modifier = Modifier.size(22.dp) @@ -332,7 +324,7 @@ private fun AboutTabLabel( /** One line of the "How To Use" list: an icon plus a single instruction. */ @Composable private fun AboutInstructionRow( - icon: ImageVector, + @DrawableRes iconRes: Int, text: String ) { val colorScheme = MaterialTheme.colorScheme @@ -346,7 +338,7 @@ private fun AboutInstructionRow( verticalAlignment = Alignment.Top ) { Icon( - imageVector = icon, + painter = painterResource(iconRes), contentDescription = null, tint = colorScheme.primary, modifier = Modifier @@ -385,31 +377,31 @@ internal fun AboutHowToUseSection(modifier: Modifier = Modifier) { ) AboutInstructionRow( - icon = Icons.Filled.AlternateEmail, + iconRes = R.drawable.ic_spec_person, text = stringResource(R.string.about_howto_nickname) ) AboutInstructionRow( - icon = Icons.Outlined.Public, + iconRes = R.drawable.ic_spec_globe, text = stringResource(R.string.about_howto_channels) ) AboutInstructionRow( - icon = Icons.Filled.Person, + iconRes = R.drawable.ic_spec_people, text = stringResource(R.string.about_howto_people) ) AboutInstructionRow( - icon = Icons.Outlined.BookmarkBorder, + iconRes = R.drawable.ic_spec_bookmark_outline, text = stringResource(R.string.about_howto_bookmark) ) AboutInstructionRow( - icon = Icons.Filled.AlternateEmail, + iconRes = R.drawable.ic_spec_mention, text = stringResource(R.string.about_howto_mention) ) AboutInstructionRow( - icon = Icons.Filled.Terminal, + iconRes = R.drawable.ic_spec_command, text = stringResource(R.string.about_howto_commands) ) AboutInstructionRow( - icon = Icons.Filled.DeleteForever, + iconRes = R.drawable.ic_spec_waveform, text = stringResource(R.string.about_howto_panic) ) } @@ -422,22 +414,22 @@ internal fun AboutHowToUseSection(modifier: Modifier = Modifier) { internal fun AboutFeatureCard(modifier: Modifier = Modifier) { val features = listOf( Triple( - Icons.Filled.WifiOff, + R.drawable.ic_spec_wifi_off, R.string.about_offline_mesh_title, R.string.about_offline_mesh_desc ), Triple( - Icons.Outlined.Lock, + R.drawable.ic_spec_lock, R.string.about_e2e_title, R.string.about_e2e_desc ), Triple( - Icons.Outlined.Public, + R.drawable.ic_spec_globe, R.string.about_online_geohash_title, R.string.about_online_geohash_desc ), Triple( - Icons.Outlined.VisibilityOff, + R.drawable.ic_spec_eye_off, R.string.about_no_tracking_title, R.string.about_no_tracking_desc ), @@ -446,7 +438,7 @@ internal fun AboutFeatureCard(modifier: Modifier = Modifier) { Column(modifier = modifier.fillMaxWidth()) { features.forEach { (icon, titleRes, descRes) -> AboutFeatureRow( - icon = icon, + iconRes = icon, title = stringResource(titleRes), subtitle = stringResource(descRes) ) @@ -456,7 +448,7 @@ internal fun AboutFeatureCard(modifier: Modifier = Modifier) { @Composable private fun AboutFeatureRow( - icon: ImageVector, + @DrawableRes iconRes: Int, title: String, subtitle: String ) { @@ -471,7 +463,7 @@ private fun AboutFeatureRow( verticalAlignment = Alignment.Top ) { Icon( - imageVector = icon, + painter = painterResource(iconRes), contentDescription = null, tint = colorScheme.primary, modifier = Modifier @@ -617,4 +609,3 @@ internal fun SheetDestructiveButton( } } } - diff --git a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt index 2811bff4..50cd5ab4 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt @@ -32,7 +32,9 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.lerp import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction @@ -203,6 +205,64 @@ internal fun TorAwareHeaderIcon( } } +/** Painter-resource counterpart used by the extracted Figma SVG family. */ +@Composable +internal fun TorAwareHeaderIcon( + painter: Painter, + tint: Color, + isProgress: Boolean, + contentDescription: String?, + modifier: Modifier = Modifier, +) { + val pulse = if (isProgress) { + val transition = rememberInfiniteTransition(label = "torPainterGlow") + transition.animateFloat( + initialValue = 0.42f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 1800, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "torPainterGlowPulse" + ).value + } else { + 1f + } + + Box( + contentAlignment = Alignment.Center, + modifier = modifier.size(HeaderIconSize) + ) { + if (isProgress) { + val glowBrush = remember(tint) { + Brush.radialGradient( + colorStops = arrayOf( + 0.0f to tint.copy(alpha = 0.55f), + 0.45f to tint.copy(alpha = 0.22f), + 1.0f to Color.Transparent, + ) + ) + } + Box( + modifier = Modifier + .requiredSize(HeaderIconSize + 14.dp) + .graphicsLayer { alpha = pulse * 0.85f } + .background(glowBrush) + ) + } + Icon( + painter = painter, + contentDescription = contentDescription, + modifier = Modifier + .size(HeaderIconSize) + .graphicsLayer { + alpha = if (isProgress) 0.55f + pulse * 0.45f else 1f + }, + tint = tint + ) + } +} + @Composable fun NoiseSessionIcon( sessionState: String?, @@ -342,7 +402,7 @@ fun PeerCounter( Icon( // A single silhouette rather than a crowd: at 22.dp a multi-person glyph collapses // into an indistinct blob, and the number beside it already conveys "how many". - imageVector = Icons.Filled.Person, + painter = painterResource(R.drawable.ic_spec_people), contentDescription = when (selectedLocationChannel) { is com.bitchat.android.geohash.ChannelID.Location -> stringResource(R.string.cd_geohash_participants) else -> stringResource(R.string.cd_connected_peers) @@ -628,7 +688,11 @@ private fun LocationChannelsButton( } else { TorConnectionVisual(tint = channelColor, isProgress = false) } - val badgeIcon = if (isLocation) Icons.Outlined.Public else Icons.Filled.Hub + val badgeIconRes = if (isLocation) { + R.drawable.ic_spec_globe + } else { + R.drawable.ic_spec_range + } Row( verticalAlignment = Alignment.CenterVertically, @@ -645,7 +709,7 @@ private fun LocationChannelsButton( .padding(start = 0.dp, end = 6.dp) ) { TorAwareHeaderIcon( - imageVector = badgeIcon, + painter = painterResource(badgeIconRes), tint = torVisual.tint, isProgress = torVisual.isProgress, contentDescription = stringResource(R.string.cd_tor_status) diff --git a/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt b/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt index 8bbe89c4..0efab46f 100644 --- a/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt +++ b/app/src/main/java/com/bitchat/android/ui/GeohashPeopleList.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.res.stringResource +import androidx.compose.ui.res.painterResource import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.bitchat.android.ui.theme.BitchatFontFamily import com.bitchat.android.R @@ -60,7 +61,7 @@ fun GeohashPeopleList( Column(modifier = modifier) { if (geohashPeople.isEmpty()) { SheetIconSectionHeader( - icon = Icons.Outlined.Person, + iconRes = R.drawable.ic_spec_people, title = stringResource(R.string.section_people) ) Surface( @@ -163,7 +164,7 @@ fun GeohashPeopleList( if (namedPeople.isNotEmpty()) { SheetIconSectionHeader( - icon = Icons.Outlined.Person, + iconRes = R.drawable.ic_spec_people, title = stringResource(R.string.section_people) ) PeopleCard(people = namedPeople, row = { personRow(it) }) @@ -171,7 +172,7 @@ fun GeohashPeopleList( if (anonPeople.isNotEmpty()) { SheetIconSectionHeader( - icon = Icons.Outlined.HelpOutline, + iconRes = R.drawable.ic_spec_teleport, title = stringResource(R.string.section_anon), modifier = Modifier.padding(top = if (namedPeople.isNotEmpty()) 20.dp else 0.dp) ) @@ -307,9 +308,9 @@ private fun GeohashPersonItem( isMe -> "face.smiling" to palette.accentOrange else -> "face.smiling" to palette.textSecondary } - val statusIcon = when (iconName) { - "face.dashed" -> Icons.Outlined.Explore - else -> Icons.Outlined.LocationOn + val statusIconRes = when (iconName) { + "face.dashed" -> R.drawable.ic_spec_teleport + else -> R.drawable.ic_spec_person } val (baseNameRaw, suffixRaw) = splitSuffix(person.displayName) @@ -341,7 +342,7 @@ private fun GeohashPersonItem( ) } else { Icon( - imageVector = statusIcon, + painter = painterResource(statusIconRes), contentDescription = if (isTeleported || isMyTeleported) "Teleported user" else "User", modifier = Modifier.size(22.dp), tint = iconColor.copy(alpha = if (iconName == "face.dashed") 0.6f else 1.0f) diff --git a/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt b/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt index 4004c520..b6db766e 100644 --- a/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/LocationChannelsSheet.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -192,7 +193,7 @@ fun LocationChannelsSheet( item(key = "mesh_card") { Column { SheetIconSectionHeader( - icon = Icons.Filled.Hub, + iconRes = R.drawable.ic_spec_range, title = stringResource(R.string.mesh_title), subtitle = stringResource(R.string.mesh_section_subtitle), modifier = Modifier.padding(top = 8.dp) @@ -230,7 +231,7 @@ fun LocationChannelsSheet( item(key = "location_channels_header") { SheetIconSectionHeader( - icon = Icons.Outlined.Public, + iconRes = R.drawable.ic_spec_globe, title = stringResource(R.string.location_channels_heading), subtitle = stringResource(R.string.location_channels_desc), modifier = Modifier.padding(top = 20.dp) @@ -726,7 +727,13 @@ private fun ChannelBookmarkButton( contentAlignment = Alignment.Center ) { Icon( - imageVector = if (bookmarked) Icons.Filled.Bookmark else Icons.Outlined.BookmarkBorder, + painter = painterResource( + if (bookmarked) { + R.drawable.ic_spec_bookmark_filled + } else { + R.drawable.ic_spec_bookmark_outline + } + ), contentDescription = stringResource( if (bookmarked) R.string.cd_remove_bookmark else R.string.cd_add_bookmark ), diff --git a/app/src/main/java/com/bitchat/android/ui/LocationNotesButton.kt b/app/src/main/java/com/bitchat/android/ui/LocationNotesButton.kt index 23157e5d..70f98d5a 100644 --- a/app/src/main/java/com/bitchat/android/ui/LocationNotesButton.kt +++ b/app/src/main/java/com/bitchat/android/ui/LocationNotesButton.kt @@ -1,7 +1,5 @@ package com.bitchat.android.ui -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Description import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape @@ -17,6 +15,7 @@ import androidx.compose.ui.draw.scale import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.bitchat.android.R import com.bitchat.android.geohash.ChannelID @@ -66,7 +65,7 @@ fun LocationNotesButton( contentAlignment = Alignment.Center ) { TorAwareHeaderIcon( - imageVector = Icons.Outlined.Description, + painter = painterResource(R.drawable.ic_spec_chat_bubbles), tint = torVisual.tint, isProgress = torVisual.isProgress, contentDescription = contentDescription diff --git a/app/src/main/java/com/bitchat/android/ui/MeshPeerListSheet.kt b/app/src/main/java/com/bitchat/android/ui/MeshPeerListSheet.kt index 05af5f24..a09ff487 100644 --- a/app/src/main/java/com/bitchat/android/ui/MeshPeerListSheet.kt +++ b/app/src/main/java/com/bitchat/android/ui/MeshPeerListSheet.kt @@ -28,6 +28,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -122,7 +123,7 @@ fun MeshPeerListSheet( item(key = "channels_section") { Column { SheetIconSectionHeader( - icon = Icons.Filled.Tag, + iconRes = R.drawable.ic_spec_chat_bubbles, title = stringResource(R.string.channels), modifier = Modifier.padding(top = 8.dp) ) @@ -321,7 +322,7 @@ fun PeopleSection( Column(modifier = modifier) { SheetIconSectionHeader( - icon = Icons.Filled.Person, + iconRes = R.drawable.ic_spec_people, title = stringResource(R.string.people_count_title, peopleCount) ) @@ -616,7 +617,7 @@ private fun PeerItem( ) } else if (showNostrGlobe) { Icon( - imageVector = Icons.Filled.Public, + painter = painterResource(R.drawable.ic_spec_globe), contentDescription = stringResource(R.string.cd_reachable_via_nostr), modifier = Modifier.size(PeerRowIconSize), tint = palette.accentPurple @@ -690,7 +691,7 @@ private fun PeerItem( contentAlignment = Alignment.Center ) { Icon( - imageVector = if (isFavorite) Icons.Filled.Star else Icons.Outlined.Star, + painter = painterResource(R.drawable.ic_spec_star), contentDescription = if (isFavorite) "Remove from favorites" else "Add to favorites", modifier = Modifier.size(PeerRowIconSize), tint = if (isFavorite) palette.accentOrange else palette.textTertiary @@ -971,7 +972,7 @@ fun PrivateChatSheet( when { isNostrPeer || isNostrReachableFavorite -> { Icon( - imageVector = Icons.Filled.Public, + painter = painterResource(R.drawable.ic_spec_globe), contentDescription = stringResource(R.string.cd_nostr_reachable), modifier = Modifier.size(14.dp), tint = Color(0xFF9C27B0) @@ -1039,7 +1040,7 @@ fun PrivateChatSheet( modifier = Modifier.size(28.dp) ) { Icon( - imageVector = if (isFavorite) Icons.Filled.Star else Icons.Outlined.Star, + painter = painterResource(R.drawable.ic_spec_star), contentDescription = if (isFavorite) stringResource(R.string.cd_remove_favorite) else stringResource(R.string.cd_add_favorite), modifier = Modifier.size(16.dp), tint = if (isFavorite) Color(0xFFFFD700) else colorScheme.onSurface.copy(alpha = 0.6f) diff --git a/app/src/main/res/drawable/ic_spec_bookmark_filled.xml b/app/src/main/res/drawable/ic_spec_bookmark_filled.xml new file mode 100644 index 00000000..2e73b458 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_bookmark_filled.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/drawable/ic_spec_bookmark_outline.xml b/app/src/main/res/drawable/ic_spec_bookmark_outline.xml new file mode 100644 index 00000000..988fe44c --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_bookmark_outline.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/drawable/ic_spec_chat_bubbles.xml b/app/src/main/res/drawable/ic_spec_chat_bubbles.xml new file mode 100644 index 00000000..76109058 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_chat_bubbles.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_command.xml b/app/src/main/res/drawable/ic_spec_command.xml new file mode 100644 index 00000000..366173cd --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_command.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_eye_off.xml b/app/src/main/res/drawable/ic_spec_eye_off.xml new file mode 100644 index 00000000..2e852cf4 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_eye_off.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_globe.xml b/app/src/main/res/drawable/ic_spec_globe.xml new file mode 100644 index 00000000..b56bb3a8 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_globe.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_lock.xml b/app/src/main/res/drawable/ic_spec_lock.xml new file mode 100644 index 00000000..42713a11 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_lock.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_mention.xml b/app/src/main/res/drawable/ic_spec_mention.xml new file mode 100644 index 00000000..a57bf9af --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_mention.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_panic.xml b/app/src/main/res/drawable/ic_spec_panic.xml new file mode 100644 index 00000000..7c876da3 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_panic.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_spec_people.xml b/app/src/main/res/drawable/ic_spec_people.xml new file mode 100644 index 00000000..3b2d46f5 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_people.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_person.xml b/app/src/main/res/drawable/ic_spec_person.xml new file mode 100644 index 00000000..33c42dcb --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_person.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_range.xml b/app/src/main/res/drawable/ic_spec_range.xml new file mode 100644 index 00000000..5ba47d6c --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_range.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_spec_shuffle.xml b/app/src/main/res/drawable/ic_spec_shuffle.xml new file mode 100644 index 00000000..9f431732 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_shuffle.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_spec_star.xml b/app/src/main/res/drawable/ic_spec_star.xml new file mode 100644 index 00000000..c48025ab --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_star.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_spec_teleport.xml b/app/src/main/res/drawable/ic_spec_teleport.xml new file mode 100644 index 00000000..6d215dea --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_teleport.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_spec_waveform.xml b/app/src/main/res/drawable/ic_spec_waveform.xml new file mode 100644 index 00000000..2e0070b6 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_waveform.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_spec_wifi_off.xml b/app/src/main/res/drawable/ic_spec_wifi_off.xml new file mode 100644 index 00000000..4a716e57 --- /dev/null +++ b/app/src/main/res/drawable/ic_spec_wifi_off.xml @@ -0,0 +1,12 @@ + + + + + + + +