diff --git a/Packages/AtlasDomain/Sources/AtlasDomain/AtlasDomain.swift b/Packages/AtlasDomain/Sources/AtlasDomain/AtlasDomain.swift index 45b846d..bd03f89 100644 --- a/Packages/AtlasDomain/Sources/AtlasDomain/AtlasDomain.swift +++ b/Packages/AtlasDomain/Sources/AtlasDomain/AtlasDomain.swift @@ -11,6 +11,57 @@ public enum AtlasRoute: String, CaseIterable, Codable, Hashable, Identifiable, S public var id: String { rawValue } + // MARK: - Sidebar + + public enum SidebarSection: String, CaseIterable, Identifiable, Sendable { + case core + case manage + + public var id: String { rawValue } + + public var title: String { + switch self { + case .core: + return AtlasL10n.string("sidebar.section.core") + case .manage: + return AtlasL10n.string("sidebar.section.manage") + } + } + + public var routes: [AtlasRoute] { + switch self { + case .core: + return [.overview, .smartClean, .apps] + case .manage: + return [.history, .permissions] + } + } + } + + public var isSidebarRoute: Bool { + switch self { + case .settings, .about: + return false + default: + return true + } + } + + public static var sidebarRoutes: [AtlasRoute] { + allCases.filter(\.isSidebarRoute) + } + + public var sidebarSection: SidebarSection? { + switch self { + case .overview, .smartClean, .apps: + return .core + case .history, .permissions: + return .manage + case .settings, .about: + return nil + } + } + public var title: String { switch self { case .overview: diff --git a/Packages/AtlasDomain/Sources/AtlasDomain/Resources/en.lproj/Localizable.strings b/Packages/AtlasDomain/Sources/AtlasDomain/Resources/en.lproj/Localizable.strings index 3b8b168..65c38a1 100644 --- a/Packages/AtlasDomain/Sources/AtlasDomain/Resources/en.lproj/Localizable.strings +++ b/Packages/AtlasDomain/Sources/AtlasDomain/Resources/en.lproj/Localizable.strings @@ -602,3 +602,8 @@ "about.social.discord" = "Discord"; "smartclean.preview.callout.review.title" = "Some steps in this plan need a closer review"; + +"sidebar.section.core" = "Core"; +"sidebar.section.manage" = "Manage"; +"about.window.title" = "About Atlas"; +"commands.about" = "About Atlas"; diff --git a/Packages/AtlasDomain/Sources/AtlasDomain/Resources/zh-Hans.lproj/Localizable.strings b/Packages/AtlasDomain/Sources/AtlasDomain/Resources/zh-Hans.lproj/Localizable.strings index 3003e7b..03d28f4 100644 --- a/Packages/AtlasDomain/Sources/AtlasDomain/Resources/zh-Hans.lproj/Localizable.strings +++ b/Packages/AtlasDomain/Sources/AtlasDomain/Resources/zh-Hans.lproj/Localizable.strings @@ -602,3 +602,8 @@ "about.social.discord" = "Discord"; "smartclean.preview.callout.review.title" = "这份计划中仍有步骤需要复核"; + +"sidebar.section.core" = "核心"; +"sidebar.section.manage" = "管理"; +"about.window.title" = "关于 Atlas"; +"commands.about" = "关于 Atlas";