diff --git a/Sources/phbar/Models/PHBlock/PHBlockKind.swift b/Sources/phbar/Models/PHBlock/PHBlockKind.swift index 58bced8..096bdc5 100644 --- a/Sources/phbar/Models/PHBlock/PHBlockKind.swift +++ b/Sources/phbar/Models/PHBlock/PHBlockKind.swift @@ -1,10 +1,11 @@ enum PHBlockKind: String { - case text, space + case text, space, divider } extension PHBlock { var kind: PHBlockKind { if name.starts(with: "_space") { return .space } + if name.starts(with: "_divider") { return .divider } return .text } } diff --git a/Sources/phbar/Views/BarView.swift b/Sources/phbar/Views/BarView.swift index 7c8b3e3..768a7a4 100644 --- a/Sources/phbar/Views/BarView.swift +++ b/Sources/phbar/Views/BarView.swift @@ -16,6 +16,8 @@ struct BarView: View { TextView(block: block) case .space: SpaceView(block: block) + case .divider: + DividerView(block: block) } } } @@ -27,6 +29,8 @@ struct BarView: View { TextView(block: block) case .space: SpaceView(block: block) + case .divider: + DividerView(block: block) } } } diff --git a/Sources/phbar/Views/DividerView.swift b/Sources/phbar/Views/DividerView.swift new file mode 100644 index 0000000..cdd1af1 --- /dev/null +++ b/Sources/phbar/Views/DividerView.swift @@ -0,0 +1,29 @@ +import SwiftUI + +struct DividerView: View { + @ObservedObject var block: PHBlock + + var width: CGFloat { + guard let arg = block.name.split(separator: " ").last else { return 1 } + guard let width = Double(arg) else { return 1 } + return CGFloat(width) + } + + var body: some View { + ZStack { + Rectangle() + .fill(block.style.background?.uiColor ?? .clear) + + Rectangle() + .fill(block.style.foreground?.uiColor ?? .clear) + .frame(width: width) + .padding(.trailing, block.style.padding?.trailing ?? 0) + .padding(.leading, block.style.padding?.leading ?? 0) + .padding(.top, block.style.padding?.top ?? 0) + .padding(.bottom, block.style.padding?.bottom ?? 0) + .border(block.debug ? .blue : .clear) + } + .fixedSize(horizontal: true, vertical: false) + .border(block.debug ? .red : .clear) + } +}