From b4954713ff2a476b8b4e4c1f93d9267547a757e4 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 20 Jul 2026 15:17:29 +0200 Subject: [PATCH] feat(components): expose SelectedCheck as a family primitive The trailing check that marks a chosen row in a full-screen picker was private to OptionPicker, so every consumer hand-rolled its own copy. Calendula alone carried five, and they had drifted: the kit drew Icons.Rounded.Check, all five app copies drew Icons.Default.Check. Make it public with KDoc so pickers share one selection affordance instead of re-deriving it. Rounded wins, as the kit's existing choice. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../jeanlucmakiola/floret/components/OptionPicker.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/src/main/kotlin/de/jeanlucmakiola/floret/components/OptionPicker.kt b/components/src/main/kotlin/de/jeanlucmakiola/floret/components/OptionPicker.kt index ce929b0..ec09e48 100644 --- a/components/src/main/kotlin/de/jeanlucmakiola/floret/components/OptionPicker.kt +++ b/components/src/main/kotlin/de/jeanlucmakiola/floret/components/OptionPicker.kt @@ -102,8 +102,18 @@ fun OptionPicker( } } +/** + * The trailing check that marks the chosen row in a full-screen picker — the + * family's single selection affordance, so every picker (option, reminder, + * agenda range, timezone, calendar, recurrence) marks its selection the same + * way. Pair it with `GroupedRow(selected = true)`: the tonal highlight carries + * the state at a glance, the check confirms it unambiguously. + * + * Purely decorative — the row itself owns the semantics, so it takes no + * content description. + */ @Composable -private fun SelectedCheck() { +fun SelectedCheck() { Icon( imageVector = Icons.Rounded.Check, contentDescription = null, -- 2.49.1