From 84637c4357e7ef2461d6e12a50c9c7c133a164ca Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Mon, 7 Sep 2026 13:15:33 -0700 Subject: [PATCH] WIP --- Sources/Packages/Package.swift | 2 +- .../Sources/Common/MultilineInfoView.swift | 45 ++++++++++++++++--- Sources/Secretive.xcodeproj/project.pbxproj | 36 +++++++-------- 3 files changed, 59 insertions(+), 24 deletions(-) diff --git a/Sources/Packages/Package.swift b/Sources/Packages/Package.swift index 866fe79..65dc5c7 100644 --- a/Sources/Packages/Package.swift +++ b/Sources/Packages/Package.swift @@ -7,7 +7,7 @@ let package = Package( name: "SecretivePackages", defaultLocalization: "en", platforms: [ - .macOS(.v14) + .macOS(.v15) ], products: [ .library( diff --git a/Sources/Packages/Sources/Common/MultilineInfoView.swift b/Sources/Packages/Sources/Common/MultilineInfoView.swift index 394e9cf..bf47420 100644 --- a/Sources/Packages/Sources/Common/MultilineInfoView.swift +++ b/Sources/Packages/Sources/Common/MultilineInfoView.swift @@ -15,9 +15,9 @@ public struct MultilineInfoView: View { // } var titleView: TitleView - var items: [ItemView] + var items: ItemView - public init(titleView: () -> TitleView, items: () -> [ItemView]) { + public init(@ViewBuilder titleView: () -> TitleView, @ContentBuilder items: () -> ItemView) { self.titleView = titleView() self.items = items() } @@ -60,7 +60,35 @@ public struct MultilineInfoView: View { public var body: some View { VStack(alignment: .leading, spacing: 0) { titleView + .bold() .safeAreaPadding(20) + Group(subviews: items) { subviews in + ForEach(subviews: subviews) { subview in + Divider() + .ignoresSafeArea() +// .opacity(subview.offset == 0 ? 1 : 0.75) + subview + .safeAreaPadding(20) + .onHover { hovering in + withAnimation { +// guard item.element.action != nil else { return } + interactionState = hovering ? .hovering : .normal +// interactionStateIndex = item.offset + } + } + .gesture( + TapGesture() + .onEnded { +// item.element.action?.1() + withAnimation { + interactionState = .normal + interactionStateIndex = nil + } + } + ) + } + } + // ForEach(Array(items.enumerated()), id: \.offset) { item in // Divider() // .ignoresSafeArea() @@ -178,7 +206,14 @@ fileprivate struct BackgroundViewModifier: ViewModifier { //} // // -//#Preview { +#Preview { + MultilineInfoView { + Text("Hello") + } items: { + Text("World") + Text("World") + Text("World") + } // MultilineInfoView(title: "One", image: Image(systemName: "figure.wave"), items: ["Hello world."]) -// .padding() -//} + .padding() +} diff --git a/Sources/Secretive.xcodeproj/project.pbxproj b/Sources/Secretive.xcodeproj/project.pbxproj index 5689a80..8daab6a 100644 --- a/Sources/Secretive.xcodeproj/project.pbxproj +++ b/Sources/Secretive.xcodeproj/project.pbxproj @@ -1046,7 +1046,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentHostsfileReader; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentHostsfileReader"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1078,7 +1078,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentHostsfileReader; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentHostsfileReader"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1111,7 +1111,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentHostsfileReader; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentHostsfileReader"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1302,7 +1302,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).Host"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1342,7 +1342,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).Host"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1381,7 +1381,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveUpdater; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveUpdater"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1424,7 +1424,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveUpdater; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveUpdater"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1469,7 +1469,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveUpdater; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveUpdater"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1504,7 +1504,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentInputParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentInputParser"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1537,7 +1537,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentInputParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentInputParser"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1572,7 +1572,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretAgentInputParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgentInputParser"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1693,7 +1693,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).Host"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1732,7 +1732,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgent"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1778,7 +1778,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgent"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1825,7 +1825,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretAgent"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1858,7 +1858,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveCertificateParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveCertificateParser"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1890,7 +1890,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveCertificateParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveCertificateParser"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1924,7 +1924,7 @@ INFOPLIST_KEY_CFBundleDisplayName = SecretiveCertificateParser; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2026 Max Goedjen. All rights reserved."; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = "$(SECRETIVE_BASE_BUNDLE_ID).SecretiveCertificateParser"; PRODUCT_NAME = "$(TARGET_NAME)";