Interaction

Model component actions and navigation behavior explicitly.

FInteraction distinguishes no interaction, an action, and navigation. Navigation adds the expected affordance; an ordinary action does not.

FDataRow(
    label: .string("Exercises"),
    value: .int(8),
    interaction: .navigation(haptic: .light) {
        showExercises()
    }
)

Application code remains responsible for authorization, business rules, navigation state, and mutation results. A hidden or disabled control is feedback, not authorization.