This commit is contained in:
2025-10-08 18:08:15 +08:00
parent dc71bb19a9
commit 989e5be041
109 changed files with 10815 additions and 170 deletions

View File

@@ -0,0 +1,51 @@
package com.taskttl.ui.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Clear
import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import org.jetbrains.compose.resources.StringResource
import org.jetbrains.compose.resources.stringResource
import taskttl.composeapp.generated.resources.Res
import taskttl.composeapp.generated.resources.clear_text
import taskttl.composeapp.generated.resources.search
import taskttl.composeapp.generated.resources.search_placeholder
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchBar(
query: String,
onQueryChange: (String) -> Unit,
modifier: Modifier = Modifier,
placeholder: StringResource = Res.string.search_placeholder
) {
OutlinedTextField(
value = query,
onValueChange = onQueryChange,
modifier = modifier,
placeholder = { Text(stringResource(placeholder)) },
leadingIcon = {
Icon(
imageVector = Icons.Default.Search,
contentDescription = stringResource(Res.string.search)
)
},
trailingIcon = {
if (query.isNotEmpty()) {
IconButton(onClick = { onQueryChange("") }) {
Icon(
imageVector = Icons.Default.Clear,
contentDescription = stringResource(Res.string.clear_text)
)
}
}
},
singleLine = true
)
}