ButtonTileSchema
Renders a Material 3 button. The concrete composable is picked by buttonType: Type.FILLED → Button, Type.ELEVATED → ElevatedButton, Type.FILLED_TONAL → FilledTonalButton, Type.OUTLINED → OutlinedButton, Type.TEXT → TextButton.
Content: when loading is true the button shows a 24dp CircularProgressIndicator (2dp stroke, round cap, tinted with LocalContentColor) instead of its normal content. Otherwise it renders text together with the optional icon, ordered by iconPosition (IconPosition.START → icon, 8dp spacer, text; IconPosition.END → text, 8dp spacer, icon).
Shape: Shape.SQUARE maps to MaterialTheme.shapes.medium, Shape.ROUNDED to CircleShape.
Enabled state: the button is interactive only when enabled is true and loading is false — the two are combined into the single enabled the Material button receives, so a loading button is disabled for real: it takes Material's disabled colors and is reported as disabled to accessibility services. A slow action therefore cannot be submitted twice.
Triggers dispatched:
OnClickEventTrigger— fired when the button is tapped while interactive.