From 03a2f03c7f8fb6efc21c58395c701285ce67688a Mon Sep 17 00:00:00 2001 From: Niko Date: Thu, 29 Aug 2024 21:37:03 +0200 Subject: [PATCH] feature(bank-sdk): Transaction List. Capture Flow UI Implementation PP-768 --- .../AttachDocumentToTransactionDialog.kt | 154 ++++++++++++++++++ ...AttachDocumentToTransactionDialogColors.kt | 55 +++++++ .../ExtractionResultDocumentsSection.kt | 140 ++++++++++++++++ .../ExtractionResultDocumentsSectionColors.kt | 58 +++++++ .../src/main/res/drawable/gbs_note_stack.xml | 9 + .../gbs_tl_document_placeholder_file.xml | 9 + .../gbs_tl_document_placeholder_image.xml | 9 + .../sdk/src/main/res/values-en/strings.xml | 10 ++ bank-sdk/sdk/src/main/res/values/strings.xml | 11 ++ .../ui/components/checkbox/GiniCheckbox.kt | 78 +++++++++ .../components/checkbox/GiniCheckboxColors.kt | 56 +++++++ 11 files changed, 589 insertions(+) create mode 100644 bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/AttachDocumentToTransactionDialog.kt create mode 100644 bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/colors/AttachDocumentToTransactionDialogColors.kt create mode 100644 bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/ExtractionResultDocumentsSection.kt create mode 100644 bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/colors/ExtractionResultDocumentsSectionColors.kt create mode 100644 bank-sdk/sdk/src/main/res/drawable/gbs_note_stack.xml create mode 100644 bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_file.xml create mode 100644 bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_image.xml create mode 100644 capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckbox.kt create mode 100644 capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckboxColors.kt diff --git a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/AttachDocumentToTransactionDialog.kt b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/AttachDocumentToTransactionDialog.kt new file mode 100644 index 000000000..3ed630b60 --- /dev/null +++ b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/AttachDocumentToTransactionDialog.kt @@ -0,0 +1,154 @@ +package net.gini.android.bank.sdk.transactionlist.ui.dialog.attachdoc + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Icon +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 +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import net.gini.android.bank.sdk.R +import net.gini.android.bank.sdk.transactionlist.ui.dialog.attachdoc.colors.AttachDocumentToTransactionDialogColors +import net.gini.android.capture.ui.components.checkbox.GiniCheckbox +import net.gini.android.capture.ui.theme.GiniTheme + +@Composable +fun AttachDocumentToTransactionDialog( + modifier: Modifier = Modifier, + onDismiss: () -> Unit, + onConfirm: (alwaysAttach: Boolean) -> Unit, + colors: AttachDocumentToTransactionDialogColors = AttachDocumentToTransactionDialogColors.colors() +) { + + var alwaysAttachChecked by remember { mutableStateOf(false) } + + Dialog( + onDismissRequest = onDismiss + ) { + Card( + modifier = modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = colors.containerColor, + contentColor = colors.contentColor + ), + ) { + Column( + modifier = Modifier.padding(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Icon( + modifier = Modifier.align(Alignment.CenterHorizontally), + painter = painterResource(id = R.drawable.gbs_note_stack), + contentDescription = null, + tint = colors.headerIconColor, + ) + Text( + text = stringResource(id = R.string.gbs_tl_attach_document_dialog_title), + style = GiniTheme.typography.headline5, // TODO + color = colors.titleColor, + textAlign = TextAlign.Center, + ) + Column { + Text( + text = stringResource(id = R.string.gbs_tl_attach_document_dialog_content), + style = GiniTheme.typography.body1, // TODO + color = colors.contentColor, + ) + AlwaysAttachCheckableText( + modifier = Modifier.padding(vertical = 4.dp), + checked = alwaysAttachChecked, + onCheckedChange = { alwaysAttachChecked = !alwaysAttachChecked }, + colors = colors.checkableContentColors + ) + } + Row( + modifier = Modifier + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End, + ) { + TextButton( + onClick = { onDismiss() }) { + Text( + text = stringResource(id = R.string.gbs_tl_attach_document_dialog_cancel_button_text), + style = GiniTheme.typography.body1 + ) + } + TextButton( + onClick = { + onConfirm(alwaysAttachChecked) + }) { + Text( + text = stringResource(id = R.string.gbs_tl_attach_document_dialog_confirm_button_text), + style = GiniTheme.typography.body1 + ) + } + } + } + } + } +} + +@Composable +private fun AlwaysAttachCheckableText( + checked: Boolean, + onCheckedChange: (Boolean) -> Unit, + modifier: Modifier = Modifier, + colors: AttachDocumentToTransactionDialogColors.CheckableContentColors = + AttachDocumentToTransactionDialogColors.CheckableContentColors.colors() +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.CenterVertically, + ) { + GiniCheckbox( + checked = checked, + onCheckedChange = onCheckedChange, + colors = colors.checkboxColor + ) + Text( + modifier = Modifier.padding(start = 16.dp), + text = "Immer anhängen und nicht erneut fragen", + style = GiniTheme.typography.body1, + color = colors.textColor + ) + } +} + +@Preview +@Composable +fun AttachDocumentToTransactionDialogPreview() { + GiniTheme { + AttachDocumentToTransactionDialog( + onDismiss = {}, + onConfirm = {} + ) + } +} + +@Preview(uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES) +@Composable +fun AttachDocumentToTransactionDialogPreviewDark() { + GiniTheme { + AttachDocumentToTransactionDialog( + onDismiss = {}, + onConfirm = {} + ) + } +} diff --git a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/colors/AttachDocumentToTransactionDialogColors.kt b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/colors/AttachDocumentToTransactionDialogColors.kt new file mode 100644 index 000000000..1c63f509d --- /dev/null +++ b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/dialog/attachdoc/colors/AttachDocumentToTransactionDialogColors.kt @@ -0,0 +1,55 @@ +package net.gini.android.bank.sdk.transactionlist.ui.dialog.attachdoc.colors + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import net.gini.android.capture.ui.components.checkbox.GiniCheckboxColors +import net.gini.android.capture.ui.theme.GiniTheme + +@Immutable +data class AttachDocumentToTransactionDialogColors( + val containerColor: Color, + val headerIconColor: Color, + val titleColor: Color, + val contentColor: Color, + val buttonTextColor: Color, + val checkableContentColors: CheckableContentColors, +) { + + @Immutable + data class CheckableContentColors( + val checkboxColor: GiniCheckboxColors, + val textColor: Color, + ) { + companion object { + @Composable + fun colors( + checkboxColor: GiniCheckboxColors = GiniCheckboxColors.colors(), + textColor: Color = GiniTheme.colorScheme.dialogs.text, + ) = CheckableContentColors( + checkboxColor = checkboxColor, + textColor = textColor, + ) + } + } + + companion object { + + @Composable + fun colors( + containerColor: Color = GiniTheme.colorScheme.dialogs.container, + headerIconColor: Color = GiniTheme.colorScheme.dialogs.text, + titleColor: Color = GiniTheme.colorScheme.dialogs.text, + contentColor: Color = GiniTheme.colorScheme.dialogs.text, + buttonTextColor: Color = GiniTheme.colorScheme.dialogs.labelText, + checkableContentColors: CheckableContentColors = CheckableContentColors.colors(), + ) = AttachDocumentToTransactionDialogColors( + containerColor = containerColor, + headerIconColor = headerIconColor, + titleColor = titleColor, + contentColor = contentColor, + buttonTextColor = buttonTextColor, + checkableContentColors = checkableContentColors, + ) + } +} diff --git a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/ExtractionResultDocumentsSection.kt b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/ExtractionResultDocumentsSection.kt new file mode 100644 index 000000000..72cbf51c4 --- /dev/null +++ b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/ExtractionResultDocumentsSection.kt @@ -0,0 +1,140 @@ +package net.gini.android.bank.sdk.transactionlist.ui.extractions + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import net.gini.android.bank.sdk.R +import net.gini.android.bank.sdk.transactionlist.ui.extractions.colors.ExtractionResultDocumentsSectionColors +import net.gini.android.capture.ui.theme.GiniTheme + +private val imageExtensions = listOf(".jpg", ".jpeg", ".png", ".gif") + +@Composable +fun ExtractionResultDocumentSection( + modifier: Modifier = Modifier, + content: @Composable () -> Unit = {}, +) { + Card( + modifier = modifier, + shape = RectangleShape + ) { + Column { + Text( + modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), + text = stringResource(id = R.string.gbs_tl_extraction_result_documents_section_title), + style = GiniTheme.typography.subtitle2, + ) + Column( + modifier = Modifier.padding(start = 8.dp, end = 8.dp, top = 4.dp), + ) { + content() + } + } + } +} + +@Composable +fun ExtractionResultDocumentSection( + modifier: Modifier = Modifier, +) { + val dummyDocuments = listOf("IMG_20240807_075215616516515645664333.jpg", "Rechnung-223.pdf") + + ExtractionResultDocumentSection( + modifier = modifier, + content = { + dummyDocuments.forEach { + Document(documentName = it) + } + } + ) +} + +@Composable +private fun Document( + documentName: String, + modifier: Modifier = Modifier, +) { + Row( + modifier = modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + DocumentImage( + imageUrl = null, + documentName = documentName, + ) + Text( + modifier = Modifier.padding(horizontal = 16.dp), + text = documentName, + style = GiniTheme.typography.subtitle1, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } +} + +@Composable +private fun DocumentImage( + imageUrl: String?, + documentName: String, + modifier: Modifier = Modifier, + colorScheme: ExtractionResultDocumentsSectionColors.DocumentItemColors.IconPlaceholderColors = + ExtractionResultDocumentsSectionColors.DocumentItemColors.IconPlaceholderColors.colors(), +) { + if (imageUrl != null) { + // TODO + } else { + val iconResId = if (imageExtensions.find { documentName.endsWith(it, true) } != null) { + R.drawable.gbs_tl_document_placeholder_image + } else { + R.drawable.gbs_tl_document_placeholder_file + } + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .padding(8.dp) + .background(colorScheme.iconBackgroundColor, shape = RoundedCornerShape(4.dp)) + ) { + Icon( + modifier = Modifier + .size(40.dp) + .padding(8.dp), + painter = painterResource(id = iconResId), + contentDescription = null, + tint = colorScheme.iconTint, + ) + } + } +} + +@Preview +@Composable +private fun ExtractionResultDocumentsSectionPreview() { + GiniTheme { + ExtractionResultDocumentSection() + } +} + +@Preview(uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES) +@Composable +private fun ExtractionResultDocumentsSectionPreviewDark() { + GiniTheme { + ExtractionResultDocumentSection() + } +} diff --git a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/colors/ExtractionResultDocumentsSectionColors.kt b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/colors/ExtractionResultDocumentsSectionColors.kt new file mode 100644 index 000000000..00e38a376 --- /dev/null +++ b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/transactionlist/ui/extractions/colors/ExtractionResultDocumentsSectionColors.kt @@ -0,0 +1,58 @@ +package net.gini.android.bank.sdk.transactionlist.ui.extractions.colors + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import net.gini.android.capture.ui.theme.GiniTheme + +@Immutable +data class ExtractionResultDocumentsSectionColors( + val documentItemColors: DocumentItemColors, +) { + + @Immutable + data class DocumentItemColors( + val documentIconPlaceholderColors: IconPlaceholderColors, + val textColor: Color, + ) { + + @Immutable + data class IconPlaceholderColors( + val iconBackgroundColor: Color, + val iconTint: Color, + ) { + companion object { + @Composable + fun colors( + iconBackgroundColor: Color = GiniTheme.colorScheme.placeholder.background, + iconTint: Color = GiniTheme.colorScheme.placeholder.tint, + ) = IconPlaceholderColors( + iconBackgroundColor = iconBackgroundColor, + iconTint = iconTint, + ) + } + } + + companion object { + @Composable + fun colors( + documentIconPlaceholderColors: IconPlaceholderColors = IconPlaceholderColors.colors(), + textColor: Color = GiniTheme.colorScheme.text.primary, + ) = DocumentItemColors( + documentIconPlaceholderColors = documentIconPlaceholderColors, + textColor = textColor, + ) + } + } + + + companion object { + + @Composable + fun colors( + documentItemColors: DocumentItemColors = DocumentItemColors.colors(), + ) = ExtractionResultDocumentsSectionColors( + documentItemColors = documentItemColors, + ) + } +} diff --git a/bank-sdk/sdk/src/main/res/drawable/gbs_note_stack.xml b/bank-sdk/sdk/src/main/res/drawable/gbs_note_stack.xml new file mode 100644 index 000000000..6675f8238 --- /dev/null +++ b/bank-sdk/sdk/src/main/res/drawable/gbs_note_stack.xml @@ -0,0 +1,9 @@ + + + diff --git a/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_file.xml b/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_file.xml new file mode 100644 index 000000000..52330992c --- /dev/null +++ b/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_file.xml @@ -0,0 +1,9 @@ + + + diff --git a/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_image.xml b/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_image.xml new file mode 100644 index 000000000..169639cf9 --- /dev/null +++ b/bank-sdk/sdk/src/main/res/drawable/gbs_tl_document_placeholder_image.xml @@ -0,0 +1,9 @@ + + + diff --git a/bank-sdk/sdk/src/main/res/values-en/strings.xml b/bank-sdk/sdk/src/main/res/values-en/strings.xml index 9a0ac876c..02529fa14 100644 --- a/bank-sdk/sdk/src/main/res/values-en/strings.xml +++ b/bank-sdk/sdk/src/main/res/values-en/strings.xml @@ -83,5 +83,15 @@ Save money by paying promptly Snap a photo of your invoice and the app will automatically calculate the cash discount. Just review the details, confirm, and enjoy the savings! + + Fügen Sie der Transaktion ein Anhang hinzu + Sie können dieser Transaktion einen Anhang hinzufügen. Das erleichert es Ihnen, Ausgaben effizient zu verwalten und Einkäufe einfacher zurückzurufen. + Immer anhängen und nicht erneut fragen + Anhängen + Nicht anhängen + + + Anhänge + diff --git a/bank-sdk/sdk/src/main/res/values/strings.xml b/bank-sdk/sdk/src/main/res/values/strings.xml index 043292b0c..0ee62201d 100644 --- a/bank-sdk/sdk/src/main/res/values/strings.xml +++ b/bank-sdk/sdk/src/main/res/values/strings.xml @@ -83,5 +83,16 @@ Geld sparen durch schnelles Bezahlen Machen Sie einfach ein Foto der Rechnung und die App erkennt automatisch die Rabatte. Überprüfen Sie die Details, bestätigen Sie und sparen Sie mit den Rabatten! + + + Fügen Sie der Transaktion ein Anhang hinzu + Sie können dieser Transaktion einen Anhang hinzufügen. Das erleichert es Ihnen, Ausgaben effizient zu verwalten und Einkäufe einfacher zurückzurufen. + Immer anhängen und nicht erneut fragen + Anhängen + Nicht anhängen + + + Anhänge + diff --git a/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckbox.kt b/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckbox.kt new file mode 100644 index 000000000..2fe351dd3 --- /dev/null +++ b/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckbox.kt @@ -0,0 +1,78 @@ +package net.gini.android.capture.ui.components.checkbox + +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CheckboxColors +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import net.gini.android.capture.ui.theme.GiniTheme + +@Composable +fun GiniCheckbox( + modifier: Modifier = Modifier, + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, + colors: GiniCheckboxColors = GiniCheckboxColors.colors(), + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + enabled: Boolean = true, +) { + Checkbox( + modifier = modifier, + enabled = enabled, + interactionSource = interactionSource, + checked = checked, + onCheckedChange = onCheckedChange, + colors = colors.toMaterialCheckboxColors(), + ) +} + +@Preview(showBackground = true) +@Composable +fun GiniCheckboxCheckedPreview() { + GiniTheme { + GiniCheckbox( + checked = true, + onCheckedChange = {}, + ) + } +} + +@Preview(showBackground = true) +@Composable +fun GiniCheckboxUncheckedPreview() { + GiniTheme { + GiniCheckbox( + checked = false, + onCheckedChange = {}, + ) + } +} + +@Preview(showBackground = true) +@Composable +fun GiniCheckboxCheckedDisabledPreview() { + GiniTheme { + GiniCheckbox( + checked = true, + enabled = false, + onCheckedChange = {}, + ) + } +} + +private fun GiniCheckboxColors.toMaterialCheckboxColors() = CheckboxColors( + checkedCheckmarkColor = checkedCheckmarkColor, + uncheckedCheckmarkColor = uncheckedCheckmarkColor, + checkedBoxColor = checkedBoxColor, + uncheckedBoxColor = uncheckedBoxColor, + disabledCheckedBoxColor = disabledCheckedBoxColor, + disabledUncheckedBoxColor = disabledUncheckedBoxColor, + disabledIndeterminateBoxColor = disabledIndeterminateBoxColor, + checkedBorderColor = checkedBorderColor, + uncheckedBorderColor = uncheckedBorderColor, + disabledBorderColor = disabledBorderColor, + disabledUncheckedBorderColor = disabledUncheckedBorderColor, + disabledIndeterminateBorderColor = disabledIndeterminateBorderColor, +) diff --git a/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckboxColors.kt b/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckboxColors.kt new file mode 100644 index 000000000..a80ed33c8 --- /dev/null +++ b/capture-sdk/sdk/src/main/java/net/gini/android/capture/ui/components/checkbox/GiniCheckboxColors.kt @@ -0,0 +1,56 @@ +package net.gini.android.capture.ui.components.checkbox + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import net.gini.android.capture.ui.theme.colors.GiniColorPrimitives + +data class GiniCheckboxColors( + val checkedCheckmarkColor: Color, + val uncheckedCheckmarkColor: Color, + val checkedBoxColor: Color, + val uncheckedBoxColor: Color, + val disabledCheckedBoxColor: Color, + val disabledUncheckedBoxColor: Color, + val disabledIndeterminateBoxColor: Color, + val checkedBorderColor: Color, + val uncheckedBorderColor: Color, + val disabledBorderColor: Color, + val disabledUncheckedBorderColor: Color, + val disabledIndeterminateBorderColor: Color +) { + + companion object { + + // TODO + @Composable + fun colors( + uncheckedCheckmarkColor: Color = GiniColorPrimitives().light01, + uncheckedBorderColor: Color = Color(0xFF49454F), + uncheckedBoxColor: Color = Color.Transparent, + + checkedCheckmarkColor: Color = GiniColorPrimitives().light01, + checkedBoxColor: Color = GiniColorPrimitives().accent01, + checkedBorderColor: Color = GiniColorPrimitives().accent01, + + disabledCheckedBoxColor: Color = Color.Gray, + disabledUncheckedBoxColor: Color = Color.Gray, + disabledIndeterminateBoxColor: Color = Color.Gray, + disabledBorderColor: Color = Color.Gray, + disabledUncheckedBorderColor: Color = Color.Gray, + disabledIndeterminateBorderColor: Color = Color.Gray, + ) = GiniCheckboxColors( + checkedCheckmarkColor = checkedCheckmarkColor, + uncheckedCheckmarkColor = uncheckedCheckmarkColor, + checkedBoxColor = checkedBoxColor, + uncheckedBoxColor = uncheckedBoxColor, + disabledCheckedBoxColor = disabledCheckedBoxColor, + disabledUncheckedBoxColor = disabledUncheckedBoxColor, + disabledIndeterminateBoxColor = disabledIndeterminateBoxColor, + checkedBorderColor = checkedBorderColor, + uncheckedBorderColor = uncheckedBorderColor, + disabledBorderColor = disabledBorderColor, + disabledUncheckedBorderColor = disabledUncheckedBorderColor, + disabledIndeterminateBorderColor = disabledIndeterminateBorderColor, + ) + } +}