diff --git a/Projects/DVDesign/Resources/.gitkeep b/Projects/DVDesign/Resources/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Projects/DVDesign/Resources/Assets.xcassets/Color.colorset/Contents.json b/Projects/DVDesign/Resources/Assets.xcassets/Color.colorset/Contents.json new file mode 100644 index 0000000..951b907 --- /dev/null +++ b/Projects/DVDesign/Resources/Assets.xcassets/Color.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFE" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFE" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DVDesign/Resources/Assets.xcassets/Contents.json b/Projects/DVDesign/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Projects/DVDesign/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DVDesign/SampleApp/Sources/ContentView.swift b/Projects/DVDesign/SampleApp/Sources/ContentView.swift index f3050c1..1949a8f 100644 --- a/Projects/DVDesign/SampleApp/Sources/ContentView.swift +++ b/Projects/DVDesign/SampleApp/Sources/ContentView.swift @@ -2,8 +2,86 @@ import SwiftUI struct ContentView: View { var body: some View { - Text("DVDesign Sample") - .font(.largeTitle) - .frame(width: 400, height: 300) + NavigationSplitView { + List(ComponentSection.allCases, id: \.self) { section in + Section(section.title) { + ForEach(section.components, id: \.self) { component in + NavigationLink(component.name) { + ComponentPlaceholderView(name: component.name, owner: component.owner) + } + } + } + } + .navigationTitle("DVDesign") + } detail: { + Text("컴포넌트를 선택하세요") + .foregroundStyle(.secondary) + } + .frame(minWidth: 700, minHeight: 500) + } +} + +// MARK: - Placeholder Detail + +private struct ComponentPlaceholderView: View { + let name: String + let owner: String + + var body: some View { + VStack(spacing: 12) { + Text(name) + .font(.title2) + .fontWeight(.semibold) + Text("담당: \(owner)") + .font(.subheadline) + .foregroundStyle(.secondary) + Text("🚧 구현 예정") + .font(.caption) + .foregroundStyle(.tertiary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .navigationTitle(name) + } +} + +// MARK: - Data + +private struct Component: Hashable { + let name: String + let owner: String +} + +private enum ComponentSection: CaseIterable { + case yeseong + case doyeon + + var title: String { + switch self { + case .yeseong: return "예성" + case .doyeon: return "도연" + } + } + + var components: [Component] { + switch self { + case .yeseong: + return [ + Component(name: "DVPageControl", owner: "예성"), + Component(name: "DVProjectContainer", owner: "예성"), + Component(name: "DVVaultContainer", owner: "예성"), + Component(name: "DVCategory", owner: "예성"), + Component(name: "DVButton", owner: "예성"), + Component(name: "DVCheckBox", owner: "예성"), + ] + case .doyeon: + return [ + Component(name: "DVRadioButton", owner: "도연"), + Component(name: "DVRadioButtonGroup", owner: "도연"), + Component(name: "DVTextContainer", owner: "도연"), + Component(name: "DVTextField", owner: "도연"), + Component(name: "DVInputField", owner: "도연"), + Component(name: "DVDropDown", owner: "도연"), + ] + } } } diff --git a/Projects/DVDesign/Sources/.gitkeep b/Projects/DVDesign/Sources/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Projects/DVDesign/Sources/Components/PlaceholderA.swift b/Projects/DVDesign/Sources/Components/PlaceholderA.swift new file mode 100644 index 0000000..9d382f5 --- /dev/null +++ b/Projects/DVDesign/Sources/Components/PlaceholderA.swift @@ -0,0 +1,18 @@ +// This file exists to ensure the directory is tracked by Xcode. +/// 1 컴포넌트가 1파일만 필요한 경우 -> 파일만 +/// 1 컴포넌트에 여러 파일이 필요한 경우 -> 폴더 하위로 +/// yeseong +/// DVPageControl +/// DVProjectContainer - +/// DVVaultContainer - +/// DVCategory - +/// DVButton +/// DVCheckBox +/// +/// doyeon +/// DVRadioButton - +/// DVRadioButtonGroup - +/// DVTextContainer - +/// DVTextField +/// DVInputField +/// DVDropDown diff --git a/Projects/DVDesign/Sources/Extensions/PlaceholderB.swift b/Projects/DVDesign/Sources/Extensions/PlaceholderB.swift new file mode 100644 index 0000000..f2ef082 --- /dev/null +++ b/Projects/DVDesign/Sources/Extensions/PlaceholderB.swift @@ -0,0 +1 @@ +// This file exists to ensure the directory is tracked by Xcode. diff --git a/Projects/DVDesign/Sources/Foundations/PlaceholderC.swift b/Projects/DVDesign/Sources/Foundations/PlaceholderC.swift new file mode 100644 index 0000000..f2ef082 --- /dev/null +++ b/Projects/DVDesign/Sources/Foundations/PlaceholderC.swift @@ -0,0 +1 @@ +// This file exists to ensure the directory is tracked by Xcode.