crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

InvitationFailureCallout.swift (974B)


      1 import SwiftUI
      2 
      3 struct InvitationFailureCallout: View {
      4     let failure: InviteDeliveryFailure
      5     let isRetrying: Bool
      6     let retry: () -> Void
      7 
      8     var body: some View {
      9         HStack(alignment: .top, spacing: 12) {
     10             Image(systemName: "icloud.slash.fill")
     11                 .font(.title2)
     12                 .foregroundStyle(.red)
     13                 .accessibilityHidden(true)
     14 
     15             VStack(alignment: .leading, spacing: 8) {
     16                 Text(failure.title)
     17                     .font(.headline)
     18 
     19                 Text(failure.body)
     20                     .font(.subheadline)
     21                     .foregroundStyle(.secondary)
     22                     .fixedSize(horizontal: false, vertical: true)
     23 
     24                 Button("Try Again", action: retry)
     25                     .buttonStyle(.borderedProminent)
     26                     .disabled(isRetrying)
     27             }
     28             .frame(maxWidth: .infinity, alignment: .leading)
     29         }
     30         .padding(.vertical, 4)
     31     }
     32 }