Screen Providers Reference
Every screen in MSA Core follows the same pattern — your Composable receives a State and a triggerAction callback:
@Composable
fun YourScreen(state: ScreenState, triggerAction: (ScreenAction) -> Unit)Core Screens
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
loginScreen | LoginState | LoginAction | Passcode login with optional biometric and QR scan |
landingScreen | LandingState | LandingAction | Splash / initialization screen |
homeScreen | HomeState | HomeAction | Main dashboard with navigation to all features |
Payment Screens
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
saleScreen | SaleState | SaleAction | NFC card tap sale transaction |
preAuthScreen | PreAuthState | PreAuthAction | Pre-authorization flow |
cardRefundScreen | CardRefundState | CardRefundAction | Card refund processing |
paymentSelectionScreen | PaymentSelectionState | PaymentSelectionAction | Payment method selection (card vs QR) |
paymentQRcodeSelectionScreen | PaymentSelectionState | PaymentSelectionAction | QR payment scheme selection |
consumerQRScanScreen | ConsumerQRScanState | ConsumerQRScanAction | Consumer QR code scanning |
Transaction Screens
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
historyScreen | HistoryState | HistoryAction | Transaction history list |
trxDetailsScreen | TransactionDetailsState | TransactionDetailsAction | Single transaction details |
trxResultScreen | TransactionResultState | TransactionResultAction | Transaction success/failure result |
trxReceiptScreen | ReceiptState | ReceiptAction | Digital receipt view |
processingInquiryScreen | ProcessingInquiryState | ProcessingInquiryAction | Transaction processing status |
Settlement Screens
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
settlementScreen | SettlementState | SettlementAction | Batch settlement overview |
settlementDetailsScreen | SettlementState | SettlementAction | Settlement batch details |
settlementResultScreen | SettlementState | SettlementAction | Settlement result display |
Settings Screens
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
settingsScreen | SettingsState | SettingsAction | Application settings |
shopInfoScreen | SettingsState | SettingsAction | Merchant/shop information |
App-to-App Screens
These screens handle integration when external POS applications invoke your app:
| Provider Property | State Class | Action Class | Description |
|---|---|---|---|
splashApp2AppScreen | SplashApp2AppState | SplashApp2AppAction | App-to-app loading/splash |
activationApp2AppScreen | ActivationApp2AppState | ActivationApp2AppAction | Device activation via external app |
saleApp2AppScreen | SaleApp2AppState | SaleApp2AppAction | Sale initiated by external app |
queryApp2AppScreen | QueryApp2AppState | QueryApp2AppAction | Transaction query from external app |
settlementApp2AppScreen | SettlementApp2AppState | SettlementApp2AppAction | Settlement from external app |
voidRefundApp2AppScreen | VoidRefundApp2AppState | VoidRefundApp2AppAction | Void/refund from external app |
warmupApp2AppScreen | WarmupApp2AppState | WarmupApp2AppAction | Warmup from external app |
Status Bar Color
Customize the status bar color per screen:
override val statusBarColor: @Composable (AppScreen) -> Color = { screenType ->
when (screenType) {
LandingScreen -> MsaTheme.colors.mutedForeground
LoginScreen -> MsaTheme.colors.background
HomeScreen -> MsaTheme.colors.accent
SaleScreen, PreAuthScreen, CardRefundScreen -> MsaTheme.colors.primary
else -> MsaTheme.colors.background
}
}