From 08d184f974de85ec4d5ddf1f2538ad0557071ffe Mon Sep 17 00:00:00 2001 From: opficdev Date: Wed, 9 Sep 2026 12:39:20 +0900 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20=EC=BB=AC=EB=9F=AC=EC=85=8B=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Background.colorset/Contents.json | 38 +++++++++++++++++++ .../Border.colorset/Contents.json | 38 +++++++++++++++++++ .../Danger.colorset/Contents.json | 38 +++++++++++++++++++ .../Info.colorset/Contents.json | 38 +++++++++++++++++++ .../OnPrimaryContainer.colorset/Contents.json | 38 +++++++++++++++++++ .../PrimaryContainer.colorset/Contents.json | 38 +++++++++++++++++++ .../Success.colorset/Contents.json | 38 +++++++++++++++++++ .../Surface.colorset/Contents.json | 38 +++++++++++++++++++ .../SurfaceSecondary.colorset/Contents.json | 38 +++++++++++++++++++ .../TextPrimary.colorset/Contents.json | 38 +++++++++++++++++++ .../TextSecondary.colorset/Contents.json | 38 +++++++++++++++++++ .../TextTertiary.colorset/Contents.json | 38 +++++++++++++++++++ .../Warning.colorset/Contents.json | 38 +++++++++++++++++++ 13 files changed, 494 insertions(+) create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json create mode 100644 Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json new file mode 100644 index 00000000..5383d553 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xFA", + "green": "0xF9", + "red": "0xF6" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x2A", + "green": "0x17", + "red": "0x0F" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json new file mode 100644 index 00000000..05831c3e --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xF0", + "green": "0xE8", + "red": "0xE2" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x69", + "green": "0x55", + "red": "0x47" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json new file mode 100644 index 00000000..3e1dafd9 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x1C", + "green": "0x1C", + "red": "0xB9" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xA5", + "green": "0xA5", + "red": "0xFC" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json new file mode 100644 index 00000000..99bb2aa6 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xD8", + "green": "0x4E", + "red": "0x1D" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xFD", + "green": "0xC5", + "red": "0x93" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json new file mode 100644 index 00000000..c3f8e3b6 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x59", + "green": "0x5E", + "red": "0x11" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xE4", + "green": "0xF6", + "red": "0x99" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json new file mode 100644 index 00000000..a7b16d2e --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xF8", + "green": "0xF7", + "red": "0xE6" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x43", + "green": "0x3E", + "red": "0x15" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json new file mode 100644 index 00000000..146ae776 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x3D", + "green": "0x80", + "red": "0x15" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xAC", + "green": "0xEF", + "red": "0x86" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json new file mode 100644 index 00000000..9ce1733d --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xFF", + "green": "0xFF", + "red": "0xFF" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x3B", + "green": "0x29", + "red": "0x1E" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json new file mode 100644 index 00000000..3a1b5653 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xF9", + "green": "0xF5", + "red": "0xF1" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x55", + "green": "0x41", + "red": "0x33" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json new file mode 100644 index 00000000..f64ebf00 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x2A", + "green": "0x17", + "red": "0x0F" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xF9", + "green": "0xF5", + "red": "0xF1" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json new file mode 100644 index 00000000..3a024c07 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x69", + "green": "0x55", + "red": "0x47" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xE1", + "green": "0xD5", + "red": "0xCB" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json new file mode 100644 index 00000000..50a25ab8 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x8B", + "green": "0x74", + "red": "0x64" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xB8", + "green": "0xA3", + "red": "0x94" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json b/Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json new file mode 100644 index 00000000..4719f2c8 --- /dev/null +++ b/Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x09", + "green": "0x53", + "red": "0xB4" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x4D", + "green": "0xD3", + "red": "0xFC" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} From 1c9636aaddd9f553627188f37952a7295a36375d Mon Sep 17 00:00:00 2001 From: opficdev Date: Wed, 9 Sep 2026 15:59:28 +0900 Subject: [PATCH 2/5] =?UTF-8?q?refactor:=20=EC=BB=AC=EB=9F=AC=EC=85=8B=20S?= =?UTF-8?q?SOT=20=EB=B3=B4=EC=9E=A5=20=EB=B0=8F=20=EC=BB=B4=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/App/Project.swift | 1 + .../AccentColor.colorset/Contents.json | 38 ++++++++++ .../AppBackground.colorset}/Contents.json | 0 .../Apple.imageset/Apple_black.png | Bin .../Apple.imageset/Apple_white.png | Bin .../Apple.imageset/Contents.json | 0 .../Border.colorset/Contents.json | 0 .../Resources/Assets.xcassets}/Contents.json | 5 -- .../Danger.colorset/Contents.json | 0 .../Github.imageset/Contents.json | 0 .../Github.imageset/Github_black.png | Bin .../Github.imageset/Github_white.png | Bin .../Google.imageset/Contents.json | 0 .../Google.imageset/Google.png | Bin .../Info.colorset/Contents.json | 0 .../OnPrimaryContainer.colorset/Contents.json | 0 .../Primary.imageset/Contents.json | 0 .../Primary.imageset/Primary_dark.png | Bin .../PrimaryContainer.colorset/Contents.json | 0 .../Success.colorset/Contents.json | 0 .../Surface.colorset/Contents.json | 0 .../SurfaceSecondary.colorset/Contents.json | 0 .../TextPrimary.colorset/Contents.json | 0 .../TextSecondary.colorset/Contents.json | 0 .../TextTertiary.colorset/Contents.json | 0 .../Warning.colorset/Contents.json | 0 .../Sources/Common/ColorAsset.swift | 36 +++++++++ .../Common/PresentationResources.swift | 14 ++++ .../Sources/Todo/Editor/TodoEditorView.swift | 70 ++++++++++-------- Application/Presentation/Project.swift | 1 + 30 files changed, 128 insertions(+), 37 deletions(-) create mode 100644 Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json rename Application/{App/Sources/Resource/Assets.xcassets/Background.colorset => Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset}/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Apple.imageset/Apple_black.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Apple.imageset/Apple_white.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Apple.imageset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Border.colorset/Contents.json (100%) rename Application/{App/Sources/Resource/Assets.xcassets/AccentColor.colorset => Presentation/PresentationShared/Resources/Assets.xcassets}/Contents.json (51%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Danger.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Github.imageset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Github.imageset/Github_black.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Github.imageset/Github_white.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Google.imageset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Google.imageset/Google.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Info.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Primary.imageset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Primary.imageset/Primary_dark.png (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/PrimaryContainer.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Success.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Surface.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/SurfaceSecondary.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/TextPrimary.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/TextSecondary.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/TextTertiary.colorset/Contents.json (100%) rename Application/{App/Sources/Resource => Presentation/PresentationShared/Resources}/Assets.xcassets/Warning.colorset/Contents.json (100%) create mode 100644 Application/Presentation/PresentationShared/Sources/Common/ColorAsset.swift create mode 100644 Application/Presentation/PresentationShared/Sources/Common/PresentationResources.swift diff --git a/Application/App/Project.swift b/Application/App/Project.swift index bdca564b..c75bcec4 100644 --- a/Application/App/Project.swift +++ b/Application/App/Project.swift @@ -20,6 +20,7 @@ let project = Project( sources: ["Sources/**/*.swift"], resources: [ "Sources/Resource/Assets.xcassets", + "../Presentation/PresentationShared/Resources/Assets.xcassets", "Sources/Resource/GoogleService-Info.plist", "Sources/Resource/Localizable.xcstrings", ], diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..8b62583c --- /dev/null +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors": [ + { + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xA8", + "green": "0xA5", + "red": "0x1B" + } + }, + "idiom": "universal" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xBF", + "green": "0xD4", + "red": "0x2D" + } + }, + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Background.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_black.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Apple_black.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_black.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Apple_black.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_white.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Apple_white.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_white.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Apple_white.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Apple.imageset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Apple.imageset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Border.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Contents.json similarity index 51% rename from Application/App/Sources/Resource/Assets.xcassets/AccentColor.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Contents.json index eb878970..73c00596 100644 --- a/Application/App/Sources/Resource/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Contents.json @@ -1,9 +1,4 @@ { - "colors" : [ - { - "idiom" : "universal" - } - ], "info" : { "author" : "xcode", "version" : 1 diff --git a/Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Danger.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Github_black.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Github_black.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Github_black.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Github_black.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Github_white.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Github_white.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Github.imageset/Github_white.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Github.imageset/Github_white.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/Google.imageset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Google.imageset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Google.imageset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Google.imageset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Google.imageset/Google.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Google.imageset/Google.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Google.imageset/Google.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Google.imageset/Google.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Info.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Primary.imageset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Primary.imageset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Primary.imageset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Primary.imageset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Primary.imageset/Primary_dark.png similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Primary.imageset/Primary_dark.png diff --git a/Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/PrimaryContainer.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Success.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Surface.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/SurfaceSecondary.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/TextPrimary.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/TextSecondary.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/TextTertiary.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json diff --git a/Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json similarity index 100% rename from Application/App/Sources/Resource/Assets.xcassets/Warning.colorset/Contents.json rename to Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json diff --git a/Application/Presentation/PresentationShared/Sources/Common/ColorAsset.swift b/Application/Presentation/PresentationShared/Sources/Common/ColorAsset.swift new file mode 100644 index 00000000..ae96b3cb --- /dev/null +++ b/Application/Presentation/PresentationShared/Sources/Common/ColorAsset.swift @@ -0,0 +1,36 @@ +// +// ColorAsset.swift +// PresentationShared +// +// Created by opfic on 9/9/26. +// + +import SwiftUI + +public enum ColorAsset { + case accentColor + case appBackground + case border + case danger + case info + case onPrimaryContainer + case primaryContainer + case success + case surface + case surfaceSecondary + case textPrimary + case textSecondary + case textTertiary + case warning + + fileprivate var name: String { + let name = String(describing: self) + return name.prefix(1).uppercased() + name.dropFirst() + } +} + +public extension Color { + init(asset: ColorAsset) { + self.init(asset.name, bundle: PresentationResources.bundle) + } +} diff --git a/Application/Presentation/PresentationShared/Sources/Common/PresentationResources.swift b/Application/Presentation/PresentationShared/Sources/Common/PresentationResources.swift new file mode 100644 index 00000000..2221cd20 --- /dev/null +++ b/Application/Presentation/PresentationShared/Sources/Common/PresentationResources.swift @@ -0,0 +1,14 @@ +// +// PresentationResources.swift +// PresentationShared +// +// Created by opfic on 9/9/26. +// + +import Foundation + +public enum PresentationResources { + public static let bundle = Bundle(for: PresentationResourceBundleToken.self) +} + +private final class PresentationResourceBundleToken {} diff --git a/Application/Presentation/PresentationShared/Sources/Todo/Editor/TodoEditorView.swift b/Application/Presentation/PresentationShared/Sources/Todo/Editor/TodoEditorView.swift index 5bbbf173..68ecace5 100644 --- a/Application/Presentation/PresentationShared/Sources/Todo/Editor/TodoEditorView.swift +++ b/Application/Presentation/PresentationShared/Sources/Todo/Editor/TodoEditorView.swift @@ -34,13 +34,7 @@ public struct TodoEditorView: View { public var body: some View { NavigationStack { - Group { - if store.tabViewTag == .editor { - editorContent - } else { - previewContent - } - } + selectedContent .onTapGesture { field = .content } @@ -54,35 +48,47 @@ public struct TodoEditorView: View { .sheet(item: $store.scope(state: \.sheet, action: \.sheet)) { store in sheetContent(store) } - .toolbar { - if !isiOSAppOnMac { - ToolbarLeadingButton { close() } - } - ToolbarItem(placement: .topBarTrailing) { - Button { - store.send(.setSheet(.info)) - } label: { - Image(systemName: "info.circle") - } - } - if store.isLoading { - if #available(iOS 26.0, *) { - ToolbarSpacer(.fixed, placement: .topBarTrailing) - } - ToolbarItem(placement: .topBarTrailing) { - ProgressView() - } - } else { - ToolbarTrailingButton { - submit() - } - .disabled(!store.isReadyToSubmit) - } - } + .toolbar { toolbarContent } .prominentAlert(store, state: \.alert, action: \.alert) } } + @ViewBuilder + private var selectedContent: some View { + if store.tabViewTag == .editor { + editorContent + } else { + previewContent + } + } + + @ToolbarContentBuilder + private var toolbarContent: some ToolbarContent { + if !isiOSAppOnMac { + ToolbarLeadingButton { close() } + } + ToolbarItem(placement: .topBarTrailing) { + Button { + store.send(.setSheet(.info)) + } label: { + Image(systemName: "info.circle") + } + } + if store.isLoading { + if #available(iOS 26.0, *) { + ToolbarSpacer(.fixed, placement: .topBarTrailing) + } + ToolbarItem(placement: .topBarTrailing) { + ProgressView() + } + } else { + ToolbarTrailingButton { + submit() + } + .disabled(!store.isReadyToSubmit) + } + } + private var editorContent: some View { ScrollView { LazyVStack(spacing: 10) { diff --git a/Application/Presentation/Project.swift b/Application/Presentation/Project.swift index 55af3554..3025ed98 100644 --- a/Application/Presentation/Project.swift +++ b/Application/Presentation/Project.swift @@ -34,6 +34,7 @@ let project = Project( bundleId: "com.opfic.DevLog.PresentationShared", infoPlist: .file(path: frameworkInfoPlistPath), sources: ["PresentationShared/Sources/**/*.swift"], + resources: ["PresentationShared/Resources/Assets.xcassets"], scripts: [ DevLogScripts.swiftLint( sourcePath: "PresentationShared/Sources", From c921e1a9c2061d6db2963732dafacbbf283381f7 Mon Sep 17 00:00:00 2001 From: opficdev Date: Wed, 9 Sep 2026 16:51:39 +0900 Subject: [PATCH 3/5] =?UTF-8?q?ui:=20=EC=BB=AC=EB=9F=AC=EC=85=8B=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets.xcassets/AccentColor.colorset/Contents.json | 6 +++--- .../Assets.xcassets/AppBackground.colorset/Contents.json | 4 ++-- .../Resources/Assets.xcassets/Border.colorset/Contents.json | 6 +++--- .../Resources/Assets.xcassets/Danger.colorset/Contents.json | 6 +++--- .../Resources/Assets.xcassets/Info.colorset/Contents.json | 6 +++--- .../OnPrimaryContainer.colorset/Contents.json | 6 +++--- .../Assets.xcassets/PrimaryContainer.colorset/Contents.json | 6 +++--- .../Assets.xcassets/Success.colorset/Contents.json | 6 +++--- .../Assets.xcassets/Surface.colorset/Contents.json | 6 +++--- .../Assets.xcassets/SurfaceSecondary.colorset/Contents.json | 6 +++--- .../Assets.xcassets/TextPrimary.colorset/Contents.json | 6 +++--- .../Assets.xcassets/TextSecondary.colorset/Contents.json | 6 +++--- .../Assets.xcassets/TextTertiary.colorset/Contents.json | 6 +++--- .../Assets.xcassets/Warning.colorset/Contents.json | 6 +++--- 14 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json index 8b62583c..23b9cc2b 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xBF", - "green": "0xD4", - "red": "0x2D" + "blue": "0xA6", + "green": "0xA0", + "red": "0x1E" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json index 5383d553..0347f24f 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/AppBackground.colorset/Contents.json @@ -23,8 +23,8 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x2A", - "green": "0x17", + "blue": "0x16", + "green": "0x14", "red": "0x0F" } }, diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json index 05831c3e..c166657c 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Border.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x69", - "green": "0x55", - "red": "0x47" + "blue": "0x30", + "green": "0x2C", + "red": "0x24" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json index 3e1dafd9..be5c95a4 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Danger.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xA5", - "green": "0xA5", - "red": "0xFC" + "blue": "0x71", + "green": "0x71", + "red": "0xF8" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json index 99bb2aa6..38418323 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Info.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xFD", - "green": "0xC5", - "red": "0x93" + "blue": "0xF8", + "green": "0xBD", + "red": "0x38" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json index c3f8e3b6..c0ceeb36 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/OnPrimaryContainer.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xE4", - "green": "0xF6", - "red": "0x99" + "blue": "0xDD", + "green": "0xD7", + "red": "0x67" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json index a7b16d2e..f13f0ce1 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x43", - "green": "0x3E", - "red": "0x15" + "blue": "0xA6", + "green": "0xA0", + "red": "0x1E" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json index 146ae776..a8a0142f 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Success.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xAC", - "green": "0xEF", - "red": "0x86" + "blue": "0x99", + "green": "0xD3", + "red": "0x34" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json index 9ce1733d..94815123 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Surface.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x3B", - "green": "0x29", - "red": "0x1E" + "blue": "0x1E", + "green": "0x1C", + "red": "0x17" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json index 3a1b5653..9e86ecdd 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/SurfaceSecondary.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x55", - "green": "0x41", - "red": "0x33" + "blue": "0x22", + "green": "0x20", + "red": "0x1B" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json index f64ebf00..2d37ab02 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextPrimary.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xF9", - "green": "0xF5", - "red": "0xF1" + "blue": "0xE6", + "green": "0xE3", + "red": "0xDF" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json index 3a024c07..5ce8eb03 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextSecondary.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xE1", - "green": "0xD5", - "red": "0xCB" + "blue": "0xC9", + "green": "0xC9", + "red": "0xBC" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json index 50a25ab8..12d817e1 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/TextTertiary.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xB8", - "green": "0xA3", - "red": "0x94" + "blue": "0x94", + "green": "0x93", + "red": "0x87" } }, "idiom": "universal" diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json index 4719f2c8..cf1f2c2c 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/Warning.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0x4D", - "green": "0xD3", - "red": "0xFC" + "blue": "0x24", + "green": "0xBF", + "red": "0xFB" } }, "idiom": "universal" From 31322dcc4598b22d71f1bdbfe8684b6a3ee30277 Mon Sep 17 00:00:00 2001 From: opficdev Date: Wed, 9 Sep 2026 16:52:50 +0900 Subject: [PATCH 4/5] =?UTF-8?q?ui:=20=ED=94=BC=EA=B7=B8=EB=A7=88=20?= =?UTF-8?q?=EA=B8=B0=EB=B0=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Resource/Localizable.xcstrings | 72 ++++++++++++++----- .../Common/Component/LoginButton.swift | 44 ++++++------ .../Entry/Sources/Login/LoginView.swift | 24 +++++-- .../Entry/Sources/Root/RootView.swift | 2 +- 4 files changed, 96 insertions(+), 46 deletions(-) diff --git a/Application/App/Sources/Resource/Localizable.xcstrings b/Application/App/Sources/Resource/Localizable.xcstrings index bab80bd9..99ce4437 100644 --- a/Application/App/Sources/Resource/Localizable.xcstrings +++ b/Application/App/Sources/Resource/Localizable.xcstrings @@ -641,6 +641,40 @@ } } }, + "login_intro_description" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Set goals and manage implementation records and todos in one place." + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "목표를 세우고 구현 기록과 Todo를 한곳에서 관리하세요." + } + } + } + }, + "login_intro_title" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Document Your Development Journey" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "개발 과정을 기록하세요" + } + } + } + }, "login_terms_notice" : { "extractionState" : "manual", "localizations" : { @@ -1644,104 +1678,104 @@ } } }, - "search_instruction" : { + "search_hash_guide_message" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Enter a search term to find your saved content." + "value" : "Type like #123 to find that Todo directly." } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "검색어를 입력해 저장한 앱 컨텐츠를 찾아보세요." + "value" : "#123처럼 입력하면 해당 Todo를 바로 찾을 수 있습니다." } } } }, - "search_prompt" : { + "search_hash_guide_title" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Search (e.g. #123)" + "value" : "Enter a Todo number" } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "검색 (예: #123)" + "value" : "Todo 번호를 입력해주세요" } } } }, - "search_recent" : { + "search_instruction" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Recent Searches" + "value" : "Enter a search term to find your saved content." } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "최근 검색" + "value" : "검색어를 입력해 저장한 앱 컨텐츠를 찾아보세요." } } } }, - "search_show_more" : { + "search_prompt" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Show More" + "value" : "Search (e.g. #123)" } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "더보기" + "value" : "검색 (예: #123)" } } } }, - "search_hash_guide_message" : { + "search_recent" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Type like #123 to find that Todo directly." + "value" : "Recent Searches" } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "#123처럼 입력하면 해당 Todo를 바로 찾을 수 있습니다." + "value" : "최근 검색" } } } }, - "search_hash_guide_title" : { + "search_show_more" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Enter a Todo number" + "value" : "Show More" } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Todo 번호를 입력해주세요" + "value" : "더보기" } } } @@ -3619,4 +3653,4 @@ } }, "version" : "1.0" -} +} \ No newline at end of file diff --git a/Application/Presentation/Entry/Sources/Common/Component/LoginButton.swift b/Application/Presentation/Entry/Sources/Common/Component/LoginButton.swift index d393b60f..2f54e825 100644 --- a/Application/Presentation/Entry/Sources/Common/Component/LoginButton.swift +++ b/Application/Presentation/Entry/Sources/Common/Component/LoginButton.swift @@ -8,9 +8,9 @@ import SwiftUI struct LoginButton: View { - @State private var logo: Image? - @State private var text = "" @ScaledMetric(relativeTo: .body) private var height = CGFloat(22) + private var logo: Image? + private var text = "" private let showsProgressView: Bool private let action: () -> Void @@ -20,8 +20,8 @@ struct LoginButton: View { showsProgressView: Bool = false, action: @escaping () -> Void = {} ) { - self._logo = State(initialValue: logo) - self._text = State(initialValue: text) + self.logo = logo + self.text = text self.showsProgressView = showsProgressView self.action = action } @@ -30,28 +30,30 @@ struct LoginButton: View { Button { action() } label: { - ZStack { - Text(text) - .opacity(showsProgressView ? 0 : 1) + Group { if showsProgressView { ProgressView() + .tint(Color(asset: .accentColor)) + } else { + Text(text) + .foregroundStyle(Color(asset: .textPrimary)) } } - .foregroundStyle(Color.primary) .font(.system(.body)) - .contentShape(.capsule) - .frame(width: 300, height: height + 16) - .overlay { - ZStack(alignment: .leading) { - Capsule() - .stroke(Color.gray, lineWidth: 1) - if let logo, !showsProgressView { - logo - .resizable() - .scaledToFit() - .frame(width: height, height: height) - .padding(.leading) - } + .contentShape(.rect(cornerRadius: 12)) + .frame(width: 300, height: height + 24) + .background { + RoundedRectangle(cornerRadius: 12) + .stroke(Color(asset: .border), lineWidth: 3) + .fill(Color(asset: .surface)) + } + .overlay(alignment: .leading) { + if let logo, !showsProgressView { + logo + .resizable() + .scaledToFit() + .frame(width: height, height: height) + .padding(.leading) } } } diff --git a/Application/Presentation/Entry/Sources/Login/LoginView.swift b/Application/Presentation/Entry/Sources/Login/LoginView.swift index 49a0e46a..b4309041 100644 --- a/Application/Presentation/Entry/Sources/Login/LoginView.swift +++ b/Application/Presentation/Entry/Sources/Login/LoginView.swift @@ -26,27 +26,41 @@ struct LoginView: View { var body: some View { VStack { Spacer() - Image("Primary") + Spacer() + Image("Primary", bundle: PresentationResources.bundle) .resizable() .scaledToFit() - .frame(width: sceneWidth / 5) + .frame(width: sceneWidth / 4) Spacer() + + VStack(spacing: 24) { + Text(String(localized: "login_intro_title")) + .font(.title) + .fontWeight(.heavy) + .multilineTextAlignment(.center) + Text(String(localized: "login_intro_description")) + .padding(.horizontal) + .foregroundStyle(Color(asset: .textTertiary)) + .multilineTextAlignment(.center) + } + Spacer() + VStack(spacing: 20) { signInButton( provider: .google, - logo: Image("Google"), + logo: Image("Google", bundle: PresentationResources.bundle), text: String(localized: "login_google_sign_in") ) signInButton( provider: .github, - logo: Image("Github"), + logo: Image("Github", bundle: PresentationResources.bundle), text: String(localized: "login_github_sign_in") ) signInButton( provider: .apple, - logo: Image("Apple"), + logo: Image("Apple", bundle: PresentationResources.bundle), text: String(localized: "login_apple_sign_in") ) } diff --git a/Application/Presentation/Entry/Sources/Root/RootView.swift b/Application/Presentation/Entry/Sources/Root/RootView.swift index b162c51f..16e3d3ae 100644 --- a/Application/Presentation/Entry/Sources/Root/RootView.swift +++ b/Application/Presentation/Entry/Sources/Root/RootView.swift @@ -33,7 +33,7 @@ public struct RootView: View { public var body: some View { ZStack { - Color(UIColor.systemGroupedBackground).ignoresSafeArea() + Color(asset: .appBackground).ignoresSafeArea() if let signIn = store.signIn { if signIn { MainView( From 4ceadde878af9e87b4411e423ed02c0bec00b3b3 Mon Sep 17 00:00:00 2001 From: opficdev Date: Wed, 9 Sep 2026 17:04:30 +0900 Subject: [PATCH 5/5] =?UTF-8?q?ui:=20=EC=83=89=20=EC=9D=BC=EB=B6=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets.xcassets/PrimaryContainer.colorset/Contents.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json index f13f0ce1..be688072 100644 --- a/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json +++ b/Application/Presentation/PresentationShared/Resources/Assets.xcassets/PrimaryContainer.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space": "srgb", "components": { "alpha": "1.000", - "blue": "0xA6", - "green": "0xA0", - "red": "0x1E" + "blue": "0x39", + "green": "0x37", + "red": "0x00" } }, "idiom": "universal"