Package-level declarations

Types

Link copied to clipboard
data class AdaptiveMetrics(val layout: WindowLayout, val isLandscape: Boolean, val contentMaxWidth: Dp, val horizontalPadding: Dp, val sectionSpacing: Dp, val useTwoPane: Boolean, val useCompactButtons: Boolean, val listMinCellWidth: Dp)

Immutable set of layout metrics derived from the current window size.

Link copied to clipboard

Selects the top app bar style used by ScreenScaffold.

Link copied to clipboard

Window width buckets used to select layout behavior.

Properties

Link copied to clipboard

When > 0, rememberAdaptiveMetrics uses this instead of full screen width (nav rail, etc.).

Link copied to clipboard

Ambient SnackbarHostState shared by screens for showing snackbars.

Functions

Link copied to clipboard
fun AdaptiveContentWidth(modifier: Modifier = Modifier, metrics: AdaptiveMetrics = rememberAdaptiveMetrics(), content: @Composable () -> Unit)

Centers content and caps its width to AdaptiveMetrics.contentMaxWidth.

Link copied to clipboard
fun AdaptiveScreenColumn(modifier: Modifier = Modifier, scroll: Boolean = true, verticalArrangement: Arrangement.Vertical = Arrangement.Top, metrics: AdaptiveMetrics = rememberAdaptiveMetrics(), constrainMaxWidth: Boolean = true, content: @Composable ColumnScope.() -> Unit)

A vertically arranged, optionally scrollable screen column with adaptive padding and width constraints.

Link copied to clipboard

Applies a minimum text-field height appropriate for the current metrics.

Link copied to clipboard
fun AdaptiveTwoPane(modifier: Modifier = Modifier, metrics: AdaptiveMetrics = rememberAdaptiveMetrics(), spacing: Dp = 16.dp, startWeight: Float = 1.0f, endWeight: Float = 1.0f, start: @Composable () -> Unit, end: @Composable () -> Unit)

Side-by-side on wide landscape; stacked otherwise.

Link copied to clipboard
fun AlgorithmChip(label: String, modifier: Modifier = Modifier)

Non-interactive chip displaying a key algorithm label.

Link copied to clipboard
fun ChipRow(modifier: Modifier = Modifier, content: @Composable () -> Unit)

A wrapping FlowRow container for laying out a set of chips.

Link copied to clipboard
fun computeAdaptiveMetrics(widthDp: Int, heightDp: Int): AdaptiveMetrics

Computes AdaptiveMetrics from raw window widthDp and heightDp.

Link copied to clipboard
fun DestructiveConfirmDialog(visible: Boolean, title: String, message: String, confirmLabel: String, onDismiss: () -> Unit, onConfirm: () -> Unit)

Confirmation dialog for destructive actions (delete, revoke, etc.).

Link copied to clipboard
fun EmptyState(message: String, modifier: Modifier = Modifier, action: @Composable () -> Unit? = null)

Centered empty-state placeholder with an icon, message and optional action.

Link copied to clipboard
fun formatKeyDate(epochMs: Long): String

Formats an epoch-ms timestamp as a locale date, or when unset.

Link copied to clipboard
fun formatKeyId(keyId: Long): String

Formats a key id as an uppercase 0x… hex string.

Link copied to clipboard

Builds a one-line summary of a key: user id, key id and secret/public kind.

Link copied to clipboard

Abbreviates a fingerprint to first4…last8, collapsing whitespace.

Link copied to clipboard
fun FormBottomSheet(visible: Boolean, title: String, onDismiss: () -> Unit, confirmLabel: String, onConfirm: () -> Unit, confirmEnabled: Boolean = true, content: @Composable ColumnScope.() -> Unit)

Modal bottom sheet presenting a titled form with confirm/close actions.

Link copied to clipboard
fun IntentFlowScaffold(title: String, onBack: () -> Unit, modifier: Modifier = Modifier, actions: @Composable RowScope.() -> Unit = {}, content: @Composable (PaddingValues) -> Unit)

ScreenScaffold-like wrapper for short-lived intent / overlay activities.

Link copied to clipboard
fun KeyAvatar(name: String?, modifier: Modifier = Modifier, large: Boolean = false)

Circular avatar showing the first letter of name (or ? when unknown).

