commit 5bdfd99e89a16c5166b1832e5947dead94a48576 Author: Lncvrt Date: Thu Oct 1 13:37:17 2026 -0700 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/Name a Color!.xcodeproj/project.pbxproj b/Name a Color!.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c3f66a7 --- /dev/null +++ b/Name a Color!.xcodeproj/project.pbxproj @@ -0,0 +1,344 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXFileReference section */ + 1FD19DA6306EEFDE001468F7 /* Name a Color!.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Name a Color!.app"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 1FD19DA8306EEFDE001468F7 /* Name a Color! */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = "Name a Color!"; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1FD19DA3306EEFDE001468F7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1FD19D9D306EEFDE001468F7 = { + isa = PBXGroup; + children = ( + 1FD19DA8306EEFDE001468F7 /* Name a Color! */, + 1FD19DA7306EEFDE001468F7 /* Products */, + ); + sourceTree = ""; + }; + 1FD19DA7306EEFDE001468F7 /* Products */ = { + isa = PBXGroup; + children = ( + 1FD19DA6306EEFDE001468F7 /* Name a Color!.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1FD19DA5306EEFDE001468F7 /* Name a Color! */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FD19DB2306EEFE0001468F7 /* Build configuration list for PBXNativeTarget "Name a Color!" */; + buildPhases = ( + 1FD19DA2306EEFDE001468F7 /* Sources */, + 1FD19DA3306EEFDE001468F7 /* Frameworks */, + 1FD19DA4306EEFDE001468F7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 1FD19DA8306EEFDE001468F7 /* Name a Color! */, + ); + name = "Name a Color!"; + packageProductDependencies = ( + ); + productName = "Name a Color!"; + productReference = 1FD19DA6306EEFDE001468F7 /* Name a Color!.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1FD19D9E306EEFDE001468F7 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1640; + LastUpgradeCheck = 1640; + TargetAttributes = { + 1FD19DA5306EEFDE001468F7 = { + CreatedOnToolsVersion = 16.4; + }; + }; + }; + buildConfigurationList = 1FD19DA1306EEFDE001468F7 /* Build configuration list for PBXProject "Name a Color!" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1FD19D9D306EEFDE001468F7; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = 1FD19DA7306EEFDE001468F7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1FD19DA5306EEFDE001468F7 /* Name a Color! */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1FD19DA4306EEFDE001468F7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1FD19DA2306EEFDE001468F7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1FD19DB0306EEFE0001468F7 /* 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; + 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; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 1FD19DB1306EEFE0001468F7 /* 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"; + 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; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SWIFT_COMPILATION_MODE = wholemodule; + }; + name = Release; + }; + 1FD19DB3306EEFE0001468F7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Name a Color!/Name_a_Color_.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 265636CTKR; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = xyz.lncvrt.nameacolor; + PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = YES; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + XROS_DEPLOYMENT_TARGET = 2.5; + }; + name = Debug; + }; + 1FD19DB4306EEFE0001468F7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Name a Color!/Name_a_Color_.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 265636CTKR; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = xyz.lncvrt.nameacolor; + PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = YES; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + XROS_DEPLOYMENT_TARGET = 2.5; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1FD19DA1306EEFDE001468F7 /* Build configuration list for PBXProject "Name a Color!" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FD19DB0306EEFE0001468F7 /* Debug */, + 1FD19DB1306EEFE0001468F7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1FD19DB2306EEFE0001468F7 /* Build configuration list for PBXNativeTarget "Name a Color!" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FD19DB3306EEFE0001468F7 /* Debug */, + 1FD19DB4306EEFE0001468F7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1FD19D9E306EEFDE001468F7 /* Project object */; +} diff --git a/Name a Color!.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Name a Color!.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Name a Color!.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Name a Color!.xcodeproj/project.xcworkspace/xcuserdata/travis.xcuserdatad/UserInterfaceState.xcuserstate b/Name a Color!.xcodeproj/project.xcworkspace/xcuserdata/travis.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..c4d3652 Binary files /dev/null and b/Name a Color!.xcodeproj/project.xcworkspace/xcuserdata/travis.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Name a Color!.xcodeproj/xcuserdata/travis.xcuserdatad/xcschemes/xcschememanagement.plist b/Name a Color!.xcodeproj/xcuserdata/travis.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..84fffae --- /dev/null +++ b/Name a Color!.xcodeproj/xcuserdata/travis.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Name a Color!.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Name a Color!/Assets.xcassets/AccentColor.colorset/Contents.json b/Name a Color!/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Name a Color!/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/100.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000..09b5afb Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/100.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/102.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/102.png new file mode 100644 index 0000000..d020a91 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/102.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024-mac.png new file mode 100644 index 0000000..446d298 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000..53b17c3 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/108.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/108.png new file mode 100644 index 0000000..6c82d0c Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/108.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/114.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000..5db700a Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/114.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/120.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000..d1a58b3 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/120.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/128-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/128-mac.png new file mode 100644 index 0000000..acd3ac0 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/128-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/144.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000..ef87959 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/144.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/152.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000..23d544a Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/152.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/16-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/16-mac.png new file mode 100644 index 0000000..22df65a Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/16-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/167.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 0000000..d1abafb Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/167.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/172.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/172.png new file mode 100644 index 0000000..0dc679f Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/172.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/180.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000..a6d0646 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/180.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/196.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/196.png new file mode 100644 index 0000000..2eab710 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/196.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/20.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 0000000..fa01f03 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/20.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/216.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/216.png new file mode 100644 index 0000000..4b08ef8 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/216.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/234.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/234.png new file mode 100644 index 0000000..dbb3208 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/234.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/256-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/256-mac.png new file mode 100644 index 0000000..baf7bfc Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/256-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/258.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/258.png new file mode 100644 index 0000000..dbf81e6 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/258.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/29.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000..1ab64d9 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/29.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/32-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/32-mac.png new file mode 100644 index 0000000..943db98 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/32-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/40.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 0000000..5ed6721 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/40.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/48.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/48.png new file mode 100644 index 0000000..e83bf54 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/48.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/50.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000..5fb37ac Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/50.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/512-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/512-mac.png new file mode 100644 index 0000000..aa205e8 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/512-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/55.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/55.png new file mode 100644 index 0000000..ba1f345 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/55.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/57.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000..7d53aad Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/57.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/58.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 0000000..418910b Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/58.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/60.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 0000000..581fbd9 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/60.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/64-mac.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/64-mac.png new file mode 100644 index 0000000..01463fd Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/64-mac.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/66.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/66.png new file mode 100644 index 0000000..c6091b9 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/66.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/72.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000..5b647ec Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/72.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/76.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000..67322bc Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/76.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/80.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 0000000..32203e3 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/80.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/87.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 0000000..722d1f9 Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/87.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/88.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/88.png new file mode 100644 index 0000000..a45954c Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/88.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/92.png b/Name a Color!/Assets.xcassets/AppIcon.appiconset/92.png new file mode 100644 index 0000000..1a2b49b Binary files /dev/null and b/Name a Color!/Assets.xcassets/AppIcon.appiconset/92.png differ diff --git a/Name a Color!/Assets.xcassets/AppIcon.appiconset/Contents.json b/Name a Color!/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..6e2721a --- /dev/null +++ b/Name a Color!/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"idiom":"watch","filename":"172.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"38mm","scale":"2x","size":"86x86","expected-size":"172","role":"quickLook"},{"idiom":"watch","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"38mm","scale":"2x","size":"40x40","expected-size":"80","role":"appLauncher"},{"idiom":"watch","filename":"88.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"40mm","scale":"2x","size":"44x44","expected-size":"88","role":"appLauncher"},{"idiom":"watch","filename":"102.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"45mm","scale":"2x","size":"51x51","expected-size":"102","role":"appLauncher"},{"idiom":"watch","filename":"108.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"49mm","scale":"2x","size":"54x54","expected-size":"108","role":"appLauncher"},{"idiom":"watch","filename":"92.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"41mm","scale":"2x","size":"46x46","expected-size":"92","role":"appLauncher"},{"idiom":"watch","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"44mm","scale":"2x","size":"50x50","expected-size":"100","role":"appLauncher"},{"idiom":"watch","filename":"196.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"42mm","scale":"2x","size":"98x98","expected-size":"196","role":"quickLook"},{"idiom":"watch","filename":"234.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"45mm","scale":"2x","size":"117x117","expected-size":"234","role":"quickLook"},{"idiom":"watch","filename":"258.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"49mm","scale":"2x","size":"129x129","expected-size":"258","role":"quickLook"},{"idiom":"watch","filename":"216.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"44mm","scale":"2x","size":"108x108","expected-size":"216","role":"quickLook"},{"idiom":"watch","filename":"48.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"38mm","scale":"2x","size":"24x24","expected-size":"48","role":"notificationCenter"},{"idiom":"watch","filename":"55.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"42mm","scale":"2x","size":"27.5x27.5","expected-size":"55","role":"notificationCenter"},{"idiom":"watch","filename":"66.png","folder":"Assets.xcassets/AppIcon.appiconset/","subtype":"45mm","scale":"2x","size":"33x33","expected-size":"66","role":"notificationCenter"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"watch","role":"companionSettings","scale":"3x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"watch","role":"companionSettings","scale":"2x"},{"size":"1024x1024","expected-size":"1024","filename":"1024.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"watch-marketing","scale":"1x"},{"size":"128x128","expected-size":"128","filename":"128-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"256x256","expected-size":"256","filename":"256-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"128x128","expected-size":"256","filename":"256-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"256x256","expected-size":"512","filename":"512-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"32x32","expected-size":"32","filename":"32-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"512x512","expected-size":"512","filename":"512-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"16x16","expected-size":"16","filename":"16-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"16x16","expected-size":"32","filename":"32-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"32x32","expected-size":"64","filename":"64-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"512x512","expected-size":"1024","filename":"1024-mac.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"}]} \ No newline at end of file diff --git a/Name a Color!/Assets.xcassets/Contents.json b/Name a Color!/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Name a Color!/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Name a Color!/ContentView.swift b/Name a Color!/ContentView.swift new file mode 100644 index 0000000..e7060e1 --- /dev/null +++ b/Name a Color!/ContentView.swift @@ -0,0 +1,222 @@ +// +// ContentView.swift +// Name a Color! +// +// Created by Travis Harbin on 8/30/26. +// + +import SwiftUI +#if os(macOS) +import AppKit +#else +import UIKit +#endif + +struct Item: Codable, Identifiable { + let id: Int + let name: String + let color: String + let timestamp: Int +} + +struct WarningAlertModel: Identifiable { + let id = UUID() + let title: String + let message: String +} + +extension Color { + init(hex: String) { + let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) + let value = UInt64(hex, radix: 16) ?? 0 + + self.init( + red: Double((value >> 16) & 0xFF) / 255, + green: Double((value >> 8) & 0xFF) / 255, + blue: Double(value & 0xFF) / 255 + ) + } + + //ai func + func toHex() -> String? { + #if canImport(UIKit) + let color = UIColor(self) + + guard let color = color.cgColor.converted( + to: CGColorSpace(name: CGColorSpace.sRGB)!, + intent: .defaultIntent, + options: nil + ) else { + return nil + } + + let components = color.components ?? [] + + guard components.count >= 3 else { + return nil + } + + let r = Int(round(components[0] * 255)) + let g = Int(round(components[1] * 255)) + let b = Int(round(components[2] * 255)) + + return String(format: "%02X%02X%02X", r, g, b) + + #elseif canImport(AppKit) + let color = NSColor(self) + + guard let color = color.usingColorSpace(.sRGB) else { + return nil + } + + let r = Int(round(color.redComponent * 255)) + let g = Int(round(color.greenComponent * 255)) + let b = Int(round(color.blueComponent * 255)) + + return String(format: "%02X%02X%02X", r, g, b) + #endif + } +} + +extension String { + func base64Decoded() -> String? { + guard let data = Data(base64Encoded: self) else { return nil } + return String(data: data, encoding: .utf8) + } +} + +struct ContentView: View { + @State private var items: [Item] = [] + @State private var total: Int = 255 * 255 * 255 + @State private var selectedColor: Color = Color.blue + @State private var selectedName: String = "" + @State private var activeWarning: WarningAlertModel? + + func updateItems() async throws { + let url = URL(string: "https://nameacolor.lncvrt.xyz/get.php")! + let (data, _) = try await URLSession.shared.data(from: url) + items = try JSONDecoder().decode([Item].self, from: data) + } + + var body: some View { + VStack { + HStack { + Spacer() + Text("Name a Color!") + .font(.title) + .fontWeight(.bold) + Spacer() + Button { + items = [] + Task { + do { + try await updateItems() + } catch { + print("failed to fetch items:", error) + } + } + } label: { + Image(systemName: "arrow.clockwise") + .font(.system(size: 14, weight: .semibold)) + .frame(width: 32, height: 32) + } + .buttonStyle(.plain) + .background(.gray.opacity(0.12)) + .clipShape(Circle()) + .help("Refresh") + } + Text("\(items.count.formatted())/\(total.formatted()) colors named (\((total - items.count).formatted()) left)") + + Text("Name your own color!") + .font(.title2) + .fontWeight(.bold) + .padding(.top) + HStack { + ColorPicker("Color", selection: $selectedColor, supportsOpacity: true) + .padding() + TextField("Name", text: $selectedName) + Button("Name it!") { + Task { + let url = URL(string: "https://nameacolor.lncvrt.xyz/upload.php?color=" + (selectedColor.toHex() ?? "FFFFFF") + "&name=" + selectedName)! + let (data, _) = try await URLSession.shared.data(from: url) + let response = String(data: data, encoding: .utf8) + + if response == "-1" { + activeWarning = WarningAlertModel(title: "Failed to upload color", message: "Invalid color") + } else if response == "-2" { + activeWarning = WarningAlertModel(title: "Failed to upload color", message: "Name too short") + } else if response == "-3" { + activeWarning = WarningAlertModel(title: "Failed to upload color", message: "Name too long") + } else if response == "-4" { + activeWarning = WarningAlertModel(title: "Failed to upload color", message: "Color already taken") + } else if response == "-5" { + activeWarning = WarningAlertModel(title: "Failed to upload color", message: "Name already taken") + } else { + activeWarning = WarningAlertModel(title: "uploaded", message: "kaboom") + } + } + } + .buttonStyle(.bordered) + } + + Text("Colors that were named") + .font(.title2) + .fontWeight(.bold) + .padding(.top) + + ScrollView { + LazyVGrid( + columns: [GridItem(.adaptive(minimum: 210), spacing: 14)], + spacing: 14 + ) { + ForEach(items) { item in + VStack(alignment: .leading, spacing: 12) { + Color(hex: item.color) + .frame(height: 100) + .clipShape(RoundedRectangle(cornerRadius: 12)) + + VStack(alignment: .leading, spacing: 4) { + Text(item.name.base64Decoded() ?? "???") + .font(.headline) + .foregroundStyle(.primary) + + Text("#" + item.color.uppercased()) + .font(.system(.subheadline, design: .monospaced)) + .foregroundStyle(.secondary) + .textSelection(.enabled) + } + } + .padding(12) + .frame(maxWidth: .infinity, alignment: .leading) + .background(.gray.opacity(0.12)) + .clipShape(RoundedRectangle(cornerRadius: 16)) + .overlay { + RoundedRectangle(cornerRadius: 16) + .stroke(.primary.opacity(0.06), lineWidth: 1) + } + } + } + .padding() + .task { + do { + try await updateItems() + } catch { + print("failed to fetch items:", error) + } + } + } + } + .alert(item: $activeWarning) { warning in + Alert( + title: Text(warning.title), + message: Text(warning.message), + dismissButton: .default(Text("OK")) + ) + } + .padding() + } +} + +#Preview { + ContentView() +} diff --git a/Name a Color!/Name_a_Color_.entitlements b/Name a Color!/Name_a_Color_.entitlements new file mode 100644 index 0000000..625af03 --- /dev/null +++ b/Name a Color!/Name_a_Color_.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + com.apple.security.network.client + + + diff --git a/Name a Color!/Name_a_Color_App.swift b/Name a Color!/Name_a_Color_App.swift new file mode 100644 index 0000000..7dd3167 --- /dev/null +++ b/Name a Color!/Name_a_Color_App.swift @@ -0,0 +1,17 @@ +// +// Name_a_Color_App.swift +// Name a Color! +// +// Created by Travis Harbin on 8/30/26. +// + +import SwiftUI + +@main +struct Name_a_Color_App: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +}