diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.20-commonMain-WPEnbA.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.20-commonMain-WPEnbA.klib new file mode 100644 index 000000000..25c2d03ef Binary files /dev/null and b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.20-commonMain-WPEnbA.klib differ diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.1.20-commonMain-uBNgdg.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.1.20-commonMain-uBNgdg.klib new file mode 100644 index 000000000..e9fe24704 Binary files /dev/null and b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.1.20-commonMain-uBNgdg.klib differ diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-annotationsCommonMain-NjL0Sw.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-annotationsCommonMain-NjL0Sw.klib new file mode 100644 index 000000000..d3484d916 Binary files /dev/null and b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-annotationsCommonMain-NjL0Sw.klib differ diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-assertionsCommonMain-NjL0Sw.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-assertionsCommonMain-NjL0Sw.klib new file mode 100644 index 000000000..ed085b537 Binary files /dev/null and b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.20-assertionsCommonMain-NjL0Sw.klib differ diff --git a/iosApp/.gitignore b/iosApp/.gitignore new file mode 100644 index 000000000..fc3dcdcdd --- /dev/null +++ b/iosApp/.gitignore @@ -0,0 +1,101 @@ +# Created by https://www.toptal.com/developers/gitignore/api/xcode,swift +# Edit at https://www.toptal.com/developers/gitignore?templates=xcode,swift + +### Swift ### +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### + +## Xcode 8 and earlier + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcodeproj/project.xcworkspace/ +!*.xcworkspace/contents.xcworkspacedata +/*.gcno +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/xcode,swift diff --git a/iosApp/suwiki.xcodeproj/project.pbxproj b/iosApp/suwiki.xcodeproj/project.pbxproj index 697ae1c68..f3c6735de 100644 --- a/iosApp/suwiki.xcodeproj/project.pbxproj +++ b/iosApp/suwiki.xcodeproj/project.pbxproj @@ -6,6 +6,10 @@ objectVersion = 77; objects = { +/* Begin PBXBuildFile section */ + 9B9D7C0D2DCA53EA00C02045 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = 9B9D7C0C2DCA53E300C02045 /* .gitignore */; }; +/* End PBXBuildFile section */ + /* Begin PBXContainerItemProxy section */ 9B4AB3952DB512550027B9A5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -27,11 +31,25 @@ 9B4AB3872DB512530027B9A5 /* suwiki.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = suwiki.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9B4AB3942DB512550027B9A5 /* suwikiTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = suwikiTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 9B4AB39E2DB512550027B9A5 /* suwikiUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = suwikiUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B9D7C0C2DCA53E300C02045 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + 9BAEB2382DCBBC77001DC1F8 /* Exceptions for "suwiki" folder in "suwiki" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = 9B4AB3862DB512530027B9A5 /* suwiki */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ 9B4AB3892DB512530027B9A5 /* suwiki */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 9BAEB2382DCBBC77001DC1F8 /* Exceptions for "suwiki" folder in "suwiki" target */, + ); path = suwiki; sourceTree = ""; }; @@ -76,6 +94,7 @@ isa = PBXGroup; children = ( 9B4AB3892DB512530027B9A5 /* suwiki */, + 9B9D7C0C2DCA53E300C02045 /* .gitignore */, 9B4AB3972DB512550027B9A5 /* suwikiTests */, 9B4AB3A12DB512550027B9A5 /* suwikiUITests */, 9B4AB3882DB512530027B9A5 /* Products */, @@ -213,6 +232,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9B9D7C0D2DCA53EA00C02045 /* .gitignore in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -422,11 +442,13 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = suwiki/Info.plist; 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.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -451,11 +473,13 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = suwiki/Info.plist; 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.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/iosApp/suwiki.xcodeproj/project.xcworkspace/xcuserdata/jinukeu.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/suwiki.xcodeproj/project.xcworkspace/xcuserdata/jinukeu.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 8834b243a..000000000 Binary files a/iosApp/suwiki.xcodeproj/project.xcworkspace/xcuserdata/jinukeu.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/iosApp/suwiki.xcodeproj/xcuserdata/jinukeu.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/suwiki.xcodeproj/xcuserdata/jinukeu.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 65fa1684c..000000000 --- a/iosApp/suwiki.xcodeproj/xcuserdata/jinukeu.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - suwiki.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/iosApp/suwiki/Assets.xcassets/Assets/AppBlack.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/AppBlack.colorset/Contents.json new file mode 100644 index 000000000..f12943334 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/AppBlack.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.133", + "green" : "0.133", + "red" : "0.133" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/AppPrimary.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/AppPrimary.colorset/Contents.json new file mode 100644 index 000000000..0708cd6a1 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/AppPrimary.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.992", + "green" : "0.424", + "red" : "0.204" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/AppWhite.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/AppWhite.colorset/Contents.json new file mode 100644 index 000000000..97650a1a6 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/AppWhite.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Blue10.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Blue10.colorset/Contents.json new file mode 100644 index 000000000..6e8db2c60 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Blue10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.929", + "red" : "0.925" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Blue100.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Blue100.colorset/Contents.json new file mode 100644 index 000000000..f6a07310e --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Blue100.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.984", + "green" : "0.306", + "red" : "0.239" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Blue30.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Blue30.colorset/Contents.json new file mode 100644 index 000000000..43a532d2b --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Blue30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.996", + "green" : "0.792", + "red" : "0.773" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Blue5.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Blue5.colorset/Contents.json new file mode 100644 index 000000000..721ae444a --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Blue5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.973", + "red" : "0.961" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Error.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Error.colorset/Contents.json new file mode 100644 index 000000000..f8b229d8c --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Error.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.180", + "green" : "0.361", + "red" : "0.941" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Gray6A.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Gray6A.colorset/Contents.json new file mode 100644 index 000000000..de988c36d --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Gray6A.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.416", + "green" : "0.416", + "red" : "0.416" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Gray95.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Gray95.colorset/Contents.json new file mode 100644 index 000000000..12661922d --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Gray95.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.584", + "green" : "0.584", + "red" : "0.584" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/GrayCB.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/GrayCB.colorset/Contents.json new file mode 100644 index 000000000..05c154024 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/GrayCB.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.796", + "green" : "0.796", + "red" : "0.796" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/GrayDA.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/GrayDA.colorset/Contents.json new file mode 100644 index 000000000..a4a298802 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/GrayDA.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.855", + "green" : "0.855", + "red" : "0.855" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/GrayF6.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/GrayF6.colorset/Contents.json new file mode 100644 index 000000000..2dabc94ab --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/GrayF6.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.965", + "green" : "0.965", + "red" : "0.965" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/GrayFB.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/GrayFB.colorset/Contents.json new file mode 100644 index 000000000..c599d9e64 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/GrayFB.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.984", + "green" : "0.984", + "red" : "0.984" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Green10.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Green10.colorset/Contents.json new file mode 100644 index 000000000..74457717d --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Green10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.925", + "green" : "0.973", + "red" : "0.918" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Green100.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Green100.colorset/Contents.json new file mode 100644 index 000000000..1a2f0bca0 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Green100.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.259", + "green" : "0.725", + "red" : "0.176" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Green30.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Green30.colorset/Contents.json new file mode 100644 index 000000000..2696f40bb --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Green30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.776", + "green" : "0.918", + "red" : "0.753" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Orange10.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Orange10.colorset/Contents.json new file mode 100644 index 000000000..7f6ca5fac --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Orange10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.922", + "green" : "0.953", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Orange100.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Orange100.colorset/Contents.json new file mode 100644 index 000000000..a53b2aefa --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Orange100.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.231", + "green" : "0.529", + "red" : "0.992" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/Assets.xcassets/Assets/Orange30.colorset/Contents.json b/iosApp/suwiki/Assets.xcassets/Assets/Orange30.colorset/Contents.json new file mode 100644 index 000000000..35548cb85 --- /dev/null +++ b/iosApp/suwiki/Assets.xcassets/Assets/Orange30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.769", + "green" : "0.859", + "red" : "0.996" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/suwiki/ContentView.swift b/iosApp/suwiki/ContentView.swift index 1f427289b..bcb551747 100644 --- a/iosApp/suwiki/ContentView.swift +++ b/iosApp/suwiki/ContentView.swift @@ -9,12 +9,16 @@ import SwiftUI import sharedKit struct ContentView: View { + @EnvironmentObject var typography: TypographyTheme + var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text(Greeting().greet()) + .foregroundColor(AppColor.grayDA) + .typography(typography.caption1) } .padding() } @@ -22,4 +26,5 @@ struct ContentView: View { #Preview { ContentView() + .environmentObject(TypographyTheme()) } diff --git a/iosApp/suwiki/Presentation/Common/DesignSystem/AppColor.swift b/iosApp/suwiki/Presentation/Common/DesignSystem/AppColor.swift new file mode 100644 index 000000000..ad20ef9a0 --- /dev/null +++ b/iosApp/suwiki/Presentation/Common/DesignSystem/AppColor.swift @@ -0,0 +1,24 @@ +import SwiftUI + +enum AppColor { + static let primary = Color("AppPrimary") + static let black = Color("AppBlack") + static let white = Color("AppWhite") + static let error = Color("Error") + static let blue100 = Color("Blue100") + static let blue30 = Color("Blue30") + static let blue10 = Color("Blue10") + static let blue5 = Color("Blue5") + static let green100 = Color("Green100") + static let green30 = Color("Green30") + static let green10 = Color("Green10") + static let orange100 = Color("Orange100") + static let orange30 = Color("Orange30") + static let orange10 = Color("Orange10") + static let gray6A = Color("Gray6A") + static let gray95 = Color("Gray95") + static let grayCB = Color("GrayCB") + static let grayDA = Color("GrayDA") + static let grayF6 = Color("GrayF6") + static let grayFB = Color("GrayFB") +} \ No newline at end of file diff --git a/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Bold.ttf b/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Bold.ttf new file mode 100644 index 000000000..6cf639eb7 Binary files /dev/null and b/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Bold.ttf differ diff --git a/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Light.ttf b/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Light.ttf new file mode 100644 index 000000000..db0a22318 Binary files /dev/null and b/iosApp/suwiki/Presentation/Common/Fonts/NotoSansKR-Light.ttf differ diff --git a/iosApp/suwiki/Presentation/Common/Fonts/defaultTypography.swift b/iosApp/suwiki/Presentation/Common/Fonts/defaultTypography.swift new file mode 100644 index 000000000..5112dc0f2 --- /dev/null +++ b/iosApp/suwiki/Presentation/Common/Fonts/defaultTypography.swift @@ -0,0 +1,99 @@ +// +// Typography.swift +// suwiki +// +// Created by 이진욱 on 5/8/25. +// + +import SwiftUI + +let defaultTypography = SuwikiTypography( + header1: TextStyle(font: .notoSans(.bold, size: 22), lineSpacing: 1.5, color: .black), + header2: TextStyle(font: .notoSans(.bold, size: 18), lineSpacing: 1.5, color: .black), + header3: TextStyle(font: .notoSans(.medium, size: 18), lineSpacing: 1.5, color: .black), + header4: TextStyle(font: .notoSans(.regular, size: 18), lineSpacing: 1.5, color: .black), + header5: TextStyle(font: .notoSans(.bold, size: 16), lineSpacing: 1.5, color: .black), + header6: TextStyle(font: .notoSans(.medium, size: 16), lineSpacing: 1.5, color: .black), + header7: TextStyle(font: .notoSans(.regular, size: 16), lineSpacing: 1.5, color: .black), + + body1: TextStyle(font: .notoSans(.bold, size: 15), lineSpacing: 1.5, color: .black), + body2: TextStyle(font: .notoSans(.medium, size: 15), lineSpacing: 1.5, color: .black), + body3: TextStyle(font: .notoSans(.regular, size: 15), lineSpacing: 1.5, color: .black), + body4: TextStyle(font: .notoSans(.medium, size: 14), lineSpacing: 1.5, color: .black), + body5: TextStyle(font: .notoSans(.regular, size: 14), lineSpacing: 1.5, color: .black), + body6: TextStyle(font: .notoSans(.medium, size: 13), lineSpacing: 1.5, color: .black), + body7: TextStyle(font: .notoSans(.regular, size: 13), lineSpacing: 1.5, color: .black), + + caption1: TextStyle(font: .notoSans(.medium, size: 12), lineSpacing: 1.5, color: .black), + caption2: TextStyle(font: .notoSans(.regular, size: 12), lineSpacing: 1.5, color: .black), + caption3: TextStyle(font: .notoSans(.bold, size: 11), lineSpacing: 1.5, color: .black), + caption4: TextStyle(font: .notoSans(.regular, size: 11), lineSpacing: 1.5, color: .black), + caption5: TextStyle(font: .notoSans(.medium, size: 10), lineSpacing: 1.5, color: .black), + caption6: TextStyle(font: .notoSans(.regular, size: 10), lineSpacing: 1.5, color: .black), + caption7: TextStyle(font: .notoSans(.regular, size: 8), lineSpacing: 1.5, color: .black) +) + + +struct SuwikiTypography { + let header1: TextStyle + let header2: TextStyle + let header3: TextStyle + let header4: TextStyle + let header5: TextStyle + let header6: TextStyle + let header7: TextStyle + + let body1: TextStyle + let body2: TextStyle + let body3: TextStyle + let body4: TextStyle + let body5: TextStyle + let body6: TextStyle + let body7: TextStyle + + let caption1: TextStyle + let caption2: TextStyle + let caption3: TextStyle + let caption4: TextStyle + let caption5: TextStyle + let caption6: TextStyle + let caption7: TextStyle +} + +struct TextStyle { + let font: Font + let lineSpacing: CGFloat + let color: Color +} + +struct TypographyModifier: ViewModifier { + let style: TextStyle + + func body(content: Content) -> some View { + content + .font(style.font) + .lineSpacing(style.lineSpacing) + .foregroundColor(style.color) + } +} + +extension View { + func typography(_ style: TextStyle) -> some View { + self.modifier(TypographyModifier(style: style)) + } +} + + +extension Font { + static func notoSans(_ weight: Font.Weight, size: CGFloat) -> Font { + let fontName: String + switch weight { + case .bold: fontName = "NotoSansKR-Bold" + case .medium: fontName = "NotoSansKR-Medium" + case .regular: fontName = "NotoSansKR-Regular" + case .light: fontName = "NotoSansKR-Light" + default: fontName = "NotoSansKR-Regular" + } + return .custom(fontName, size: size) + } +} diff --git a/iosApp/suwiki/Presentation/Common/Theme/TypographyTheme.swift b/iosApp/suwiki/Presentation/Common/Theme/TypographyTheme.swift new file mode 100644 index 000000000..a8b80fecb --- /dev/null +++ b/iosApp/suwiki/Presentation/Common/Theme/TypographyTheme.swift @@ -0,0 +1,34 @@ +// +// TypographyTheme.swift +// suwiki +// +// Created by 이진욱 on 5/8/25. +// +import SwiftUI + +final class TypographyTheme: ObservableObject { + + let header1 = defaultTypography.header1 + let header2 = defaultTypography.header2 + let header3 = defaultTypography.header3 + let header4 = defaultTypography.header4 + let header5 = defaultTypography.header5 + let header6 = defaultTypography.header6 + let header7 = defaultTypography.header7 + + let body1 = defaultTypography.body1 + let body2 = defaultTypography.body2 + let body3 = defaultTypography.body3 + let body4 = defaultTypography.body4 + let body5 = defaultTypography.body5 + let body6 = defaultTypography.body6 + let body7 = defaultTypography.body7 + + let caption1 = defaultTypography.caption1 + let caption2 = defaultTypography.caption2 + let caption3 = defaultTypography.caption3 + let caption4 = defaultTypography.caption4 + let caption5 = defaultTypography.caption5 + let caption6 = defaultTypography.caption6 + let caption7 = defaultTypography.caption7 +} diff --git a/iosApp/suwiki/suwikiApp.swift b/iosApp/suwiki/suwikiApp.swift index fb0c8ba29..a8a7366d1 100644 --- a/iosApp/suwiki/suwikiApp.swift +++ b/iosApp/suwiki/suwikiApp.swift @@ -12,6 +12,7 @@ struct suwikiApp: App { var body: some Scene { WindowGroup { ContentView() + .environmentObject(TypographyTheme()) } } }