Link copied to clipboard
fun KeyMultiSelectDialog(title: String, keys: List<KeySummary>, initialSelection: Set<Long>, onDismiss: () -> Unit, onConfirm: (Set<Long>) -> Unit)

Legacy always-visible wrapper around KeyMultiSelectSheet.

Link copied to clipboard
fun KeyMultiSelectField(label: String, keys: List<KeySummary>, selectedIds: Set<Long>, onSelectionChange: (Set<Long>) -> Unit, modifier: Modifier = Modifier, keyFilter: (KeySummary) -> Boolean = { true }, lineFormatter: (KeySummary) -> String = ::formatKeySummaryLine)

Read-only field summarizing selected keys that opens a multi-select picker.

Link copied to clipboard
fun KeyMultiSelectSheet(visible: Boolean, title: String, keys: List<KeySummary>, initialSelection: Set<Long>, onDismiss: () -> Unit, onConfirm: (Set<Long>) -> Unit)

Searchable dialog listing keys with checkboxes for multi-selection.

Link copied to clipboard
fun KeySelectDropdown(label: String, keys: List<KeySummary>, selectedId: Long?, onSelect: (Long?) -> Unit, modifier: Modifier = Modifier, allowAuto: Boolean = false, emptyLabel: String = stringResource(R.string.common_select_key), autoLabel: String = stringResource(R.string.common_auto), keyFilter: (KeySummary) -> Boolean = { true }, expanded: Boolean? = null, onExpandedChange: (Boolean) -> Unit? = null, lineFormatter: (KeySummary) -> String = { "${it.primaryUserId} (${formatKeyId(it.masterKeyId)})" })

Exposed dropdown for selecting a key from keys.

Link copied to clipboard
fun M3ListCard(onClick: () -> Unit?, modifier: Modifier = Modifier, content: @Composable () -> Unit)

Material 3 surface card for list rows, clickable when onClick is non-null.

Link copied to clipboard
fun MonospaceScrollText(text: String, modifier: Modifier = Modifier, style: TextStyle = MaterialTheme.typography.bodySmall)

Single-line, horizontally scrollable monospace text (fingerprints, ids).

Link copied to clipboard
fun ProvideAdaptiveMetrics(modifier: Modifier = Modifier, content: @Composable () -> Unit)

Measures the width actually available to content (inside nav rail, padding, etc.).

Link copied to clipboard
fun rememberAdaptiveMetrics(availableWidthDp: Int? = null): AdaptiveMetrics

Remembers AdaptiveMetrics for the current configuration, preferring availableWidthDp then the measured content width then the screen width.

Link copied to clipboard
fun RetainedTab(visible: Boolean, modifier: Modifier = Modifier, fillMaxSize: Boolean = true, content: @Composable () -> Unit)

Keep tab composed after first visit; hidden tabs skip layout/draw.

Link copied to clipboard
fun RevokedBadge(modifier: Modifier = Modifier)

Non-interactive badge marking a key as revoked.

Link copied to clipboard
fun ScreenScaffold(title: String, modifier: Modifier = Modifier, showBack: Boolean = false, onBack: () -> Unit = {}, topBarVariant: ScreenScaffoldTopBarVariant = ScreenScaffoldTopBarVariant.Default, actions: @Composable RowScope.() -> Unit = {}, floatingActionButton: @Composable () -> Unit = {}, content: @Composable (PaddingValues) -> Unit)

Avoids double status-bar inset when nested inside NavHost Scaffold.

Link copied to clipboard
fun SectionHeader(title: String, modifier: Modifier = Modifier)

A styled section title used to group content within a screen.

Link copied to clipboard
fun SettingSwitchRow(label: String, checked: Boolean, onChecked: (Boolean) -> Unit, modifier: Modifier = Modifier, subtitle: String? = null)

List row with a label, optional subtitle and a trailing toggle Switch.

Link copied to clipboard
fun StatusMessage(message: String, modifier: Modifier = Modifier, isError: Boolean = false)

Small inline status/error message; renders nothing when message is blank.

Link copied to clipboard
fun StringSelectDropdown(label: String, value: String, options: List<Pair<String, String>>, onSelect: (String) -> Unit, modifier: Modifier = Modifier, expanded: Boolean? = null, onExpandedChange: (Boolean) -> Unit? = null)

Exposed dropdown for selecting one of several string options.