import SwiftUI enum DataPanelDensity { case compact case standard case featured var padding: CGFloat { switch self { case .compact: DS.Spacing.panelPadCompact case .standard: DS.Spacing.panelPadStandard case .featured: DS.Spacing.panelPadFeatured } } var cornerRadius: CGFloat { switch self { case .compact: DS.Radii.compact case .standard: DS.Radii.standard case .featured: DS.Radii.featured } } } struct DataPanel: View { let density: DataPanelDensity var teamAccentCode: String? = nil @ViewBuilder let content: () -> Content var body: some View { HStack(spacing: 0) { if let code = teamAccentCode { RoundedRectangle(cornerRadius: 1.5) .fill(TeamAssets.color(for: code)) .frame(width: 3) .padding(.vertical, 6) .padding(.leading, 4) } VStack(alignment: .leading, spacing: 0) { content() } .frame(maxWidth: .infinity, alignment: .leading) .padding(density.padding) } .background( RoundedRectangle(cornerRadius: density.cornerRadius) .fill(DS.Colors.panelFill) ) .overlay( RoundedRectangle(cornerRadius: density.cornerRadius) .strokeBorder(DS.Colors.panelStroke, lineWidth: 0.5) ) } } // MARK: - Convenience initializers extension DataPanel { init( _ density: DataPanelDensity = .standard, teamAccent: String? = nil, @ViewBuilder content: @escaping () -> Content ) { self.density = density self.teamAccentCode = teamAccent self.content = content } }