Tema

Configurando tema

O tema padrão segue o esquema de cores descrito a seguir

import Foundation
import SwiftUI

public struct TapOnPhoneTheme {
    let stepMessages: [ApplicationEvent: String]
    let stepViews: [ApplicationEvent: AnyView]
    let textColor: Color
    let loadingColor: Color
    let gradientStops: [Gradient.Stop]
    
    public init(
        stepMessages: [ApplicationEvent : String] = [
                .terminalActivationStarted: "Iniciando",
                .authorizingPleaseWait: "Aguardando autorização",
                .transactionAborted: "Operação cancelada",
                .terminalActivationFinished: "Inicialização concluída",
                .cardReadingFinished: "Leitura concluída",
                .paymentProcessFinished: "Processamento concluído",
                .holdCardSteady: "Processando",
                .sessionActivationStarted: "Iniciando sessão",
                .zoopActivationStarted: "Autenticando",
                .zoopActivationSucceeded: "Autenticado",
                .cardReadingStarted: "Processando",
                .closeBuiltInScreen: "Processando",
                .pinInputStarted: "Digite o PIN",
                .pinInputFinished: "PIN confirmado"
        ],
        stepViews: [ApplicationEvent : AnyView] = [:],
        textColor: Color = .white,
        loadingColor: Color = .white,
        gradientStops: [Gradient.Stop] = [
            .init(color: .black.opacity(0.8), location: 0.0),
            .init(color: .black.opacity(0.75), location: 0.39),
            .init(color: .black.opacity(0.65), location: 0.61),
            .init(color: .black.opacity(0.35), location: 0.83),
            .init(color: .black.opacity(0), location: 1.0),
        ]
    ) {
        self.stepMessages = stepMessages
        self.stepViews = stepViews
        self.textColor = textColor
        self.loadingColor = loadingColor
        self.gradientStops = gradientStops
    }
}

Configurações disponíveis

ParâmetroDescrição
stepMessagesMapa de texto -> Cada ApplicationEvent pode ter uma mensagem customizada atrelada
stepViewsMapa de Views -> Cada ApplicationEvent pode ter uma view atrelada, caso uma não seja disponibilizada ([:]), usaremos um ProgressView
textColorCor dos textos
loadingColorCor da View de carregamento padrão
gradientStopsCor de fundo da tela. Ao configurar, caso queira uma cor sólida, basta só passar um Gradient.Stop no location 0.0. Assim, só será configurada uma única cor.

Nota:

  • O tema padrão foi feito nesse esquema de cores porque são as mesmas da tela proprietária de leitura de cartão da Apple, para uma transição fluída.
  • A tela da Apple não é customizável.

Tela

Tela