// // ButtonGroupConstants.swift // VDS // // Created by Matt Bruce on 12/1/22. // import Foundation struct ButtonGroupConstants { static let rowSpacingButton = 12.0 static let rowSpacingTextLink = 12.0 static func getHorizontalSpacing(for primary: Buttonable, neighboring: Buttonable) -> CGFloat { let defaultSpace = 12.0 //large button if let button = primary as? Button, button.size == .large { if let neighboringButton = neighboring as? Button, neighboringButton.size == .large { return 12.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .large { return 16.0 } else if let _ = neighboring as? TextLinkCaret { return 24.0 } else { return defaultSpace } } //large text link else if let textLink = primary as? TextLink, textLink.size == .large { if let neighboringButton = neighboring as? Button, neighboringButton.size == .large { return 16.0 } else if let _ = neighboring as? TextLinkCaret { return 24.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .large { return 16.0 } else { return defaultSpace } } //text link caret else if let _ = primary as? TextLinkCaret { if let _ = neighboring as? TextLinkCaret { return 24.0 } else { return defaultSpace } } //small button else if let button = primary as? Button, button.size == .small { if let neighboringButton = neighboring as? Button, neighboringButton.size == .small { return 12.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .small { return 16.0 } else { return defaultSpace } } //small text link else if let textLink = primary as? TextLink, textLink.size == .small { if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .small { return 16.0 } else { return defaultSpace } } //return defaultSpace else { return defaultSpace } } static func getVerticalSpacing(for primary: Buttonable, neighboring: Buttonable) -> CGFloat { let defaultSpace = 12.0 //large button if let button = primary as? Button, button.size == .large { if let neighboringButton = neighboring as? Button, neighboringButton.size == .large { return 12.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .large { return 16.0 } else if let _ = neighboring as? TextLinkCaret { return 24.0 } else { return defaultSpace } } //large text link else if let textLink = primary as? TextLink, textLink.size == .large { if let neighboringButton = neighboring as? Button, neighboringButton.size == .large { return 16.0 } else if let _ = neighboring as? TextLinkCaret { return 24.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .large { return 24.0 } else { return defaultSpace } } //text link caret else if let _ = primary as? TextLinkCaret { if let _ = neighboring as? TextLinkCaret { return 24.0 } else { return defaultSpace } } //small button else if let button = primary as? Button, button.size == .small { if let neighboringButton = neighboring as? Button, neighboringButton.size == .small { return 12.0 } else if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .small { return 24.0 } else { return defaultSpace } } //small text link else if let textLink = primary as? TextLink, textLink.size == .small { if let neighboringTextLink = neighboring as? TextLink, neighboringTextLink.size == .small { return 32.0 } else { return defaultSpace } } //return defaultSpace else { return defaultSpace } } }