HuggingChat-Mac/Views/ComponentStyles.swift (53 lines of code) (raw):

// // HighlightButtonStyle.swift // HuggingChat-Mac // // Created by Cyril Zakka on 12/12/24. // import SwiftUI struct MenuButtonStyle: MenuStyle { func makeBody(configuration: Configuration) -> some View { Menu(configuration) .labelsHidden() .menuStyle(.button) .buttonStyle(HighlightButtonStyle()) } } struct HighlightButtonStyle: ButtonStyle { @State private var isHovered = false func makeBody(configuration: Configuration) -> some View { configuration.label .frame(width: 20, height: 10) .padding(.horizontal, 6) .padding(.vertical, 6) .background( RoundedRectangle(cornerRadius: 6) .fill(isHovered ? Color.gray.opacity(0.3) : Color.clear) ) .foregroundColor(.primary) .contentShape(Rectangle()) .onHover { hovering in withAnimation(.easeInOut(duration: 0.2)) { isHovered = hovering } } .scaleEffect(configuration.isPressed ? 0.98 : 1.0) } } struct SpacedLabelStyle: LabelStyle { let spacing: CGFloat let alignment: VerticalAlignment init(spacing: CGFloat = 8, alignment: VerticalAlignment = .center) { self.spacing = spacing self.alignment = alignment } func makeBody(configuration: Configuration) -> some View { HStack(alignment: alignment, spacing: spacing) { configuration.icon configuration.title } } } #Preview("dark") { ChatView() .frame(height: 300) .environment(ModelManager()) .environment(ConversationViewModel()) .environment(AudioModelManager()) .environment(MenuViewModel()) .colorScheme(.dark) }