Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
Original file line number Diff line number Diff line change
@@ -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
}
}
6 changes: 6 additions & 0 deletions Projects/DVDesign/Resources/Assets.xcassets/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
84 changes: 81 additions & 3 deletions Projects/DVDesign/SampleApp/Sources/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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: "도연"),
]
}
}
}
Empty file removed Projects/DVDesign/Sources/.gitkeep
Empty file.
18 changes: 18 additions & 0 deletions Projects/DVDesign/Sources/Components/PlaceholderA.swift
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions Projects/DVDesign/Sources/Extensions/PlaceholderB.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// This file exists to ensure the directory is tracked by Xcode.
1 change: 1 addition & 0 deletions Projects/DVDesign/Sources/Foundations/PlaceholderC.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// This file exists to ensure the directory is tracked by Xcode.