From 262432d0e44d09ed3abbea44ed155bcadad5dafa Mon Sep 17 00:00:00 2001 From: indextrown Date: Wed, 8 Apr 2026 13:14:39 +0900 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20=EC=B4=88=EA=B8=B0=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/SwiftUI-Kit/Native/SKSampleView.swift | 18 ++++++++++++++++++ Sources/SwiftUI-Kit/SwiftUI_Kit.swift | 2 -- Sources/SwiftUI-Kit/Util/.gitkeep | 0 Sources/SwiftUI-Kit/Wrapper/SKWebView.swift | 8 ++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Sources/SwiftUI-Kit/Native/SKSampleView.swift delete mode 100644 Sources/SwiftUI-Kit/SwiftUI_Kit.swift create mode 100644 Sources/SwiftUI-Kit/Util/.gitkeep create mode 100644 Sources/SwiftUI-Kit/Wrapper/SKWebView.swift diff --git a/Sources/SwiftUI-Kit/Native/SKSampleView.swift b/Sources/SwiftUI-Kit/Native/SKSampleView.swift new file mode 100644 index 0000000..a1592bb --- /dev/null +++ b/Sources/SwiftUI-Kit/Native/SKSampleView.swift @@ -0,0 +1,18 @@ +// +// SwiftUIView.swift +// SwiftUI-Kit +// +// Created by 김동현 on 4/8/26. +// + +import SwiftUI + +public struct SKSampleView: View { + public var body: some View { + Text(String(describing: Self.self)) + } +} + +#Preview { + SKSampleView() +} diff --git a/Sources/SwiftUI-Kit/SwiftUI_Kit.swift b/Sources/SwiftUI-Kit/SwiftUI_Kit.swift deleted file mode 100644 index 08b22b8..0000000 --- a/Sources/SwiftUI-Kit/SwiftUI_Kit.swift +++ /dev/null @@ -1,2 +0,0 @@ -// The Swift Programming Language -// https://docs.swift.org/swift-book diff --git a/Sources/SwiftUI-Kit/Util/.gitkeep b/Sources/SwiftUI-Kit/Util/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Sources/SwiftUI-Kit/Wrapper/SKWebView.swift b/Sources/SwiftUI-Kit/Wrapper/SKWebView.swift new file mode 100644 index 0000000..a20d8c7 --- /dev/null +++ b/Sources/SwiftUI-Kit/Wrapper/SKWebView.swift @@ -0,0 +1,8 @@ +// +// SKWebView.swift +// SwiftUI-Kit +// +// Created by 김동현 on 4/8/26. +// + +import Foundation From 9d5ea4572b751c274380352fd9eb77c2ed8332d5 Mon Sep 17 00:00:00 2001 From: indextrown Date: Wed, 8 Apr 2026 13:15:21 +0900 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20iOS=20=EC=B5=9C=EC=86=8C=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Package.swift b/Package.swift index 8bfd16f..c40a314 100644 --- a/Package.swift +++ b/Package.swift @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "SwiftUI-Kit", + platforms: [.iOS(.v15)], // iOS 15 이상 지원 products: [ // Products define the executables and libraries a package produces, making them visible to other packages. .library( From a11687cdf80038d69d095057a7488983cad2c860 Mon Sep 17 00:00:00 2001 From: indextrown Date: Wed, 8 Apr 2026 13:20:49 +0900 Subject: [PATCH 3/5] =?UTF-8?q?chore:=20Sample=20App=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SampleApp.xcodeproj/project.pbxproj | 362 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 35 ++ .../SampleApp/Assets.xcassets/Contents.json | 6 + .../SampleApp/SampleApp/ContentView.swift | 21 + Examples/SampleApp/SampleApp/SampleApp.swift | 17 + Sources/SwiftUI-Kit/Native/SKSampleView.swift | 3 + 8 files changed, 462 insertions(+) create mode 100644 Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj create mode 100644 Examples/SampleApp/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Examples/SampleApp/SampleApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Examples/SampleApp/SampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Examples/SampleApp/SampleApp/Assets.xcassets/Contents.json create mode 100644 Examples/SampleApp/SampleApp/ContentView.swift create mode 100644 Examples/SampleApp/SampleApp/SampleApp.swift diff --git a/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..98d4ca6 --- /dev/null +++ b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + DF5A97D02F860E7D00BA954A /* SwiftUI-Kit in Frameworks */ = {isa = PBXBuildFile; productRef = DF5A97CF2F860E7D00BA954A /* SwiftUI-Kit */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DF5A97C02F860E4900BA954A /* SampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + DF5A97C22F860E4900BA954A /* SampleApp */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = SampleApp; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + DF5A97BD2F860E4900BA954A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DF5A97D02F860E7D00BA954A /* SwiftUI-Kit in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DF5A97B72F860E4900BA954A = { + isa = PBXGroup; + children = ( + DF5A97C22F860E4900BA954A /* SampleApp */, + DF5A97C12F860E4900BA954A /* Products */, + ); + sourceTree = ""; + }; + DF5A97C12F860E4900BA954A /* Products */ = { + isa = PBXGroup; + children = ( + DF5A97C02F860E4900BA954A /* SampleApp.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DF5A97BF2F860E4900BA954A /* SampleApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF5A97CB2F860E4A00BA954A /* Build configuration list for PBXNativeTarget "SampleApp" */; + buildPhases = ( + DF5A97BC2F860E4900BA954A /* Sources */, + DF5A97BD2F860E4900BA954A /* Frameworks */, + DF5A97BE2F860E4900BA954A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + DF5A97C22F860E4900BA954A /* SampleApp */, + ); + name = SampleApp; + packageProductDependencies = ( + DF5A97CF2F860E7D00BA954A /* SwiftUI-Kit */, + ); + productName = SampleApp; + productReference = DF5A97C02F860E4900BA954A /* SampleApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DF5A97B82F860E4900BA954A /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1640; + LastUpgradeCheck = 1640; + TargetAttributes = { + DF5A97BF2F860E4900BA954A = { + CreatedOnToolsVersion = 16.4; + }; + }; + }; + buildConfigurationList = DF5A97BB2F860E4900BA954A /* Build configuration list for PBXProject "SampleApp" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DF5A97B72F860E4900BA954A; + minimizedProjectReferenceProxies = 1; + packageReferences = ( + DF5A97CE2F860E7D00BA954A /* XCLocalSwiftPackageReference "../../../SwiftUI-Kit" */, + ); + preferredProjectObjectVersion = 77; + productRefGroup = DF5A97C12F860E4900BA954A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DF5A97BF2F860E4900BA954A /* SampleApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DF5A97BE2F860E4900BA954A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DF5A97BC2F860E4900BA954A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DF5A97C92F860E4A00BA954A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = LGX4B4WC66; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DF5A97CA2F860E4A00BA954A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = LGX4B4WC66; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DF5A97CC2F860E4A00BA954A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LGX4B4WC66; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.indextrown.SampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DF5A97CD2F860E4A00BA954A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LGX4B4WC66; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.indextrown.SampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DF5A97BB2F860E4900BA954A /* Build configuration list for PBXProject "SampleApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF5A97C92F860E4A00BA954A /* Debug */, + DF5A97CA2F860E4A00BA954A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DF5A97CB2F860E4A00BA954A /* Build configuration list for PBXNativeTarget "SampleApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF5A97CC2F860E4A00BA954A /* Debug */, + DF5A97CD2F860E4A00BA954A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DF5A97CE2F860E7D00BA954A /* XCLocalSwiftPackageReference "../../../SwiftUI-Kit" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = "../../../SwiftUI-Kit"; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DF5A97CF2F860E7D00BA954A /* SwiftUI-Kit */ = { + isa = XCSwiftPackageProductDependency; + productName = "SwiftUI-Kit"; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DF5A97B82F860E4900BA954A /* Project object */; +} diff --git a/Examples/SampleApp/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/SampleApp/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Examples/SampleApp/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Examples/SampleApp/SampleApp/Assets.xcassets/AccentColor.colorset/Contents.json b/Examples/SampleApp/SampleApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Examples/SampleApp/SampleApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/SampleApp/SampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/SampleApp/SampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..2305880 --- /dev/null +++ b/Examples/SampleApp/SampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,35 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/SampleApp/SampleApp/Assets.xcassets/Contents.json b/Examples/SampleApp/SampleApp/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Examples/SampleApp/SampleApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/SampleApp/SampleApp/ContentView.swift b/Examples/SampleApp/SampleApp/ContentView.swift new file mode 100644 index 0000000..347049f --- /dev/null +++ b/Examples/SampleApp/SampleApp/ContentView.swift @@ -0,0 +1,21 @@ +// +// ContentView.swift +// SampleApp +// +// Created by 김동현 on 4/8/26. +// + +import SwiftUI +import SwiftUI_Kit + +struct ContentView: View { + var body: some View { + VStack { + SKSampleView() + } + } +} + +#Preview { + ContentView() +} diff --git a/Examples/SampleApp/SampleApp/SampleApp.swift b/Examples/SampleApp/SampleApp/SampleApp.swift new file mode 100644 index 0000000..a8b6dee --- /dev/null +++ b/Examples/SampleApp/SampleApp/SampleApp.swift @@ -0,0 +1,17 @@ +// +// SampleApp.swift +// SampleApp +// +// Created by 김동현 on 4/8/26. +// + +import SwiftUI + +@main +struct SampleApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/Sources/SwiftUI-Kit/Native/SKSampleView.swift b/Sources/SwiftUI-Kit/Native/SKSampleView.swift index a1592bb..86fe118 100644 --- a/Sources/SwiftUI-Kit/Native/SKSampleView.swift +++ b/Sources/SwiftUI-Kit/Native/SKSampleView.swift @@ -8,6 +8,9 @@ import SwiftUI public struct SKSampleView: View { + + public init () {} + public var body: some View { Text(String(describing: Self.self)) } From 9b0acd9a8503c921b366450c23c95aee7cc69339 Mon Sep 17 00:00:00 2001 From: indextrown Date: Wed, 8 Apr 2026 13:39:58 +0900 Subject: [PATCH 4/5] =?UTF-8?q?ci:=20draft=20pr=20=EC=9D=B4=EB=A9=94?= =?UTF-8?q?=EC=9D=BC=20=EC=95=8C=EB=A6=BC=20=EB=B9=84=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/email-notify.yml | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/.github/workflows/email-notify.yml b/.github/workflows/email-notify.yml index 75d0354..a4b5da6 100644 --- a/.github/workflows/email-notify.yml +++ b/.github/workflows/email-notify.yml @@ -1,8 +1,10 @@ # ✅ 기능 요약 # -# PR 생성 시 이메일 발송 +# Draft PR 생성(opened) 시 이메일 발송 안 함 +# Draft → Ready for review 전환 시 이메일 발송 +# 일반 PR 생성 시 이메일 발송 # PR 병합 시 이메일 발송 -# PR 코드리뷰(라인 댓글) 시 이메일 발송 +# PR 댓글 및 리뷰 알림 발송 # 불필요한 항목은 출력하지 않음 # 📧 이메일 알림을 위한 GitHub Actions @@ -11,7 +13,7 @@ name: Email Notifications on: pull_request: - types: [opened, closed] # PR 생성 및 병합 시 + types: [opened, ready_for_review, closed] issue_comment: types: [created] # PR에 달린 일반 댓글 pull_request_review_comment: @@ -32,11 +34,26 @@ jobs: BODY="" if [[ "${{ github.event_name }}" == "pull_request" ]]; then + + # Draft 상태로 생성된 PR이면 알림 제외 + if [[ "${{ github.event.action }}" == "opened" && "${{ github.event.pull_request.draft }}" == "true" ]]; then + echo "event_label=무시됨" >> $GITHUB_OUTPUT + echo "body=Draft PR 생성이므로 알림 제외됨" >> $GITHUB_OUTPUT + exit 0 + fi + if [[ "${{ github.event.action }}" == "closed" && "${{ github.event.pull_request.merged }}" == "true" ]]; then EVENT_LABEL="PR 병합" - else + elif [[ "${{ github.event.action }}" == "ready_for_review" ]]; then + EVENT_LABEL="PR 전환" + elif [[ "${{ github.event.action }}" == "opened" ]]; then EVENT_LABEL="PR 생성" + else + echo "event_label=무시됨" >> $GITHUB_OUTPUT + echo "body=처리 대상이 아닌 pull_request 이벤트입니다." >> $GITHUB_OUTPUT + exit 0 fi + TITLE="${{ github.event.pull_request.title }}" LINK="${{ github.event.pull_request.html_url }}" @@ -78,7 +95,7 @@ jobs: BODY+="📌 이벤트 종류: $EVENT_LABEL"$'\n' BODY+="📁 리포지토리: ${{ github.repository }}"$'\n' - BODY+="🛠️ 액션: ${{ github.event.action || 'N/A' }}"$'\n' + BODY+="🛠️ 액션: ${{ github.event.action }}"$'\n' BODY+="📝 제목: ${TITLE:-N/A}"$'\n' BODY+="🙋 작성자: ${{ github.actor }}"$'\n' [[ -n "$LINK" ]] && BODY+="🔗 링크: $LINK"$'\n' From 725dc7819bc9bf320462a407d9bba80dbaf6892d Mon Sep 17 00:00:00 2001 From: indextrown Date: Wed, 8 Apr 2026 13:49:53 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj | 4 ++-- Sources/SwiftUI-Kit/Native/SKSampleView.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj index 98d4ca6..0467635 100644 --- a/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj +++ b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -187,7 +187,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -245,7 +245,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; diff --git a/Sources/SwiftUI-Kit/Native/SKSampleView.swift b/Sources/SwiftUI-Kit/Native/SKSampleView.swift index 86fe118..c6f2a9f 100644 --- a/Sources/SwiftUI-Kit/Native/SKSampleView.swift +++ b/Sources/SwiftUI-Kit/Native/SKSampleView.swift @@ -1,5 +1,5 @@ // -// SwiftUIView.swift +// SKSampleView.swift // SwiftUI-Kit // // Created by 김동현 on 4/8/26.