diff --git a/Website/trySwiftTokyo.xcworkspace/contents.xcworkspacedata b/Website/trySwiftTokyo.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c683b56 --- /dev/null +++ b/Website/trySwiftTokyo.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Website/trySwiftTokyo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Website/trySwiftTokyo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Website/trySwiftTokyo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Website/trySwiftTokyo.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Website/trySwiftTokyo.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..a571e09 --- /dev/null +++ b/Website/trySwiftTokyo.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,41 @@ +{ + "pins" : [ + { + "identity" : "ignite", + "kind" : "remoteSourceControl", + "location" : "https://github.com/twostraws/Ignite", + "state" : { + "branch" : "main", + "revision" : "5941faccd2e4d662b417c85097f27a7ae3cf93ba" + } + }, + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser.git", + "state" : { + "revision" : "41982a3656a71c768319979febd796c6fd111d5c", + "version" : "1.5.0" + } + }, + { + "identity" : "swift-cmark", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-cmark.git", + "state" : { + "branch" : "gfm", + "revision" : "b022b08312decdc46585e0b3440d97f6f22ef703" + } + }, + { + "identity" : "swift-markdown", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-markdown.git", + "state" : { + "branch" : "main", + "revision" : "2c126ce9fa33fc8b48258ee27ab51b33989161a3" + } + } + ], + "version" : 2 +} diff --git a/Website/trySwiftTokyo/Assets/images/riko_tokyo.svg b/Website/trySwiftTokyo/Assets/images/riko_tokyo.svg new file mode 100644 index 0000000..e6f313b --- /dev/null +++ b/Website/trySwiftTokyo/Assets/images/riko_tokyo.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Website/trySwiftTokyo/Package.swift b/Website/trySwiftTokyo/Package.swift new file mode 100644 index 0000000..84a0e25 --- /dev/null +++ b/Website/trySwiftTokyo/Package.swift @@ -0,0 +1,18 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "trySwiftTokyo", + platforms: [.macOS(.v13)], + dependencies: [ + .package(url: "https://github.com/twostraws/Ignite", branch: "main") + ], + targets: [ + .executableTarget( + name: "trySwiftTokyo", + dependencies: ["Ignite"] + ), + ] +) diff --git a/Website/trySwiftTokyo/Sources/Component/MainFooter.swift b/Website/trySwiftTokyo/Sources/Component/MainFooter.swift new file mode 100644 index 0000000..e125a69 --- /dev/null +++ b/Website/trySwiftTokyo/Sources/Component/MainFooter.swift @@ -0,0 +1,22 @@ +import Foundation +import Ignite + +struct MainFooter: Component { + func body(context: PublishingContext) -> [any PageElement] { + Column { + Text { + Link("行動規範", target: URL("https://tryswift.jp/code-of-conduct")) + .margin(.trailing, .small) + Link("プライバシーポリシー", target: URL("https://tryswift.jp/privacy-policy")) + } + .font(.body) + .fontWeight(.semibold) + .horizontalAlignment(.center) + + Text("© 2016 try! Swift Tokyo") + .font(.body) + .fontWeight(.light) + .horizontalAlignment(.center) + } + } +} diff --git a/Website/trySwiftTokyo/Sources/ConferenceWebsite.swift b/Website/trySwiftTokyo/Sources/ConferenceWebsite.swift new file mode 100644 index 0000000..a9541d6 --- /dev/null +++ b/Website/trySwiftTokyo/Sources/ConferenceWebsite.swift @@ -0,0 +1,23 @@ +import Foundation +import Ignite + +@main +struct ConferenceWebsite { + static func main() async { + let site = ConferenceSite2025() + + do { + try await site.publish() + } catch { + print(error.localizedDescription) + } + } +} + +struct ConferenceSite2025: Site { + var name = "try! Swift Tokyo" + var url = URL("https://tryswift.jp") + + var homePage = Home() + var theme = MainTheme() +} diff --git a/Website/trySwiftTokyo/Sources/Pages/Home.swift b/Website/trySwiftTokyo/Sources/Pages/Home.swift new file mode 100644 index 0000000..b2e6879 --- /dev/null +++ b/Website/trySwiftTokyo/Sources/Pages/Home.swift @@ -0,0 +1,20 @@ +import Foundation +import Ignite + +struct Home: StaticPage { + var title = "try! Swift Tokyo 2025" + + func body(context: PublishingContext) -> [BlockElement] { + Text(title) + .font(.title1) + + Section { + Image("/images/riko_tokyo.svg", description: "Riko at Tokyo") + .resizable() + .frame(maxWidth: 250) + .padding() + } + .horizontalAlignment(.center) + .margin(.bottom, .extraLarge) + } +} diff --git a/Website/trySwiftTokyo/Sources/Themes/MainTheme.swift b/Website/trySwiftTokyo/Sources/Themes/MainTheme.swift new file mode 100644 index 0000000..830e5b3 --- /dev/null +++ b/Website/trySwiftTokyo/Sources/Themes/MainTheme.swift @@ -0,0 +1,16 @@ +import Foundation +import Ignite + +struct MainTheme: Theme { + func render(page: Page, context: PublishingContext) -> HTML { + HTML { + Head(for: page, in: context) + + Body { + page.body + + MainFooter() + } + } + } +}