From b65312d7dbf205f3f908f9e2f5ae94f99b613591 Mon Sep 17 00:00:00 2001 From: Rohit Karadkar Date: Tue, 9 Jun 2026 08:15:21 +0530 Subject: [PATCH] feat: add BookmarkNoteDialog composable Co-Authored-By: Claude --- .../core/ui/BookmarkNoteDialog.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/BookmarkNoteDialog.kt diff --git a/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/BookmarkNoteDialog.kt b/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/BookmarkNoteDialog.kt new file mode 100644 index 000000000..588834cf9 --- /dev/null +++ b/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/BookmarkNoteDialog.kt @@ -0,0 +1,51 @@ +package com.google.samples.apps.nowinandroid.core.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +@Composable +fun BookmarkNoteDialog( + initialNote: String = "", + onDismiss: (note: String) -> Unit, +) { + var note by remember { mutableStateOf(initialNote) } + + AlertDialog( + onDismissRequest = { onDismiss(note) }, + title = { Text("Add a note") }, + text = { + Column { + OutlinedTextField( + value = note, + onValueChange = { if (it.length <= 280) note = it }, + label = { Text("Note (optional)") }, + maxLines = 4, + modifier = Modifier.fillMaxWidth(), + ) + Text( + text = "${note.length}/280", + style = MaterialTheme.typography.labelSmall, + modifier = Modifier.align(Alignment.End), + ) + } + }, + confirmButton = { + TextButton(onClick = { onDismiss(note) }) { Text("Save") } + }, + dismissButton = { + TextButton(onClick = { onDismiss("") }) { Text("Skip") } + }, + ) +}