From 9010e85411e9f527a3643fa7bc93e3124fa28b1c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 22:38:43 +0000 Subject: [PATCH 1/4] feat: monochrome outline Cashu icon for Material Symbols compatibility Convert the multi-tone "deez nuts" Cashu/nutzap logo into a single-color, tintable outline icon so it behaves like a Material Symbol glyph: the cashew body is a hollow stroke (1.2 weight, matching the shared Zap outline icon) and the pixel sunglasses stay a solid fill so they read at small sizes. Drop the `tint = Color.Unspecified` overrides at every call site (zap chips, nutzap rows/gallery, redeem, wallet screens) so the icon now tints with the surrounding content colour instead of being locked to the brand browns, and remove the imports/comments that only existed to preserve the old multi-tone rendering. --- .../amethyst/ui/components/CashuRedeem.kt | 1 - .../vitorpamplona/amethyst/ui/note/Icons.kt | 1 - .../amethyst/ui/note/MultiSetCompose.kt | 6 - .../amethyst/ui/note/NutzapGallery.kt | 6 - .../amethyst/ui/note/NutzapUserSetCompose.kt | 4 - .../amethyst/ui/note/ReactionsRow.kt | 5 - .../loggedIn/wallet/CashuWalletScreen.kt | 2 - .../wallet/CashuWalletSettingsScreen.kt | 2 - .../amethyst/commons/hashtags/Cashu.kt | 342 ++++++------------ 9 files changed, 120 insertions(+), 249 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt index 7061d1df42..36f29b00c5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt @@ -161,7 +161,6 @@ fun CashuPreviewNew( imageVector = CustomHashTagIcons.Cashu, null, modifier = Modifier.size(13.dp), - tint = Color.Unspecified, ) Text( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt index 6f7f00405b..27623eb4f1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt @@ -244,7 +244,6 @@ fun CashuIcon(modifier: Modifier) { Icon( imageVector = CustomHashTagIcons.Cashu, stringRes(R.string.cashu), - tint = Color.Unspecified, modifier = modifier, ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt index 9266a50de8..374ff41b74 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt @@ -380,16 +380,10 @@ fun RenderNutzapGallery( Box( modifier = WidthAuthorPictureModifier, ) { - // CustomHashTagIcons.Cashu is a multi-tone branded glyph; - // tint=Unspecified keeps the brand colours instead of - // flattening to onBackground (which would lose the cashu- - // orange distinguishing the row from the lightning-bolt - // row above it). Icon( imageVector = CustomHashTagIcons.Cashu, contentDescription = stringRes(R.string.nutzap), modifier = Modifier.size(Size20dp).align(Alignment.TopEnd), - tint = Color.Unspecified, ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapGallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapGallery.kt index 807e61b160..4283371205 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapGallery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapGallery.kt @@ -34,7 +34,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.hashtags.Cashu import com.vitorpamplona.amethyst.commons.hashtags.CustomHashTagIcons @@ -91,15 +90,10 @@ private fun RenderNutzapGalleryRow( ) { Row(Modifier.fillMaxWidth()) { Box(modifier = WidthAuthorPictureModifier) { - // tint=Unspecified preserves the multi-tone cashu glyph, - // same convention as the notifications and zap-picker - // surfaces. Keeping the rail visually distinct from the - // lightning bolt above it is the whole point of this row. Icon( imageVector = CustomHashTagIcons.Cashu, contentDescription = stringRes(R.string.nutzap), modifier = Modifier.size(Size20dp).align(Alignment.TopEnd), - tint = Color.Unspecified, ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapUserSetCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapUserSetCompose.kt index f060064a38..393c8e86ae 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapUserSetCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NutzapUserSetCompose.kt @@ -34,7 +34,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.hashtags.Cashu @@ -109,13 +108,10 @@ fun NutzapUserSetCompose( Box( modifier = Size55Modifier, ) { - // tint=Unspecified so the multi-tone cashu glyph keeps its - // brand colours, the same way it does in the zap chip popup. Icon( imageVector = CustomHashTagIcons.Cashu, contentDescription = stringRes(R.string.nutzap), modifier = Modifier.size(Size25dp).align(Alignment.TopEnd), - tint = Color.Unspecified, ) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index 65abc41c87..ae922d8403 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -2117,15 +2117,10 @@ private fun NutzapAmountChip( .padding(horizontal = 12.dp, vertical = 6.dp), verticalAlignment = CenterVertically, ) { - // CustomHashTagIcons.Cashu ships a multi-tone Cashu logo; using - // tint=Unspecified preserves it instead of flattening to onTertiary - // (which would lose the cashu-orange brand cue that distinguishes - // this chip from the orange Lightning bolt next to it). Material3Icon( imageVector = CustomHashTagIcons.Cashu, contentDescription = stringRes(R.string.nutzap), modifier = Size18Modifier, - tint = Color.Unspecified, ) Spacer(Modifier.width(2.dp)) Text( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletScreen.kt index 167c11f882..5e54f6b328 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletScreen.kt @@ -64,7 +64,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.text.font.FontWeight @@ -541,7 +540,6 @@ private fun MintRow( imageVector = CustomHashTagIcons.Cashu, contentDescription = null, modifier = Modifier.size(20.dp), - tint = Color.Unspecified, ) Spacer(modifier = Modifier.width(12.dp)) Text(text = mint, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.weight(1f)) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletSettingsScreen.kt index 3d9fe4b3c4..09f39c20fb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/CashuWalletSettingsScreen.kt @@ -58,7 +58,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -402,7 +401,6 @@ private fun RecommendationSuggestionList( imageVector = CustomHashTagIcons.Cashu, contentDescription = null, modifier = Modifier.size(16.dp), - tint = Color.Unspecified, ) Spacer(modifier = Modifier.width(10.dp)) Text( diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt index e1de172b11..c348c416d6 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt @@ -23,16 +23,13 @@ package com.vitorpamplona.amethyst.commons.hashtags import androidx.compose.foundation.Image import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.PathFillType.Companion.NonZero import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.graphics.StrokeCap.Companion.Butt -import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.graphics.vector.ImageVector.Builder import androidx.compose.ui.graphics.vector.path import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.materialIcon +import com.vitorpamplona.amethyst.commons.icons.materialOutlinedPath @Preview @Composable @@ -46,235 +43,136 @@ fun CustomHashTagIconsCashuPreview() { ) } +// Monochrome, tintable "deez nuts" cashew + pixel-shades mark. The body is a +// hollow outline (matching the 1.2 stroke weight of the shared outline icons +// such as Zap) so it tints with the surrounding content colour like a Material +// Symbol; the sunglasses stay a solid fill so they read at small sizes. public val CustomHashTagIcons.Cashu: ImageVector get() { if (customHashTagIconsCashu != null) { return customHashTagIconsCashu!! } customHashTagIconsCashu = - Builder( - name = "Cashu", - defaultWidth = 400.0.dp, - defaultHeight = 400.0.dp, - viewportWidth = 400.0f, - viewportHeight = 400.0f, - ).apply { - path( - fill = SolidColor(Color(0xFFd6c09a)), - stroke = SolidColor(Color(0xFFd6c09a)), - strokeLineWidth = 1.23101f, - strokeLineCap = Butt, - strokeLineJoin = Miter, - strokeLineMiter = 4.0f, - pathFillType = NonZero, - ) { - moveTo(248.917f, 2.153f) - verticalLineTo(25.235f) - horizontalLineToRelative(25.236f) - verticalLineToRelative(71.091f) - horizontalLineToRelative(-25.236f) - lineToRelative(0.227f, 24.772f) - lineToRelative(-22.156f, 0.011f) - lineToRelative(-0.135f, 69.22f) - lineToRelative(22.065f, -0.532f) - verticalLineToRelative(45.326f) - horizontalLineToRelative(74.476f) - verticalLineToRelative(24.313f) - horizontalLineToRelative(24.928f) - verticalLineToRelative(24.005f) - horizontalLineToRelative(23.389f) - verticalLineToRelative(69.245f) - horizontalLineToRelative(-23.082f) - verticalLineToRelative(23.082f) - horizontalLineToRelative(-24.928f) - verticalLineToRelative(23.005f) - horizontalLineTo(126.2f) - verticalLineToRelative(-23.005f) - horizontalLineTo(100.503f) - verticalLineTo(352.454f) - horizontalLineTo(74.959f) - verticalLineTo(329.68f) - horizontalLineTo(51.801f) - verticalLineTo(282.901f) - horizontalLineTo(25.949f) - verticalLineTo(49.239f) - horizontalLineToRelative(26.082f) - verticalLineTo(25.158f) - horizontalLineTo(74.574f) - verticalLineTo(2.153f) + materialIcon(name = "Cashu") { + materialOutlinedPath { + moveTo(14.64f, 1.60f) + lineTo(14.64f, 2.81f) + lineTo(15.96f, 2.81f) + lineTo(15.96f, 6.54f) + lineTo(14.64f, 6.54f) + lineTo(14.65f, 7.84f) + lineTo(13.49f, 7.84f) + lineTo(13.48f, 11.47f) + lineTo(14.64f, 11.44f) + lineTo(14.64f, 13.82f) + lineTo(18.54f, 13.82f) + lineTo(18.54f, 15.09f) + lineTo(19.85f, 15.09f) + lineTo(19.85f, 16.35f) + lineTo(21.08f, 16.35f) + lineTo(21.08f, 19.98f) + lineTo(19.87f, 19.98f) + lineTo(19.87f, 21.19f) + lineTo(18.56f, 21.19f) + lineTo(18.56f, 22.40f) + lineTo(8.20f, 22.40f) + lineTo(8.20f, 21.19f) + lineTo(6.85f, 21.19f) + lineTo(6.85f, 19.97f) + lineTo(5.51f, 19.97f) + lineTo(5.51f, 18.78f) + lineTo(4.30f, 18.78f) + lineTo(4.30f, 16.32f) + lineTo(2.94f, 16.32f) + lineTo(2.94f, 4.07f) + lineTo(4.31f, 4.07f) + lineTo(4.31f, 2.81f) + lineTo(5.49f, 2.81f) + lineTo(5.49f, 1.60f) close() } - path( - fill = SolidColor(Color(0xFFbb9366)), - stroke = SolidColor(Color(0xFFbb9366)), - strokeLineWidth = 1.23101f, - strokeLineCap = Butt, - strokeLineJoin = Miter, - strokeLineMiter = 4.0f, - pathFillType = NonZero, - ) { - moveTo(74.39f, 2.268f) - lineTo(74.39f, 25.272f) - lineTo(51.847f, 25.272f) - lineTo(51.847f, 49.354f) - lineTo(25.765f, 49.354f) - lineToRelative(0.407f, 233.662f) - lineTo(51.709f, 283.016f) - curveTo(52.428f, 236.898f, 76.75f, 25.19f, 125.239f, 25.349f) - lineTo(125.384f, 2.268f) + path(fill = SolidColor(Color.Black)) { + moveTo(2.92f, 7.82f) + lineTo(2.92f, 8.77f) + lineTo(3.44f, 8.77f) + lineTo(3.44f, 9.33f) + lineTo(3.86f, 9.33f) + lineTo(3.86f, 9.85f) + lineTo(4.40f, 9.85f) + lineTo(4.40f, 10.25f) + lineTo(7.93f, 10.25f) + lineTo(7.93f, 9.83f) + lineTo(8.46f, 9.83f) + lineTo(8.46f, 9.32f) + lineTo(8.99f, 9.32f) + lineTo(8.99f, 8.22f) + lineTo(9.92f, 8.22f) + lineTo(9.92f, 9.31f) + lineTo(10.46f, 9.31f) + lineTo(10.46f, 9.82f) + lineTo(10.88f, 9.82f) + lineTo(10.88f, 10.23f) + lineTo(14.42f, 10.23f) + lineTo(14.42f, 9.83f) + lineTo(14.93f, 9.83f) + lineTo(14.93f, 9.31f) + lineTo(15.47f, 9.31f) + lineTo(15.47f, 8.77f) + lineTo(15.97f, 8.77f) + lineTo(15.97f, 7.83f) close() - moveTo(51.616f, 283.0f) - verticalLineToRelative(46.795f) - horizontalLineToRelative(23.158f) - verticalLineToRelative(22.774f) - lineTo(99.936f, 352.568f) - lineTo(99.936f, 331.112f) - lineTo(75.162f, 331.112f) - verticalLineToRelative(-47.893f) + moveTo(10.95f, 8.21f) + lineTo(11.45f, 8.21f) + lineTo(11.45f, 8.74f) + lineTo(12.00f, 8.74f) + lineTo(12.00f, 9.27f) + lineTo(12.49f, 9.27f) + lineTo(12.49f, 8.74f) + lineTo(12.00f, 8.74f) + lineTo(12.00f, 8.21f) + lineTo(12.51f, 8.21f) + lineTo(12.51f, 8.74f) + lineTo(12.97f, 8.74f) + lineTo(12.97f, 9.28f) + lineTo(13.46f, 9.28f) + lineTo(13.46f, 9.78f) + lineTo(12.97f, 9.78f) + lineTo(12.97f, 9.28f) + lineTo(12.51f, 9.28f) + lineTo(12.51f, 9.76f) + lineTo(12.00f, 9.76f) + lineTo(12.00f, 9.28f) + lineTo(11.45f, 9.28f) + lineTo(11.45f, 8.74f) + lineTo(10.95f, 8.74f) close() - moveTo(100.318f, 354.117f) - verticalLineToRelative(21.764f) - horizontalLineToRelative(25.469f) - verticalLineToRelative(-21.764f) - close() - moveTo(323.596f, 354.501f) - verticalLineToRelative(21.379f) - horizontalLineToRelative(24.849f) - verticalLineToRelative(-21.379f) - close() - moveTo(126.016f, 377.506f) - verticalLineToRelative(21.379f) - horizontalLineToRelative(197.501f) - verticalLineToRelative(-21.379f) + moveTo(3.86f, 8.28f) + lineTo(4.35f, 8.28f) + lineTo(4.35f, 8.81f) + lineTo(4.90f, 8.82f) + lineTo(4.90f, 9.34f) + lineTo(5.40f, 9.34f) + lineTo(5.40f, 8.81f) + lineTo(4.91f, 8.81f) + lineTo(4.91f, 8.28f) + lineTo(5.41f, 8.28f) + lineTo(5.41f, 8.81f) + lineTo(5.87f, 8.81f) + lineTo(5.88f, 9.35f) + lineTo(6.36f, 9.35f) + lineTo(6.36f, 9.85f) + lineTo(5.88f, 9.85f) + lineTo(5.88f, 9.35f) + lineTo(5.41f, 9.35f) + lineTo(5.41f, 9.83f) + lineTo(4.91f, 9.83f) + lineTo(4.91f, 9.35f) + lineTo(4.35f, 9.35f) + lineTo(4.35f, 8.82f) + lineTo(3.86f, 8.81f) close() } - path( - fill = SolidColor(Color(0xFFc4a47b)), - stroke = SolidColor(Color(0xFFc4a47b)), - strokeLineWidth = 1.23101f, - strokeLineCap = Butt, - strokeLineJoin = Miter, - strokeLineMiter = 4.0f, - pathFillType = NonZero, - ) { - moveTo(74.466f, 25.205f) - lineTo(125.28f, 25.706f) - verticalLineTo(49.249f) - horizontalLineTo(100.505f) - verticalLineTo(213.59f) - horizontalLineToRelative(24.928f) - verticalLineToRelative(47.394f) - horizontalLineToRelative(48.625f) - verticalLineToRelative(24.005f) - horizontalLineToRelative(25.697f) - verticalLineToRelative(22.928f) - horizontalLineToRelative(22.928f) - verticalLineToRelative(23.005f) - horizontalLineToRelative(125.948f) - verticalLineToRelative(23.466f) - horizontalLineToRelative(-24.851f) - verticalLineToRelative(23.005f) - horizontalLineTo(125.972f) - verticalLineToRelative(-23.389f) - horizontalLineToRelative(-25.851f) - verticalLineTo(330.998f) - horizontalLineTo(75.346f) - verticalLineTo(283.291f) - lineTo(51.581f, 283.072f) - lineTo(51.487f, 49.319f) - horizontalLineToRelative(22.77f) - close() - } - path( - fill = SolidColor(Color(0xFF000000)), - stroke = SolidColor(Color(0x00000000)), - strokeLineWidth = 1.23101f, - strokeLineCap = Butt, - strokeLineJoin = Miter, - strokeLineMiter = 4.0f, - pathFillType = NonZero, - ) { - moveToRelative(25.598f, 120.678f) - verticalLineToRelative(18.254f) - horizontalLineToRelative(9.75f) - verticalLineToRelative(10.545f) - horizontalLineToRelative(8.151f) - verticalLineToRelative(9.925f) - horizontalLineToRelative(10.192f) - verticalLineToRelative(7.708f) - horizontalLineToRelative(67.434f) - verticalLineToRelative(-7.975f) - horizontalLineToRelative(10.012f) - verticalLineToRelative(-9.836f) - horizontalLineToRelative(10.192f) - verticalLineToRelative(-20.824f) - horizontalLineToRelative(17.722f) - verticalLineToRelative(20.648f) - horizontalLineToRelative(10.278f) - verticalLineToRelative(9.747f) - horizontalLineToRelative(7.886f) - verticalLineToRelative(7.797f) - horizontalLineToRelative(67.523f) - verticalLineToRelative(-7.619f) - horizontalLineToRelative(9.747f) - verticalLineToRelative(-9.836f) - horizontalLineToRelative(10.367f) - verticalLineToRelative(-10.37f) - horizontalLineToRelative(9.572f) - verticalLineToRelative(-17.809f) - close() - moveTo(178.698f, 128.19f) - horizontalLineToRelative(9.394f) - verticalLineToRelative(10.146f) - lineToRelative(10.557f, 0.043f) - verticalLineToRelative(10.012f) - horizontalLineToRelative(9.399f) - verticalLineToRelative(-10.151f) - horizontalLineToRelative(-9.322f) - lineTo(198.726f, 128.19f) - lineToRelative(9.615f, 0.043f) - verticalLineToRelative(10.103f) - horizontalLineToRelative(8.807f) - lineToRelative(0.053f, 10.233f) - lineToRelative(9.216f, 0.046f) - verticalLineToRelative(9.569f) - lineToRelative(-9.259f, -0.043f) - lineToRelative(0.043f, -9.572f) - horizontalLineToRelative(-8.906f) - verticalLineToRelative(9.216f) - horizontalLineToRelative(-9.569f) - verticalLineToRelative(-9.17f) - lineToRelative(-10.634f, -0.089f) - lineToRelative(0.046f, -10.146f) - lineToRelative(-9.439f, -0.043f) - close() - moveTo(43.409f, 129.541f) - horizontalLineToRelative(9.394f) - verticalLineToRelative(10.146f) - lineToRelative(10.557f, 0.043f) - verticalLineToRelative(10.012f) - horizontalLineToRelative(9.399f) - lineTo(72.759f, 139.591f) - horizontalLineToRelative(-9.322f) - verticalLineToRelative(-10.05f) - lineToRelative(9.615f, 0.043f) - verticalLineToRelative(10.103f) - horizontalLineToRelative(8.807f) - lineToRelative(0.053f, 10.233f) - lineToRelative(9.216f, 0.046f) - verticalLineToRelative(9.569f) - lineToRelative(-9.259f, -0.043f) - lineToRelative(0.043f, -9.572f) - horizontalLineToRelative(-8.906f) - verticalLineToRelative(9.216f) - horizontalLineToRelative(-9.569f) - verticalLineToRelative(-9.17f) - lineToRelative(-10.634f, -0.089f) - lineToRelative(0.046f, -10.146f) - lineToRelative(-9.439f, -0.043f) - close() - } - }.build() + } return customHashTagIconsCashu!! } From 71bed1cf0a9078dea77f462e5a9ea8494ff05728 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 22:51:54 +0000 Subject: [PATCH 2/4] refactor: slim Cashu body and enlarge the sunglasses Squeeze the cashew outline horizontally (~0.72) and scale the pixel sunglasses up (~1.45) so the shades overhang the body for a bolder, more recognizable mark. Stroke weight stays at 1.2 to match the shared Zap outline icon. --- .../amethyst/commons/hashtags/Cashu.kt | 224 +++++++++--------- 1 file changed, 113 insertions(+), 111 deletions(-) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt index c348c416d6..7769a6e876 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt @@ -46,7 +46,9 @@ fun CustomHashTagIconsCashuPreview() { // Monochrome, tintable "deez nuts" cashew + pixel-shades mark. The body is a // hollow outline (matching the 1.2 stroke weight of the shared outline icons // such as Zap) so it tints with the surrounding content colour like a Material -// Symbol; the sunglasses stay a solid fill so they read at small sizes. +// Symbol; the sunglasses stay a solid fill so they read at small sizes. The +// cashew is squeezed horizontally and the shades enlarged so they overhang the +// body for a bolder look. public val CustomHashTagIcons.Cashu: ImageVector get() { if (customHashTagIconsCashu != null) { @@ -55,121 +57,121 @@ public val CustomHashTagIcons.Cashu: ImageVector customHashTagIconsCashu = materialIcon(name = "Cashu") { materialOutlinedPath { - moveTo(14.64f, 1.60f) - lineTo(14.64f, 2.81f) - lineTo(15.96f, 2.81f) - lineTo(15.96f, 6.54f) - lineTo(14.64f, 6.54f) - lineTo(14.65f, 7.84f) - lineTo(13.49f, 7.84f) - lineTo(13.48f, 11.47f) - lineTo(14.64f, 11.44f) - lineTo(14.64f, 13.82f) - lineTo(18.54f, 13.82f) - lineTo(18.54f, 15.09f) - lineTo(19.85f, 15.09f) - lineTo(19.85f, 16.35f) - lineTo(21.08f, 16.35f) - lineTo(21.08f, 19.98f) - lineTo(19.87f, 19.98f) - lineTo(19.87f, 21.19f) - lineTo(18.56f, 21.19f) - lineTo(18.56f, 22.40f) - lineTo(8.20f, 22.40f) - lineTo(8.20f, 21.19f) - lineTo(6.85f, 21.19f) - lineTo(6.85f, 19.97f) - lineTo(5.51f, 19.97f) - lineTo(5.51f, 18.78f) - lineTo(4.30f, 18.78f) - lineTo(4.30f, 16.32f) - lineTo(2.94f, 16.32f) - lineTo(2.94f, 4.07f) - lineTo(4.31f, 4.07f) - lineTo(4.31f, 2.81f) - lineTo(5.49f, 2.81f) - lineTo(5.49f, 1.60f) + moveTo(14.98f, 1.50f) + lineTo(14.98f, 2.72f) + lineTo(15.95f, 2.72f) + lineTo(15.95f, 6.49f) + lineTo(14.98f, 6.49f) + lineTo(14.99f, 7.80f) + lineTo(14.15f, 7.80f) + lineTo(14.14f, 11.46f) + lineTo(14.98f, 11.44f) + lineTo(14.98f, 13.84f) + lineTo(17.82f, 13.84f) + lineTo(17.82f, 15.12f) + lineTo(18.77f, 15.12f) + lineTo(18.77f, 16.39f) + lineTo(19.66f, 16.39f) + lineTo(19.66f, 20.06f) + lineTo(18.78f, 20.06f) + lineTo(18.78f, 21.28f) + lineTo(17.83f, 21.28f) + lineTo(17.83f, 22.50f) + lineTo(10.31f, 22.50f) + lineTo(10.31f, 21.28f) + lineTo(9.33f, 21.28f) + lineTo(9.33f, 20.05f) + lineTo(8.35f, 20.05f) + lineTo(8.35f, 18.84f) + lineTo(7.47f, 18.84f) + lineTo(7.47f, 16.36f) + lineTo(6.48f, 16.36f) + lineTo(6.48f, 3.99f) + lineTo(7.48f, 3.99f) + lineTo(7.48f, 2.72f) + lineTo(8.34f, 2.72f) + lineTo(8.34f, 1.50f) close() } path(fill = SolidColor(Color.Black)) { - moveTo(2.92f, 7.82f) - lineTo(2.92f, 8.77f) - lineTo(3.44f, 8.77f) - lineTo(3.44f, 9.33f) - lineTo(3.86f, 9.33f) - lineTo(3.86f, 9.85f) - lineTo(4.40f, 9.85f) - lineTo(4.40f, 10.25f) - lineTo(7.93f, 10.25f) - lineTo(7.93f, 9.83f) - lineTo(8.46f, 9.83f) - lineTo(8.46f, 9.32f) - lineTo(8.99f, 9.32f) - lineTo(8.99f, 8.22f) - lineTo(9.92f, 8.22f) - lineTo(9.92f, 9.31f) - lineTo(10.46f, 9.31f) - lineTo(10.46f, 9.82f) - lineTo(10.88f, 9.82f) - lineTo(10.88f, 10.23f) - lineTo(14.42f, 10.23f) - lineTo(14.42f, 9.83f) - lineTo(14.93f, 9.83f) - lineTo(14.93f, 9.31f) - lineTo(15.47f, 9.31f) - lineTo(15.47f, 8.77f) - lineTo(15.97f, 8.77f) - lineTo(15.97f, 7.83f) + moveTo(4.34f, 7.22f) + lineTo(4.34f, 8.62f) + lineTo(4.87f, 8.62f) + lineTo(4.87f, 9.43f) + lineTo(5.33f, 9.43f) + lineTo(5.33f, 10.20f) + lineTo(5.89f, 10.20f) + lineTo(5.89f, 10.79f) + lineTo(9.62f, 10.79f) + lineTo(9.62f, 10.18f) + lineTo(10.17f, 10.18f) + lineTo(10.17f, 9.42f) + lineTo(10.73f, 9.42f) + lineTo(10.73f, 7.82f) + lineTo(11.71f, 7.82f) + lineTo(11.71f, 9.41f) + lineTo(12.28f, 9.41f) + lineTo(12.28f, 10.15f) + lineTo(12.72f, 10.15f) + lineTo(12.72f, 10.75f) + lineTo(16.45f, 10.75f) + lineTo(16.45f, 10.17f) + lineTo(16.99f, 10.17f) + lineTo(16.99f, 9.41f) + lineTo(17.56f, 9.41f) + lineTo(17.56f, 8.62f) + lineTo(18.09f, 8.62f) + lineTo(18.09f, 7.25f) close() - moveTo(10.95f, 8.21f) - lineTo(11.45f, 8.21f) - lineTo(11.45f, 8.74f) - lineTo(12.00f, 8.74f) - lineTo(12.00f, 9.27f) - lineTo(12.49f, 9.27f) - lineTo(12.49f, 8.74f) - lineTo(12.00f, 8.74f) - lineTo(12.00f, 8.21f) - lineTo(12.51f, 8.21f) - lineTo(12.51f, 8.74f) - lineTo(12.97f, 8.74f) - lineTo(12.97f, 9.28f) - lineTo(13.46f, 9.28f) - lineTo(13.46f, 9.78f) - lineTo(12.97f, 9.78f) - lineTo(12.97f, 9.28f) - lineTo(12.51f, 9.28f) - lineTo(12.51f, 9.76f) - lineTo(12.00f, 9.76f) - lineTo(12.00f, 9.28f) - lineTo(11.45f, 9.28f) - lineTo(11.45f, 8.74f) - lineTo(10.95f, 8.74f) + moveTo(12.80f, 7.80f) + lineTo(13.32f, 7.80f) + lineTo(13.32f, 8.58f) + lineTo(13.90f, 8.58f) + lineTo(13.90f, 9.35f) + lineTo(14.42f, 9.35f) + lineTo(14.42f, 8.57f) + lineTo(13.91f, 8.57f) + lineTo(13.91f, 7.80f) + lineTo(14.44f, 7.80f) + lineTo(14.44f, 8.58f) + lineTo(14.92f, 8.58f) + lineTo(14.93f, 9.36f) + lineTo(15.44f, 9.37f) + lineTo(15.44f, 10.10f) + lineTo(14.92f, 10.10f) + lineTo(14.93f, 9.36f) + lineTo(14.43f, 9.36f) + lineTo(14.43f, 10.07f) + lineTo(13.91f, 10.07f) + lineTo(13.91f, 9.37f) + lineTo(13.32f, 9.36f) + lineTo(13.32f, 8.58f) + lineTo(12.80f, 8.58f) close() - moveTo(3.86f, 8.28f) - lineTo(4.35f, 8.28f) - lineTo(4.35f, 8.81f) - lineTo(4.90f, 8.82f) - lineTo(4.90f, 9.34f) - lineTo(5.40f, 9.34f) - lineTo(5.40f, 8.81f) - lineTo(4.91f, 8.81f) - lineTo(4.91f, 8.28f) - lineTo(5.41f, 8.28f) - lineTo(5.41f, 8.81f) - lineTo(5.87f, 8.81f) - lineTo(5.88f, 9.35f) - lineTo(6.36f, 9.35f) - lineTo(6.36f, 9.85f) - lineTo(5.88f, 9.85f) - lineTo(5.88f, 9.35f) - lineTo(5.41f, 9.35f) - lineTo(5.41f, 9.83f) - lineTo(4.91f, 9.83f) - lineTo(4.91f, 9.35f) - lineTo(4.35f, 9.35f) - lineTo(4.35f, 8.82f) - lineTo(3.86f, 8.81f) + moveTo(5.32f, 7.90f) + lineTo(5.84f, 7.90f) + lineTo(5.84f, 8.68f) + lineTo(6.42f, 8.69f) + lineTo(6.42f, 9.45f) + lineTo(6.94f, 9.45f) + lineTo(6.94f, 8.67f) + lineTo(6.43f, 8.67f) + lineTo(6.43f, 7.90f) + lineTo(6.96f, 7.91f) + lineTo(6.96f, 8.68f) + lineTo(7.45f, 8.68f) + lineTo(7.45f, 9.47f) + lineTo(7.96f, 9.47f) + lineTo(7.96f, 10.21f) + lineTo(7.45f, 10.20f) + lineTo(7.45f, 9.47f) + lineTo(6.96f, 9.47f) + lineTo(6.96f, 10.18f) + lineTo(6.43f, 10.18f) + lineTo(6.43f, 9.47f) + lineTo(5.84f, 9.46f) + lineTo(5.84f, 8.69f) + lineTo(5.32f, 8.68f) close() } } From df33b99b0761a7fdf2cd50729af592e6faaa801a Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 23:01:34 +0000 Subject: [PATCH 3/4] refactor: round the Cashu nut body into a smooth outline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the blocky pixel-stepped cashew silhouette with a smooth rounded outline (corner-cut and emitted as a compact Bézier spline) so the nut reads as a clean curved shape instead of a staircase. Use a round stroke cap/join at the same 1.2 weight; the pixel "deal-with-it" sunglasses stay a solid fill. --- .../amethyst/commons/hashtags/Cashu.kt | 263 ++++++++++-------- 1 file changed, 145 insertions(+), 118 deletions(-) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt index 7769a6e876..ac80dc9ea1 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt @@ -24,12 +24,13 @@ import androidx.compose.foundation.Image import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.StrokeCap.Companion.Round import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.path import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.commons.icons.materialIcon -import com.vitorpamplona.amethyst.commons.icons.materialOutlinedPath +import androidx.compose.ui.graphics.StrokeJoin.Companion.Round as RoundJoin @Preview @Composable @@ -43,12 +44,11 @@ fun CustomHashTagIconsCashuPreview() { ) } -// Monochrome, tintable "deez nuts" cashew + pixel-shades mark. The body is a -// hollow outline (matching the 1.2 stroke weight of the shared outline icons -// such as Zap) so it tints with the surrounding content colour like a Material -// Symbol; the sunglasses stay a solid fill so they read at small sizes. The -// cashew is squeezed horizontally and the shades enlarged so they overhang the -// body for a bolder look. +// Monochrome, tintable "deez nuts" cashew + pixel-shades mark. The cashew body +// is a smooth rounded outline (1.2 stroke weight, matching the shared Zap +// outline icon) so it tints with the surrounding content colour like a Material +// Symbol; the pixel "deal-with-it" sunglasses stay a solid fill, enlarged so +// they overhang the slimmed body for a bolder look. public val CustomHashTagIcons.Cashu: ImageVector get() { if (customHashTagIconsCashu != null) { @@ -56,122 +56,149 @@ public val CustomHashTagIcons.Cashu: ImageVector } customHashTagIconsCashu = materialIcon(name = "Cashu") { - materialOutlinedPath { - moveTo(14.98f, 1.50f) - lineTo(14.98f, 2.72f) - lineTo(15.95f, 2.72f) - lineTo(15.95f, 6.49f) - lineTo(14.98f, 6.49f) - lineTo(14.99f, 7.80f) - lineTo(14.15f, 7.80f) - lineTo(14.14f, 11.46f) - lineTo(14.98f, 11.44f) - lineTo(14.98f, 13.84f) - lineTo(17.82f, 13.84f) - lineTo(17.82f, 15.12f) - lineTo(18.77f, 15.12f) - lineTo(18.77f, 16.39f) - lineTo(19.66f, 16.39f) - lineTo(19.66f, 20.06f) - lineTo(18.78f, 20.06f) - lineTo(18.78f, 21.28f) - lineTo(17.83f, 21.28f) - lineTo(17.83f, 22.50f) - lineTo(10.31f, 22.50f) - lineTo(10.31f, 21.28f) - lineTo(9.33f, 21.28f) - lineTo(9.33f, 20.05f) - lineTo(8.35f, 20.05f) - lineTo(8.35f, 18.84f) - lineTo(7.47f, 18.84f) - lineTo(7.47f, 16.36f) - lineTo(6.48f, 16.36f) - lineTo(6.48f, 3.99f) - lineTo(7.48f, 3.99f) - lineTo(7.48f, 2.72f) - lineTo(8.34f, 2.72f) - lineTo(8.34f, 1.50f) + path( + fill = null, + stroke = SolidColor(Color.Black), + strokeLineWidth = 1.2f, + strokeLineCap = Round, + strokeLineJoin = RoundJoin, + ) { + moveTo(15.03f, 2.02f) + curveTo(15.15f, 2.16f, 15.01f, 2.39f, 15.12f, 2.51f) + curveTo(15.23f, 2.64f, 15.55f, 2.67f, 15.67f, 2.76f) + curveTo(15.79f, 2.85f, 15.79f, 2.65f, 15.84f, 3.06f) + curveTo(15.89f, 3.47f, 15.99f, 4.70f, 15.98f, 5.24f) + curveTo(15.96f, 5.78f, 15.90f, 6.07f, 15.76f, 6.30f) + curveTo(15.63f, 6.52f, 15.31f, 6.38f, 15.18f, 6.59f) + curveTo(15.04f, 6.81f, 15.07f, 7.37f, 14.96f, 7.58f) + curveTo(14.84f, 7.79f, 14.57f, 7.75f, 14.47f, 7.84f) + curveTo(14.36f, 7.93f, 14.37f, 7.87f, 14.32f, 8.13f) + curveTo(14.28f, 8.39f, 14.19f, 8.89f, 14.19f, 9.39f) + curveTo(14.19f, 9.89f, 14.20f, 10.73f, 14.32f, 11.11f) + curveTo(14.44f, 11.48f, 14.77f, 11.33f, 14.90f, 11.65f) + curveTo(15.02f, 11.98f, 15.01f, 12.74f, 15.07f, 13.04f) + curveTo(15.14f, 13.34f, 15.15f, 13.33f, 15.29f, 13.45f) + curveTo(15.44f, 13.58f, 15.57f, 13.69f, 15.96f, 13.79f) + curveTo(16.34f, 13.89f, 17.29f, 13.95f, 17.60f, 14.03f) + curveTo(17.91f, 14.11f, 17.76f, 14.09f, 17.82f, 14.25f) + curveTo(17.89f, 14.41f, 17.87f, 14.82f, 18.02f, 14.99f) + curveTo(18.17f, 15.17f, 18.58f, 15.12f, 18.73f, 15.31f) + curveTo(18.88f, 15.51f, 18.79f, 16.00f, 18.90f, 16.19f) + curveTo(19.02f, 16.38f, 19.30f, 16.32f, 19.42f, 16.45f) + curveTo(19.54f, 16.57f, 19.59f, 16.45f, 19.63f, 16.96f) + curveTo(19.66f, 17.47f, 19.66f, 18.98f, 19.63f, 19.48f) + curveTo(19.60f, 19.99f, 19.54f, 19.87f, 19.42f, 20.00f) + curveTo(19.30f, 20.13f, 19.03f, 20.07f, 18.91f, 20.25f) + curveTo(18.80f, 20.43f, 18.89f, 20.90f, 18.74f, 21.09f) + curveTo(18.60f, 21.28f, 18.17f, 21.25f, 18.03f, 21.40f) + curveTo(17.89f, 21.54f, 17.96f, 21.83f, 17.88f, 21.97f) + curveTo(17.80f, 22.10f, 18.08f, 22.13f, 17.53f, 22.21f) + curveTo(16.98f, 22.30f, 15.66f, 22.48f, 14.58f, 22.50f) + curveTo(13.50f, 22.52f, 11.74f, 22.38f, 11.05f, 22.31f) + curveTo(10.36f, 22.24f, 10.61f, 22.25f, 10.46f, 22.10f) + curveTo(10.32f, 21.95f, 10.35f, 21.55f, 10.19f, 21.40f) + curveTo(10.03f, 21.24f, 9.68f, 21.37f, 9.52f, 21.17f) + curveTo(9.35f, 20.96f, 9.38f, 20.38f, 9.21f, 20.16f) + curveTo(9.04f, 19.94f, 8.63f, 20.05f, 8.48f, 19.86f) + curveTo(8.33f, 19.67f, 8.42f, 19.20f, 8.31f, 19.03f) + curveTo(8.19f, 18.85f, 7.92f, 18.90f, 7.80f, 18.80f) + curveTo(7.68f, 18.70f, 7.66f, 18.82f, 7.59f, 18.45f) + curveTo(7.51f, 18.08f, 7.48f, 16.97f, 7.35f, 16.59f) + curveTo(7.23f, 16.21f, 6.97f, 16.53f, 6.84f, 16.17f) + curveTo(6.72f, 15.80f, 6.67f, 15.30f, 6.61f, 14.42f) + curveTo(6.56f, 13.55f, 6.50f, 12.59f, 6.52f, 10.94f) + curveTo(6.54f, 9.30f, 6.68f, 5.72f, 6.75f, 4.56f) + curveTo(6.83f, 3.40f, 6.84f, 4.11f, 6.95f, 3.98f) + curveTo(7.07f, 3.85f, 7.31f, 3.97f, 7.42f, 3.78f) + curveTo(7.54f, 3.58f, 7.51f, 3.02f, 7.65f, 2.82f) + curveTo(7.79f, 2.62f, 8.12f, 2.72f, 8.24f, 2.59f) + curveTo(8.36f, 2.45f, 8.30f, 2.15f, 8.37f, 2.01f) + curveTo(8.45f, 1.88f, 8.43f, 1.85f, 8.69f, 1.77f) + curveTo(8.95f, 1.69f, 9.24f, 1.58f, 9.93f, 1.54f) + curveTo(10.63f, 1.49f, 12.10f, 1.48f, 12.84f, 1.50f) + curveTo(13.59f, 1.52f, 14.04f, 1.59f, 14.40f, 1.67f) + curveTo(14.77f, 1.76f, 14.91f, 1.88f, 15.03f, 2.02f) close() } path(fill = SolidColor(Color.Black)) { - moveTo(4.34f, 7.22f) - lineTo(4.34f, 8.62f) - lineTo(4.87f, 8.62f) - lineTo(4.87f, 9.43f) - lineTo(5.33f, 9.43f) - lineTo(5.33f, 10.20f) - lineTo(5.89f, 10.20f) - lineTo(5.89f, 10.79f) - lineTo(9.62f, 10.79f) - lineTo(9.62f, 10.18f) - lineTo(10.17f, 10.18f) - lineTo(10.17f, 9.42f) - lineTo(10.73f, 9.42f) - lineTo(10.73f, 7.82f) - lineTo(11.71f, 7.82f) - lineTo(11.71f, 9.41f) - lineTo(12.28f, 9.41f) - lineTo(12.28f, 10.15f) - lineTo(12.72f, 10.15f) - lineTo(12.72f, 10.75f) - lineTo(16.45f, 10.75f) - lineTo(16.45f, 10.17f) - lineTo(16.99f, 10.17f) - lineTo(16.99f, 9.41f) - lineTo(17.56f, 9.41f) - lineTo(17.56f, 8.62f) - lineTo(18.09f, 8.62f) - lineTo(18.09f, 7.25f) + moveTo(4.37f, 7.21f) + lineTo(4.37f, 8.61f) + lineTo(4.91f, 8.61f) + lineTo(4.91f, 9.42f) + lineTo(5.36f, 9.42f) + lineTo(5.36f, 10.18f) + lineTo(5.92f, 10.18f) + lineTo(5.92f, 10.78f) + lineTo(9.66f, 10.78f) + lineTo(9.66f, 10.16f) + lineTo(10.21f, 10.16f) + lineTo(10.21f, 9.41f) + lineTo(10.77f, 9.41f) + lineTo(10.77f, 7.81f) + lineTo(11.75f, 7.81f) + lineTo(11.75f, 9.39f) + lineTo(12.32f, 9.39f) + lineTo(12.32f, 10.14f) + lineTo(12.76f, 10.14f) + lineTo(12.76f, 10.74f) + lineTo(16.49f, 10.74f) + lineTo(16.49f, 10.16f) + lineTo(17.03f, 10.16f) + lineTo(17.03f, 9.40f) + lineTo(17.61f, 9.40f) + lineTo(17.61f, 8.60f) + lineTo(18.14f, 8.60f) + lineTo(18.14f, 7.24f) close() - moveTo(12.80f, 7.80f) - lineTo(13.32f, 7.80f) - lineTo(13.32f, 8.58f) - lineTo(13.90f, 8.58f) - lineTo(13.90f, 9.35f) - lineTo(14.42f, 9.35f) - lineTo(14.42f, 8.57f) - lineTo(13.91f, 8.57f) - lineTo(13.91f, 7.80f) - lineTo(14.44f, 7.80f) - lineTo(14.44f, 8.58f) - lineTo(14.92f, 8.58f) - lineTo(14.93f, 9.36f) - lineTo(15.44f, 9.37f) - lineTo(15.44f, 10.10f) - lineTo(14.92f, 10.10f) - lineTo(14.93f, 9.36f) - lineTo(14.43f, 9.36f) - lineTo(14.43f, 10.07f) - lineTo(13.91f, 10.07f) - lineTo(13.91f, 9.37f) - lineTo(13.32f, 9.36f) - lineTo(13.32f, 8.58f) - lineTo(12.80f, 8.58f) + moveTo(12.84f, 7.79f) + lineTo(13.36f, 7.79f) + lineTo(13.36f, 8.57f) + lineTo(13.94f, 8.57f) + lineTo(13.94f, 9.34f) + lineTo(14.46f, 9.34f) + lineTo(14.46f, 8.56f) + lineTo(13.95f, 8.56f) + lineTo(13.95f, 7.79f) + lineTo(14.48f, 7.79f) + lineTo(14.48f, 8.57f) + lineTo(14.97f, 8.57f) + lineTo(14.97f, 9.35f) + lineTo(15.48f, 9.36f) + lineTo(15.48f, 10.09f) + lineTo(14.97f, 10.09f) + lineTo(14.97f, 9.35f) + lineTo(14.48f, 9.35f) + lineTo(14.48f, 10.06f) + lineTo(13.95f, 10.06f) + lineTo(13.95f, 9.36f) + lineTo(13.36f, 9.35f) + lineTo(13.36f, 8.57f) + lineTo(12.84f, 8.57f) close() - moveTo(5.32f, 7.90f) - lineTo(5.84f, 7.90f) - lineTo(5.84f, 8.68f) - lineTo(6.42f, 8.69f) - lineTo(6.42f, 9.45f) - lineTo(6.94f, 9.45f) - lineTo(6.94f, 8.67f) - lineTo(6.43f, 8.67f) - lineTo(6.43f, 7.90f) - lineTo(6.96f, 7.91f) - lineTo(6.96f, 8.68f) - lineTo(7.45f, 8.68f) - lineTo(7.45f, 9.47f) - lineTo(7.96f, 9.47f) - lineTo(7.96f, 10.21f) - lineTo(7.45f, 10.20f) - lineTo(7.45f, 9.47f) - lineTo(6.96f, 9.47f) - lineTo(6.96f, 10.18f) - lineTo(6.43f, 10.18f) - lineTo(6.43f, 9.47f) - lineTo(5.84f, 9.46f) - lineTo(5.84f, 8.69f) - lineTo(5.32f, 8.68f) + moveTo(5.36f, 7.89f) + lineTo(5.88f, 7.89f) + lineTo(5.88f, 8.67f) + lineTo(6.46f, 8.67f) + lineTo(6.46f, 9.44f) + lineTo(6.98f, 9.44f) + lineTo(6.98f, 8.66f) + lineTo(6.46f, 8.66f) + lineTo(6.46f, 7.89f) + lineTo(7.00f, 7.89f) + lineTo(7.00f, 8.67f) + lineTo(7.48f, 8.67f) + lineTo(7.49f, 9.46f) + lineTo(8.00f, 9.46f) + lineTo(8.00f, 10.19f) + lineTo(7.48f, 10.19f) + lineTo(7.49f, 9.46f) + lineTo(6.99f, 9.46f) + lineTo(6.99f, 10.16f) + lineTo(6.46f, 10.16f) + lineTo(6.46f, 9.46f) + lineTo(5.88f, 9.45f) + lineTo(5.88f, 8.67f) + lineTo(5.36f, 8.67f) close() } } From 93b77348ac1cecf72ccaaa32650619750aee02e3 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 23:30:48 +0000 Subject: [PATCH 4/4] refactor: enlarge the Cashu sunglasses further Bump the pixel sunglasses scale (1.45 -> 1.70) so the shades read bolder and overhang the slimmed, rounded cashew body more prominently. Body outline and 1.2 stroke weight unchanged. --- .../amethyst/commons/hashtags/Cashu.kt | 262 +++++++++--------- 1 file changed, 131 insertions(+), 131 deletions(-) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt index ac80dc9ea1..92f7951d8f 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/hashtags/Cashu.kt @@ -63,142 +63,142 @@ public val CustomHashTagIcons.Cashu: ImageVector strokeLineCap = Round, strokeLineJoin = RoundJoin, ) { - moveTo(15.03f, 2.02f) - curveTo(15.15f, 2.16f, 15.01f, 2.39f, 15.12f, 2.51f) - curveTo(15.23f, 2.64f, 15.55f, 2.67f, 15.67f, 2.76f) - curveTo(15.79f, 2.85f, 15.79f, 2.65f, 15.84f, 3.06f) - curveTo(15.89f, 3.47f, 15.99f, 4.70f, 15.98f, 5.24f) - curveTo(15.96f, 5.78f, 15.90f, 6.07f, 15.76f, 6.30f) - curveTo(15.63f, 6.52f, 15.31f, 6.38f, 15.18f, 6.59f) - curveTo(15.04f, 6.81f, 15.07f, 7.37f, 14.96f, 7.58f) - curveTo(14.84f, 7.79f, 14.57f, 7.75f, 14.47f, 7.84f) - curveTo(14.36f, 7.93f, 14.37f, 7.87f, 14.32f, 8.13f) - curveTo(14.28f, 8.39f, 14.19f, 8.89f, 14.19f, 9.39f) - curveTo(14.19f, 9.89f, 14.20f, 10.73f, 14.32f, 11.11f) - curveTo(14.44f, 11.48f, 14.77f, 11.33f, 14.90f, 11.65f) - curveTo(15.02f, 11.98f, 15.01f, 12.74f, 15.07f, 13.04f) - curveTo(15.14f, 13.34f, 15.15f, 13.33f, 15.29f, 13.45f) - curveTo(15.44f, 13.58f, 15.57f, 13.69f, 15.96f, 13.79f) - curveTo(16.34f, 13.89f, 17.29f, 13.95f, 17.60f, 14.03f) - curveTo(17.91f, 14.11f, 17.76f, 14.09f, 17.82f, 14.25f) - curveTo(17.89f, 14.41f, 17.87f, 14.82f, 18.02f, 14.99f) - curveTo(18.17f, 15.17f, 18.58f, 15.12f, 18.73f, 15.31f) - curveTo(18.88f, 15.51f, 18.79f, 16.00f, 18.90f, 16.19f) - curveTo(19.02f, 16.38f, 19.30f, 16.32f, 19.42f, 16.45f) - curveTo(19.54f, 16.57f, 19.59f, 16.45f, 19.63f, 16.96f) - curveTo(19.66f, 17.47f, 19.66f, 18.98f, 19.63f, 19.48f) - curveTo(19.60f, 19.99f, 19.54f, 19.87f, 19.42f, 20.00f) - curveTo(19.30f, 20.13f, 19.03f, 20.07f, 18.91f, 20.25f) - curveTo(18.80f, 20.43f, 18.89f, 20.90f, 18.74f, 21.09f) - curveTo(18.60f, 21.28f, 18.17f, 21.25f, 18.03f, 21.40f) - curveTo(17.89f, 21.54f, 17.96f, 21.83f, 17.88f, 21.97f) - curveTo(17.80f, 22.10f, 18.08f, 22.13f, 17.53f, 22.21f) - curveTo(16.98f, 22.30f, 15.66f, 22.48f, 14.58f, 22.50f) - curveTo(13.50f, 22.52f, 11.74f, 22.38f, 11.05f, 22.31f) - curveTo(10.36f, 22.24f, 10.61f, 22.25f, 10.46f, 22.10f) - curveTo(10.32f, 21.95f, 10.35f, 21.55f, 10.19f, 21.40f) - curveTo(10.03f, 21.24f, 9.68f, 21.37f, 9.52f, 21.17f) - curveTo(9.35f, 20.96f, 9.38f, 20.38f, 9.21f, 20.16f) - curveTo(9.04f, 19.94f, 8.63f, 20.05f, 8.48f, 19.86f) - curveTo(8.33f, 19.67f, 8.42f, 19.20f, 8.31f, 19.03f) - curveTo(8.19f, 18.85f, 7.92f, 18.90f, 7.80f, 18.80f) - curveTo(7.68f, 18.70f, 7.66f, 18.82f, 7.59f, 18.45f) - curveTo(7.51f, 18.08f, 7.48f, 16.97f, 7.35f, 16.59f) - curveTo(7.23f, 16.21f, 6.97f, 16.53f, 6.84f, 16.17f) - curveTo(6.72f, 15.80f, 6.67f, 15.30f, 6.61f, 14.42f) - curveTo(6.56f, 13.55f, 6.50f, 12.59f, 6.52f, 10.94f) - curveTo(6.54f, 9.30f, 6.68f, 5.72f, 6.75f, 4.56f) - curveTo(6.83f, 3.40f, 6.84f, 4.11f, 6.95f, 3.98f) - curveTo(7.07f, 3.85f, 7.31f, 3.97f, 7.42f, 3.78f) - curveTo(7.54f, 3.58f, 7.51f, 3.02f, 7.65f, 2.82f) - curveTo(7.79f, 2.62f, 8.12f, 2.72f, 8.24f, 2.59f) - curveTo(8.36f, 2.45f, 8.30f, 2.15f, 8.37f, 2.01f) - curveTo(8.45f, 1.88f, 8.43f, 1.85f, 8.69f, 1.77f) - curveTo(8.95f, 1.69f, 9.24f, 1.58f, 9.93f, 1.54f) - curveTo(10.63f, 1.49f, 12.10f, 1.48f, 12.84f, 1.50f) - curveTo(13.59f, 1.52f, 14.04f, 1.59f, 14.40f, 1.67f) - curveTo(14.77f, 1.76f, 14.91f, 1.88f, 15.03f, 2.02f) + moveTo(15.62f, 2.02f) + curveTo(15.74f, 2.16f, 15.60f, 2.39f, 15.71f, 2.51f) + curveTo(15.82f, 2.64f, 16.15f, 2.67f, 16.27f, 2.76f) + curveTo(16.39f, 2.85f, 16.38f, 2.65f, 16.43f, 3.06f) + curveTo(16.48f, 3.47f, 16.58f, 4.70f, 16.57f, 5.24f) + curveTo(16.56f, 5.78f, 16.49f, 6.07f, 16.36f, 6.30f) + curveTo(16.23f, 6.52f, 15.91f, 6.38f, 15.77f, 6.59f) + curveTo(15.64f, 6.81f, 15.67f, 7.37f, 15.55f, 7.58f) + curveTo(15.43f, 7.79f, 15.17f, 7.75f, 15.06f, 7.84f) + curveTo(14.96f, 7.93f, 14.96f, 7.87f, 14.92f, 8.13f) + curveTo(14.87f, 8.39f, 14.78f, 8.89f, 14.78f, 9.39f) + curveTo(14.78f, 9.89f, 14.79f, 10.73f, 14.91f, 11.11f) + curveTo(15.03f, 11.48f, 15.36f, 11.33f, 15.49f, 11.65f) + curveTo(15.61f, 11.98f, 15.60f, 12.74f, 15.67f, 13.04f) + curveTo(15.73f, 13.34f, 15.74f, 13.33f, 15.89f, 13.45f) + curveTo(16.04f, 13.58f, 16.17f, 13.69f, 16.55f, 13.79f) + curveTo(16.94f, 13.89f, 17.89f, 13.95f, 18.20f, 14.03f) + curveTo(18.51f, 14.11f, 18.35f, 14.09f, 18.42f, 14.25f) + curveTo(18.49f, 14.41f, 18.46f, 14.82f, 18.61f, 14.99f) + curveTo(18.76f, 15.17f, 19.18f, 15.12f, 19.32f, 15.31f) + curveTo(19.47f, 15.51f, 19.38f, 16.00f, 19.50f, 16.19f) + curveTo(19.61f, 16.38f, 19.89f, 16.32f, 20.01f, 16.45f) + curveTo(20.13f, 16.57f, 20.19f, 16.45f, 20.22f, 16.96f) + curveTo(20.26f, 17.47f, 20.26f, 18.98f, 20.22f, 19.48f) + curveTo(20.19f, 19.99f, 20.14f, 19.87f, 20.02f, 20.00f) + curveTo(19.90f, 20.13f, 19.62f, 20.07f, 19.51f, 20.25f) + curveTo(19.39f, 20.43f, 19.48f, 20.90f, 19.34f, 21.09f) + curveTo(19.19f, 21.28f, 18.77f, 21.25f, 18.62f, 21.40f) + curveTo(18.48f, 21.54f, 18.56f, 21.83f, 18.47f, 21.97f) + curveTo(18.39f, 22.10f, 18.67f, 22.13f, 18.12f, 22.21f) + curveTo(17.57f, 22.30f, 16.26f, 22.48f, 15.18f, 22.50f) + curveTo(14.10f, 22.52f, 12.33f, 22.38f, 11.64f, 22.31f) + curveTo(10.96f, 22.24f, 11.20f, 22.25f, 11.06f, 22.10f) + curveTo(10.91f, 21.95f, 10.94f, 21.55f, 10.78f, 21.40f) + curveTo(10.63f, 21.24f, 10.27f, 21.37f, 10.11f, 21.17f) + curveTo(9.95f, 20.96f, 9.98f, 20.38f, 9.81f, 20.16f) + curveTo(9.63f, 19.94f, 9.23f, 20.05f, 9.07f, 19.86f) + curveTo(8.92f, 19.67f, 9.01f, 19.20f, 8.90f, 19.03f) + curveTo(8.79f, 18.85f, 8.51f, 18.90f, 8.39f, 18.80f) + curveTo(8.27f, 18.70f, 8.26f, 18.82f, 8.18f, 18.45f) + curveTo(8.11f, 18.08f, 8.07f, 16.97f, 7.95f, 16.59f) + curveTo(7.82f, 16.21f, 7.56f, 16.53f, 7.44f, 16.17f) + curveTo(7.31f, 15.80f, 7.26f, 15.30f, 7.21f, 14.42f) + curveTo(7.15f, 13.55f, 7.09f, 12.59f, 7.11f, 10.94f) + curveTo(7.14f, 9.30f, 7.27f, 5.72f, 7.35f, 4.56f) + curveTo(7.42f, 3.40f, 7.44f, 4.11f, 7.55f, 3.98f) + curveTo(7.66f, 3.85f, 7.90f, 3.97f, 8.01f, 3.78f) + curveTo(8.13f, 3.58f, 8.11f, 3.02f, 8.24f, 2.82f) + curveTo(8.38f, 2.62f, 8.71f, 2.72f, 8.83f, 2.59f) + curveTo(8.95f, 2.45f, 8.89f, 2.15f, 8.97f, 2.01f) + curveTo(9.04f, 1.88f, 9.02f, 1.85f, 9.28f, 1.77f) + curveTo(9.54f, 1.69f, 9.83f, 1.58f, 10.53f, 1.54f) + curveTo(11.22f, 1.49f, 12.69f, 1.48f, 13.44f, 1.50f) + curveTo(14.18f, 1.52f, 14.63f, 1.59f, 15.00f, 1.67f) + curveTo(15.36f, 1.76f, 15.50f, 1.88f, 15.62f, 2.02f) close() } path(fill = SolidColor(Color.Black)) { - moveTo(4.37f, 7.21f) - lineTo(4.37f, 8.61f) - lineTo(4.91f, 8.61f) - lineTo(4.91f, 9.42f) - lineTo(5.36f, 9.42f) - lineTo(5.36f, 10.18f) - lineTo(5.92f, 10.18f) - lineTo(5.92f, 10.78f) - lineTo(9.66f, 10.78f) - lineTo(9.66f, 10.16f) - lineTo(10.21f, 10.16f) - lineTo(10.21f, 9.41f) - lineTo(10.77f, 9.41f) - lineTo(10.77f, 7.81f) - lineTo(11.75f, 7.81f) - lineTo(11.75f, 9.39f) - lineTo(12.32f, 9.39f) - lineTo(12.32f, 10.14f) - lineTo(12.76f, 10.14f) - lineTo(12.76f, 10.74f) - lineTo(16.49f, 10.74f) - lineTo(16.49f, 10.16f) - lineTo(17.03f, 10.16f) - lineTo(17.03f, 9.40f) - lineTo(17.61f, 9.40f) - lineTo(17.61f, 8.60f) - lineTo(18.14f, 8.60f) - lineTo(18.14f, 7.24f) + moveTo(3.78f, 6.90f) + lineTo(3.78f, 8.55f) + lineTo(4.41f, 8.55f) + lineTo(4.41f, 9.50f) + lineTo(4.94f, 9.50f) + lineTo(4.94f, 10.39f) + lineTo(5.60f, 10.39f) + lineTo(5.60f, 11.08f) + lineTo(9.97f, 11.08f) + lineTo(9.97f, 10.37f) + lineTo(10.62f, 10.37f) + lineTo(10.62f, 9.48f) + lineTo(11.28f, 9.48f) + lineTo(11.28f, 7.60f) + lineTo(12.43f, 7.60f) + lineTo(12.43f, 9.46f) + lineTo(13.10f, 9.46f) + lineTo(13.10f, 10.34f) + lineTo(13.61f, 10.34f) + lineTo(13.61f, 11.04f) + lineTo(17.99f, 11.04f) + lineTo(17.99f, 10.36f) + lineTo(18.62f, 10.36f) + lineTo(18.62f, 9.47f) + lineTo(19.30f, 9.47f) + lineTo(19.30f, 8.54f) + lineTo(19.92f, 8.54f) + lineTo(19.92f, 6.93f) close() - moveTo(12.84f, 7.79f) - lineTo(13.36f, 7.79f) - lineTo(13.36f, 8.57f) - lineTo(13.94f, 8.57f) - lineTo(13.94f, 9.34f) - lineTo(14.46f, 9.34f) - lineTo(14.46f, 8.56f) - lineTo(13.95f, 8.56f) - lineTo(13.95f, 7.79f) - lineTo(14.48f, 7.79f) - lineTo(14.48f, 8.57f) - lineTo(14.97f, 8.57f) - lineTo(14.97f, 9.35f) - lineTo(15.48f, 9.36f) - lineTo(15.48f, 10.09f) - lineTo(14.97f, 10.09f) - lineTo(14.97f, 9.35f) - lineTo(14.48f, 9.35f) - lineTo(14.48f, 10.06f) - lineTo(13.95f, 10.06f) - lineTo(13.95f, 9.36f) - lineTo(13.36f, 9.35f) - lineTo(13.36f, 8.57f) - lineTo(12.84f, 8.57f) + moveTo(13.71f, 7.58f) + lineTo(14.32f, 7.58f) + lineTo(14.32f, 8.49f) + lineTo(15.00f, 8.50f) + lineTo(15.00f, 9.40f) + lineTo(15.61f, 9.40f) + lineTo(15.61f, 8.48f) + lineTo(15.01f, 8.48f) + lineTo(15.01f, 7.58f) + lineTo(15.63f, 7.58f) + lineTo(15.63f, 8.49f) + lineTo(16.20f, 8.49f) + lineTo(16.21f, 9.41f) + lineTo(16.80f, 9.42f) + lineTo(16.80f, 10.28f) + lineTo(16.20f, 10.28f) + lineTo(16.21f, 9.41f) + lineTo(15.63f, 9.41f) + lineTo(15.63f, 10.24f) + lineTo(15.01f, 10.24f) + lineTo(15.01f, 9.42f) + lineTo(14.32f, 9.41f) + lineTo(14.32f, 8.50f) + lineTo(13.71f, 8.49f) close() - moveTo(5.36f, 7.89f) - lineTo(5.88f, 7.89f) - lineTo(5.88f, 8.67f) - lineTo(6.46f, 8.67f) - lineTo(6.46f, 9.44f) - lineTo(6.98f, 9.44f) - lineTo(6.98f, 8.66f) - lineTo(6.46f, 8.66f) - lineTo(6.46f, 7.89f) - lineTo(7.00f, 7.89f) - lineTo(7.00f, 8.67f) - lineTo(7.48f, 8.67f) - lineTo(7.49f, 9.46f) - lineTo(8.00f, 9.46f) - lineTo(8.00f, 10.19f) - lineTo(7.48f, 10.19f) - lineTo(7.49f, 9.46f) - lineTo(6.99f, 9.46f) - lineTo(6.99f, 10.16f) - lineTo(6.46f, 10.16f) - lineTo(6.46f, 9.46f) - lineTo(5.88f, 9.45f) - lineTo(5.88f, 8.67f) - lineTo(5.36f, 8.67f) + moveTo(4.93f, 7.70f) + lineTo(5.54f, 7.70f) + lineTo(5.54f, 8.61f) + lineTo(6.23f, 8.62f) + lineTo(6.23f, 9.52f) + lineTo(6.84f, 9.52f) + lineTo(6.84f, 8.60f) + lineTo(6.23f, 8.60f) + lineTo(6.23f, 7.70f) + lineTo(6.85f, 7.70f) + lineTo(6.85f, 8.61f) + lineTo(7.43f, 8.61f) + lineTo(7.43f, 9.54f) + lineTo(8.03f, 9.54f) + lineTo(8.03f, 10.40f) + lineTo(7.43f, 10.40f) + lineTo(7.43f, 9.54f) + lineTo(6.85f, 9.54f) + lineTo(6.85f, 10.37f) + lineTo(6.23f, 10.37f) + lineTo(6.23f, 9.54f) + lineTo(5.54f, 9.53f) + lineTo(5.54f, 8.62f) + lineTo(4.93f, 8.61f) close() } }