42 lines
1.3 KiB
Kotlin
42 lines
1.3 KiB
Kotlin
package com.jetpackduba.gitnuro.ui.components
|
|
|
|
import androidx.compose.foundation.hoverable
|
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
import androidx.compose.foundation.interaction.collectIsHoveredAsState
|
|
import androidx.compose.material.MaterialTheme
|
|
import androidx.compose.material.Text
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.ui.Modifier
|
|
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
|
import com.jetpackduba.gitnuro.extensions.openUrlInBrowser
|
|
|
|
|
|
@Composable
|
|
fun TextLink(
|
|
text: String,
|
|
url: String,
|
|
modifier: Modifier = Modifier,
|
|
colorsInverted: Boolean = false,
|
|
) {
|
|
val hoverInteraction = remember { MutableInteractionSource() }
|
|
val isHovered by hoverInteraction.collectIsHoveredAsState()
|
|
|
|
val textColor = if (isHovered == colorsInverted) {
|
|
MaterialTheme.colors.onBackground
|
|
} else {
|
|
MaterialTheme.colors.primaryVariant
|
|
}
|
|
|
|
Text(
|
|
text = text,
|
|
modifier = Modifier
|
|
.hoverable(hoverInteraction)
|
|
.handMouseClickable {
|
|
openUrlInBrowser(url)
|
|
}
|
|
.then(modifier),
|
|
color = textColor,
|
|
)
|
|
} |