Repository: Automattic/pocket-casts-android
File: modules/services/compose/src/main/java/au/com/shiftyjelly/pocketcasts/compose/ad/AdBanner.kt (Kotlin)

Code before:
                        PocketCastsImageRequestFactory(context).createForFileOrUrl(ad.imageUrl)
                    },
                    title = stringResource(LR.string.ad_image),
                    showTitle = false,
                    corners = 4.dp,
                    modifier = Modifier.size(86.dp),
                )

                Spacer(
                    modifier = Modifier.width(16.dp),
                )

                Column(
                    verticalArrangement = Arrangement.SpaceBetween,
                    modifier = Modifier
                        .fillMaxHeight()
                        .weight(1f),
                ) {
                    Text(
                        text = ad.ctaText,
                        color = colors.ctaLabel,
                        fontSize = 14.sp,
                        lineHeight = 18.sp,
                        letterSpacing = 0.sp,
                    )

                    AdTitle(
                        ad = ad,
                        colors = colors,
                    )
                }

                Image(
                    painter = painterResource(IR.drawable.ic_overflow),
                    contentDescription = null,
                    colorFilter = ColorFilter.tint(colors.icon),
                    modifier = Modifier
                        .size(IconSize)
                        .indication(interactionSource, remember { ripple(radius = IconSize * 0.75f, bounded = false) })
                        .semantics { hideFromAccessibility() },
                )
            }
            val horionztalOffset = -ContentPadding.calculateRightPadding(LocalLayoutDirection.current)
            val verticalOffsset = ContentPadding.calculateTopPadding()
            OverflowMenuInteractionBox(
                interactionSource = interactionSource,
                onClick = onOptionsClick,
                modifier = Modifier
                    .align(Alignment.TopEnd)
                    .offset(
                        x = horionztalOffset + (TouchTargetSize - IconSize) / 2,

Review comment (bug):
❓ maybe we should also set `maxLines` and `overflow` 
Since these ads are dynamic and we should consider increased font sizes, there could be scenarios when the app renders this text in more than 4 lines... and that would probably look a bit off? Just an idea

Code after:
                        PocketCastsImageRequestFactory(context).createForFileOrUrl(ad.imageUrl)
                    },
                    title = stringResource(LR.string.ad_image),
                    showTitle = false,
                    corners = 4.dp,
                    modifier = Modifier.size(86.dp),
                )

                Spacer(
                    modifier = Modifier.width(16.dp),
                )

                Column(
                    verticalArrangement = Arrangement.SpaceBetween,
                    modifier = Modifier
                        .fillMaxHeight()
                        .weight(1f)
                        .padding(vertical = 4.dp),
                ) {
                    Text(
                        text = ad.ctaText,
                        color = colors.ctaLabel,
                        fontSize = 14.sp,
                        lineHeight = 18.sp,
                        letterSpacing = 0.sp,
                    )

                    AdTitle(
                        ad = ad,
                        colors = colors,
                    )
                }

                Image(
                    painter = painterResource(IR.drawable.ic_overflow),
                    contentDescription = null,
                    colorFilter = ColorFilter.tint(colors.icon),
                    modifier = Modifier
                        .size(IconSize)
                        .indication(interactionSource, remember { ripple(radius = IconSize * 0.75f, bounded = false) })
                        .semantics { hideFromAccessibility() },
                )
            }
            val horizontalOffset = -ContentPadding.calculateRightPadding(LocalLayoutDirection.current)
            val verticalOffset = ContentPadding.calculateTopPadding()
            OverflowMenuInteractionBox(
                interactionSource = interactionSource,
                onClick = onOptionsClick,
                modifier = Modifier
                    .align(Alignment.TopEnd)
                    .offset(