Move Compound Inspector into the project.
This commit is contained in:
23
compound-ios/.gitignore
vendored
Normal file
23
compound-ios/.gitignore
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
/.build
|
||||
/Packages
|
||||
/*.xcodeproj
|
||||
xcuserdata/
|
||||
DerivedData/
|
||||
.swiftpm/config/registries.json
|
||||
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
|
||||
.netrc
|
||||
.nova
|
||||
node_modules
|
||||
|
||||
# Cocoapods in Inspector app
|
||||
Inspector/Pods
|
||||
|
||||
# Ridiculous workaround to unignore the Package.resolved file to keep Xcode Cloud happy.
|
||||
# https://stackoverflow.com/a/16318111/730924
|
||||
Inspector/Inspector.xcworkspace/*
|
||||
!Inspector/Inspector.xcworkspace/xcshareddata
|
||||
Inspector/Inspector.xcworkspace/xcshareddata/*
|
||||
!Inspector/Inspector.xcworkspace/xcshareddata/swiftpm
|
||||
Inspector/Inspector.xcworkspace/xcshareddata/swiftpm/*
|
||||
!Inspector/Inspector.xcworkspace/xcshareddata/swiftpm/Package.resolved
|
||||
534
compound-ios/Inspector/Inspector.xcodeproj/project.pbxproj
Normal file
534
compound-ios/Inspector/Inspector.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,534 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
70AC7B23011C802F750E470E /* Pods_Compound_Inspector.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2E28F45EEA9A8DE6AFB10E9 /* Pods_Compound_Inspector.framework */; };
|
||||
912974102A864F5E004BEA88 /* ListScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9129740F2A864F5E004BEA88 /* ListScreen.swift */; };
|
||||
9132C62D2A72708400EAEF3D /* ActionSheetScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9132C62C2A72708400EAEF3D /* ActionSheetScreen.swift */; };
|
||||
9132C62F2A72785500EAEF3D /* AlertScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9132C62E2A72785400EAEF3D /* AlertScreen.swift */; };
|
||||
9132C6312A7280A500EAEF3D /* ContextMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9132C6302A7280A500EAEF3D /* ContextMenuScreen.swift */; };
|
||||
9132C6332A72850200EAEF3D /* ShareSheetScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9132C6322A72850200EAEF3D /* ShareSheetScreen.swift */; };
|
||||
9132C6352A72868B00EAEF3D /* NavigationBarScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9132C6342A72868B00EAEF3D /* NavigationBarScreen.swift */; };
|
||||
917C22F629C37A9D00B35660 /* AllCases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917C22F529C37A9D00B35660 /* AllCases.swift */; };
|
||||
917C22F829C380A200B35660 /* FontsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917C22F729C380A200B35660 /* FontsScreen.swift */; };
|
||||
917F561C28256DB800D19543 /* CompoundInspectorApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917F561B28256DB800D19543 /* CompoundInspectorApp.swift */; };
|
||||
917F562028256DB900D19543 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 917F561F28256DB900D19543 /* Assets.xcassets */; };
|
||||
917F562F28256DD800D19543 /* SidebarList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917F562E28256DD800D19543 /* SidebarList.swift */; };
|
||||
9184AC022825741600227C3A /* ScreenContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9184AC012825741600227C3A /* ScreenContent.swift */; };
|
||||
9188246A2A2DE882001606AE /* Screen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918824692A2DE882001606AE /* Screen.swift */; };
|
||||
91B2EA9928CA05B900A90A83 /* Compound in Frameworks */ = {isa = PBXBuildFile; productRef = 91B2EA9828CA05B900A90A83 /* Compound */; };
|
||||
91B2EA9C28CA064800A90A83 /* ColorsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B2EA9B28CA064800A90A83 /* ColorsScreen.swift */; };
|
||||
91B946812A29062300F187EF /* IconsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B946802A29062300F187EF /* IconsScreen.swift */; };
|
||||
91CA00362AD7D83200121E0F /* ButtonsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917F562A28256DCD00D19543 /* ButtonsScreen.swift */; };
|
||||
91DE5A702E1801970000C59A /* GradientsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91DE5A6F2E1801970000C59A /* GradientsScreen.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
918854B628258CE100DC2377 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
9129740F2A864F5E004BEA88 /* ListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListScreen.swift; sourceTree = "<group>"; };
|
||||
9132C62C2A72708400EAEF3D /* ActionSheetScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionSheetScreen.swift; sourceTree = "<group>"; };
|
||||
9132C62E2A72785400EAEF3D /* AlertScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertScreen.swift; sourceTree = "<group>"; };
|
||||
9132C6302A7280A500EAEF3D /* ContextMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuScreen.swift; sourceTree = "<group>"; };
|
||||
9132C6322A72850200EAEF3D /* ShareSheetScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheetScreen.swift; sourceTree = "<group>"; };
|
||||
9132C6342A72868B00EAEF3D /* NavigationBarScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarScreen.swift; sourceTree = "<group>"; };
|
||||
9139E78228257ECF00091740 /* Entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Entitlements.entitlements; sourceTree = "<group>"; };
|
||||
917C22F529C37A9D00B35660 /* AllCases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllCases.swift; sourceTree = "<group>"; };
|
||||
917C22F729C380A200B35660 /* FontsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontsScreen.swift; sourceTree = "<group>"; };
|
||||
917F561828256DB800D19543 /* Compound Inspector.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Compound Inspector.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
917F561B28256DB800D19543 /* CompoundInspectorApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompoundInspectorApp.swift; sourceTree = "<group>"; };
|
||||
917F561F28256DB900D19543 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
917F562A28256DCD00D19543 /* ButtonsScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonsScreen.swift; sourceTree = "<group>"; };
|
||||
917F562E28256DD800D19543 /* SidebarList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SidebarList.swift; sourceTree = "<group>"; };
|
||||
917F563028256DDC00D19543 /* TextFieldsScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldsScreen.swift; sourceTree = "<group>"; };
|
||||
9184AC012825741600227C3A /* ScreenContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScreenContent.swift; sourceTree = "<group>"; };
|
||||
918824692A2DE882001606AE /* Screen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Screen.swift; sourceTree = "<group>"; };
|
||||
91AB476A2A0E774E00D961AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
91B2EA9728CA048200A90A83 /* compound-ios */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "compound-ios"; path = ..; sourceTree = "<group>"; };
|
||||
91B2EA9B28CA064800A90A83 /* ColorsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorsScreen.swift; sourceTree = "<group>"; };
|
||||
91B946802A29062300F187EF /* IconsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsScreen.swift; sourceTree = "<group>"; };
|
||||
91DE5A6F2E1801970000C59A /* GradientsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientsScreen.swift; sourceTree = "<group>"; };
|
||||
9F9AF07976782861ECA2764C /* Pods-Compound Inspector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Compound Inspector.release.xcconfig"; path = "Target Support Files/Pods-Compound Inspector/Pods-Compound Inspector.release.xcconfig"; sourceTree = "<group>"; };
|
||||
B62609A3377EA1D9C59FCD20 /* Pods-Compound Inspector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Compound Inspector.debug.xcconfig"; path = "Target Support Files/Pods-Compound Inspector/Pods-Compound Inspector.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
D2E28F45EEA9A8DE6AFB10E9 /* Pods_Compound_Inspector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Compound_Inspector.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
917F561528256DB800D19543 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
91B2EA9928CA05B900A90A83 /* Compound in Frameworks */,
|
||||
70AC7B23011C802F750E470E /* Pods_Compound_Inspector.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
479BE2D4B06E029EC43A69EA /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B62609A3377EA1D9C59FCD20 /* Pods-Compound Inspector.debug.xcconfig */,
|
||||
9F9AF07976782861ECA2764C /* Pods-Compound Inspector.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9132C62B2A72707500EAEF3D /* System Components */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9132C62C2A72708400EAEF3D /* ActionSheetScreen.swift */,
|
||||
9132C62E2A72785400EAEF3D /* AlertScreen.swift */,
|
||||
9132C6302A7280A500EAEF3D /* ContextMenuScreen.swift */,
|
||||
9132C6342A72868B00EAEF3D /* NavigationBarScreen.swift */,
|
||||
9132C6322A72850200EAEF3D /* ShareSheetScreen.swift */,
|
||||
);
|
||||
path = "System Components";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9145A25028CCACF7001B3451 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
91AB476A2A0E774E00D961AE /* Info.plist */,
|
||||
917F561F28256DB900D19543 /* Assets.xcassets */,
|
||||
9139E78228257ECF00091740 /* Entitlements.entitlements */,
|
||||
);
|
||||
path = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9145A25128CCAD08001B3451 /* Tokens */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
917C22F529C37A9D00B35660 /* AllCases.swift */,
|
||||
91B2EA9B28CA064800A90A83 /* ColorsScreen.swift */,
|
||||
917C22F729C380A200B35660 /* FontsScreen.swift */,
|
||||
91B946802A29062300F187EF /* IconsScreen.swift */,
|
||||
91DE5A6F2E1801970000C59A /* GradientsScreen.swift */,
|
||||
);
|
||||
path = Tokens;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
917F560F28256DB800D19543 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
917F561A28256DB800D19543 /* Sources */,
|
||||
9145A25028CCACF7001B3451 /* Resources */,
|
||||
91B2EA9728CA048200A90A83 /* compound-ios */,
|
||||
918854C42825941400DC2377 /* Frameworks */,
|
||||
917F561928256DB800D19543 /* Products */,
|
||||
479BE2D4B06E029EC43A69EA /* Pods */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
917F561928256DB800D19543 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
917F561828256DB800D19543 /* Compound Inspector.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
917F561A28256DB800D19543 /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
917F561B28256DB800D19543 /* CompoundInspectorApp.swift */,
|
||||
917F562E28256DD800D19543 /* SidebarList.swift */,
|
||||
918824692A2DE882001606AE /* Screen.swift */,
|
||||
9184AC012825741600227C3A /* ScreenContent.swift */,
|
||||
9145A25128CCAD08001B3451 /* Tokens */,
|
||||
91B2EA9A28CA05F300A90A83 /* Components */,
|
||||
9132C62B2A72707500EAEF3D /* System Components */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
918854C42825941400DC2377 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D2E28F45EEA9A8DE6AFB10E9 /* Pods_Compound_Inspector.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
91B2EA9A28CA05F300A90A83 /* Components */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
917F562A28256DCD00D19543 /* ButtonsScreen.swift */,
|
||||
9129740F2A864F5E004BEA88 /* ListScreen.swift */,
|
||||
917F563028256DDC00D19543 /* TextFieldsScreen.swift */,
|
||||
);
|
||||
path = Components;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
917F561728256DB800D19543 /* Compound Inspector */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 917F562628256DB900D19543 /* Build configuration list for PBXNativeTarget "Compound Inspector" */;
|
||||
buildPhases = (
|
||||
D4FE755DC8D0EE69F5B625AE /* [CP] Check Pods Manifest.lock */,
|
||||
917F561428256DB800D19543 /* Sources */,
|
||||
917F561528256DB800D19543 /* Frameworks */,
|
||||
917F561628256DB800D19543 /* Resources */,
|
||||
918854B628258CE100DC2377 /* Embed Frameworks */,
|
||||
C53AB9B0B1E0708816C8E056 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Compound Inspector";
|
||||
packageProductDependencies = (
|
||||
91B2EA9828CA05B900A90A83 /* Compound */,
|
||||
);
|
||||
productName = "Component Library";
|
||||
productReference = 917F561828256DB800D19543 /* Compound Inspector.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
917F561028256DB800D19543 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastSwiftUpdateCheck = 1330;
|
||||
LastUpgradeCheck = 1330;
|
||||
TargetAttributes = {
|
||||
917F561728256DB800D19543 = {
|
||||
CreatedOnToolsVersion = 13.3;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 917F561328256DB800D19543 /* Build configuration list for PBXProject "Inspector" */;
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 917F560F28256DB800D19543;
|
||||
productRefGroup = 917F561928256DB800D19543 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
917F561728256DB800D19543 /* Compound Inspector */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
917F561628256DB800D19543 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
917F562028256DB900D19543 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
C53AB9B0B1E0708816C8E056 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Compound Inspector/Pods-Compound Inspector-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Compound Inspector/Pods-Compound Inspector-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Compound Inspector/Pods-Compound Inspector-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
D4FE755DC8D0EE69F5B625AE /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Compound Inspector-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
917F561428256DB800D19543 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
91B946812A29062300F187EF /* IconsScreen.swift in Sources */,
|
||||
9132C6352A72868B00EAEF3D /* NavigationBarScreen.swift in Sources */,
|
||||
917F562F28256DD800D19543 /* SidebarList.swift in Sources */,
|
||||
91DE5A702E1801970000C59A /* GradientsScreen.swift in Sources */,
|
||||
917C22F629C37A9D00B35660 /* AllCases.swift in Sources */,
|
||||
9132C62D2A72708400EAEF3D /* ActionSheetScreen.swift in Sources */,
|
||||
917F561C28256DB800D19543 /* CompoundInspectorApp.swift in Sources */,
|
||||
9132C6332A72850200EAEF3D /* ShareSheetScreen.swift in Sources */,
|
||||
917C22F829C380A200B35660 /* FontsScreen.swift in Sources */,
|
||||
9188246A2A2DE882001606AE /* Screen.swift in Sources */,
|
||||
9184AC022825741600227C3A /* ScreenContent.swift in Sources */,
|
||||
912974102A864F5E004BEA88 /* ListScreen.swift in Sources */,
|
||||
9132C6312A7280A500EAEF3D /* ContextMenuScreen.swift in Sources */,
|
||||
9132C62F2A72785500EAEF3D /* AlertScreen.swift in Sources */,
|
||||
91CA00362AD7D83200121E0F /* ButtonsScreen.swift in Sources */,
|
||||
91B2EA9C28CA064800A90A83 /* ColorsScreen.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
917F562428256DB900D19543 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
917F562528256DB900D19543 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
917F562728256DB900D19543 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = B62609A3377EA1D9C59FCD20 /* Pods-Compound Inspector.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "accent-color";
|
||||
CODE_SIGN_ENTITLEMENTS = Resources/Entitlements.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_TEAM = 7J4U792NQT;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = Resources/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Compound;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.graphics-design";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.element.compound.inspector;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTS_MACCATALYST = YES;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
917F562828256DB900D19543 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9F9AF07976782861ECA2764C /* Pods-Compound Inspector.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "accent-color";
|
||||
CODE_SIGN_ENTITLEMENTS = Resources/Entitlements.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_TEAM = 7J4U792NQT;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = Resources/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Compound;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.graphics-design";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.element.compound.inspector;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTS_MACCATALYST = YES;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
917F561328256DB800D19543 /* Build configuration list for PBXProject "Inspector" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
917F562428256DB900D19543 /* Debug */,
|
||||
917F562528256DB900D19543 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
917F562628256DB900D19543 /* Build configuration list for PBXNativeTarget "Compound Inspector" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
917F562728256DB900D19543 /* Debug */,
|
||||
917F562828256DB900D19543 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
91B2EA9828CA05B900A90A83 /* Compound */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = Compound;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 917F561028256DB800D19543 /* Project object */;
|
||||
}
|
||||
7
compound-ios/Inspector/Inspector.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
compound-ios/Inspector/Inspector.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "flex",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/FLEXTool/FLEX",
|
||||
"state" : {
|
||||
"revision" : "ac50a6d36b738a15a6d3b6b51683d8a152319f59",
|
||||
"version" : "4.7.0"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// Copyright ___YEAR___ New Vector Ltd
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
// Please see LICENSE in the repository root for full details.
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "compound-design-tokens",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/element-hq/compound-design-tokens.git",
|
||||
"state" : {
|
||||
"revision" : "be5d26dfd4ad659b0d3b3aec1ad1cccd0dc8d063",
|
||||
"version" : "6.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "sfsafesymbols",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/SFSafeSymbols/SFSafeSymbols.git",
|
||||
"state" : {
|
||||
"revision" : "3dd282d3269b061853a3b3bcd23a509d2aa166ce",
|
||||
"version" : "6.2.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-custom-dump",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/pointfreeco/swift-custom-dump",
|
||||
"state" : {
|
||||
"revision" : "82645ec760917961cfa08c9c0c7104a57a0fa4b1",
|
||||
"version" : "1.3.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-snapshot-testing",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/pointfreeco/swift-snapshot-testing",
|
||||
"state" : {
|
||||
"revision" : "1be8144023c367c5de701a6313ed29a3a10bf59b",
|
||||
"version" : "1.18.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swift-syntax",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/swiftlang/swift-syntax",
|
||||
"state" : {
|
||||
"revision" : "74203046135342e4a4a627476dd6caf8b28fe11b",
|
||||
"version" : "509.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swiftui-introspect",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/siteline/SwiftUI-Introspect.git",
|
||||
"state" : {
|
||||
"revision" : "a08b87f96b41055577721a6e397562b21ad52454",
|
||||
"version" : "26.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "xctest-dynamic-overlay",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
|
||||
"state" : {
|
||||
"revision" : "39de59b2d47f7ef3ca88a039dff3084688fe27f4",
|
||||
"version" : "1.5.2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
}
|
||||
8
compound-ios/Inspector/Podfile
Normal file
8
compound-ios/Inspector/Podfile
Normal file
@@ -0,0 +1,8 @@
|
||||
platform :ios, '16.0'
|
||||
|
||||
target 'Compound Inspector' do
|
||||
# Comment the next line if you don't want to use dynamic frameworks
|
||||
use_frameworks!
|
||||
|
||||
pod "HyperioniOS"
|
||||
end
|
||||
27
compound-ios/Inspector/Podfile.lock
Normal file
27
compound-ios/Inspector/Podfile.lock
Normal file
@@ -0,0 +1,27 @@
|
||||
PODS:
|
||||
- HyperioniOS (1.2.0):
|
||||
- HyperioniOS/AttributesInspector (= 1.2.0)
|
||||
- HyperioniOS/Core (= 1.2.0)
|
||||
- HyperioniOS/Measurements (= 1.2.0)
|
||||
- HyperioniOS/SlowAnimations (= 1.2.0)
|
||||
- HyperioniOS/AttributesInspector (1.2.0):
|
||||
- HyperioniOS/Core
|
||||
- HyperioniOS/Core (1.2.0)
|
||||
- HyperioniOS/Measurements (1.2.0):
|
||||
- HyperioniOS/Core
|
||||
- HyperioniOS/SlowAnimations (1.2.0):
|
||||
- HyperioniOS/Core
|
||||
|
||||
DEPENDENCIES:
|
||||
- HyperioniOS
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- HyperioniOS
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
HyperioniOS: 4412ec61a390caadffcaaf3364733b06e103cf63
|
||||
|
||||
PODFILE CHECKSUM: 30e97949fb1de5c74fc24378bbfdbbace5bd8b80
|
||||
|
||||
COCOAPODS: 1.16.2
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "Icon.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 659 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.133",
|
||||
"green" : "0.114",
|
||||
"red" : "0.106"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.949",
|
||||
"green" : "0.933",
|
||||
"red" : "0.922"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "contrast",
|
||||
"value" : "high"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.129",
|
||||
"green" : "0.110",
|
||||
"red" : "0.102"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
},
|
||||
{
|
||||
"appearance" : "contrast",
|
||||
"value" : "high"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.969",
|
||||
"green" : "0.961",
|
||||
"red" : "0.949"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
8
compound-ios/Inspector/Resources/Info.plist
Normal file
8
compound-ios/Inspector/Resources/Info.plist
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import Compound
|
||||
import SwiftUI
|
||||
|
||||
struct ButtonsScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Buttons") {
|
||||
CompoundButtonStyle_Previews.states
|
||||
SendButton_Previews.states
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ButtonsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ButtonsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 700))
|
||||
}
|
||||
}
|
||||
26
compound-ios/Inspector/Sources/Components/ListScreen.swift
Normal file
26
compound-ios/Inspector/Sources/Components/ListScreen.swift
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
import HyperionCore
|
||||
|
||||
struct ListScreen: View {
|
||||
var body: some View {
|
||||
ListRow_Previews.previews
|
||||
.navigationTitle("Lists")
|
||||
}
|
||||
}
|
||||
|
||||
struct ListScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ListScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 700))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import DesignKit
|
||||
|
||||
struct TextFieldsScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Text Fields") {
|
||||
BorderedInputFieldStyle_Previews.states
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct TextFieldsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
TextFieldsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 700))
|
||||
}
|
||||
}
|
||||
87
compound-ios/Inspector/Sources/CompoundInspectorApp.swift
Normal file
87
compound-ios/Inspector/Sources/CompoundInspectorApp.swift
Normal file
@@ -0,0 +1,87 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
import HyperionCore
|
||||
|
||||
@main
|
||||
struct CompoundInspectorApp: App {
|
||||
@State private var colorScheme: ColorScheme = .light
|
||||
@State private var dynamicTypeSize: DynamicTypeSize = .large
|
||||
|
||||
private var isDark: Bool { colorScheme == .dark }
|
||||
private var preferredColorScheme: ColorScheme? { ProcessInfo.processInfo.isMacCatalystApp ? colorScheme : nil }
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
NavigationSplitView {
|
||||
SidebarList()
|
||||
.navigationTitle("Components")
|
||||
.navigationDestination(for: Screen.self) { screen in
|
||||
screen
|
||||
#if targetEnvironment(macCatalyst)
|
||||
.dynamicTypeSize(dynamicTypeSize)
|
||||
#endif
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.toolbar { screenToolbar }
|
||||
}
|
||||
} detail: {
|
||||
EmptyView()
|
||||
}
|
||||
.accentColor(.compound.textActionPrimary)
|
||||
.preferredColorScheme(preferredColorScheme)
|
||||
.introspect(.window, on: .supportedVersions) { window in
|
||||
// Apply the tint colour to alerts and confirmation dialogs
|
||||
window.tintColor = .compound.textActionPrimary
|
||||
}
|
||||
}
|
||||
.commands {
|
||||
CommandMenu("Options") {
|
||||
Button("Hyperion", action: HyperionManager.sharedInstance().togglePluginDrawer)
|
||||
.keyboardShortcut("i", modifiers: [.command, .option])
|
||||
|
||||
Divider()
|
||||
|
||||
Button("Toggle Appearance", action: toggleDarkMode)
|
||||
.keyboardShortcut("a", modifiers: [.command, .shift])
|
||||
|
||||
#if targetEnvironment(macCatalyst)
|
||||
textSizePicker
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var textSizePicker: some View {
|
||||
Picker("Text Size", selection: $dynamicTypeSize) {
|
||||
ForEach(DynamicTypeSize.allCases, id: \.self) { size in
|
||||
Text(String(describing: size)).tag(size)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
var screenToolbar: some View {
|
||||
#if targetEnvironment(macCatalyst)
|
||||
Menu {
|
||||
textSizePicker
|
||||
.pickerStyle(.inline)
|
||||
} label: {
|
||||
Image(systemName: "textformat.size")
|
||||
}
|
||||
#endif
|
||||
|
||||
Button(action: HyperionManager.sharedInstance().togglePluginDrawer) {
|
||||
Image(systemName: "ruler")
|
||||
}
|
||||
}
|
||||
|
||||
func toggleDarkMode() {
|
||||
colorScheme = isDark ? .light : .dark
|
||||
}
|
||||
}
|
||||
63
compound-ios/Inspector/Sources/Screen.swift
Normal file
63
compound-ios/Inspector/Sources/Screen.swift
Normal file
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
/// A screen of components/tokens that can be navigated to.
|
||||
enum Screen: Hashable, View {
|
||||
/// Colour tokens
|
||||
case colors
|
||||
/// Gradients assembled from colour tokens
|
||||
case gradients
|
||||
/// Font tokens
|
||||
case fonts
|
||||
/// Icon tokens
|
||||
case icons
|
||||
/// Size tokens
|
||||
case sizes
|
||||
|
||||
/// List styles and components
|
||||
case list
|
||||
/// Label styles
|
||||
case labels
|
||||
/// Button styles
|
||||
case buttons
|
||||
/// Text field styles.
|
||||
case textFields
|
||||
|
||||
/// The system's confirmation dialog component
|
||||
case actionSheet
|
||||
/// The system's alert component
|
||||
case alert
|
||||
/// The system's context menu component
|
||||
case contextMenu
|
||||
/// The system's navigation bar component
|
||||
case navigationBar
|
||||
/// The system's share sheet component
|
||||
case shareSheet
|
||||
|
||||
var body: some View {
|
||||
switch self {
|
||||
case .colors: ColorsScreen()
|
||||
case .gradients: GradientsScreen()
|
||||
case .fonts: FontsScreen()
|
||||
case .icons: IconsScreen()
|
||||
|
||||
case .list: ListScreen()
|
||||
case .sizes: EmptyView()
|
||||
case .labels: EmptyView()
|
||||
case .buttons: ButtonsScreen()
|
||||
case .textFields: EmptyView()
|
||||
|
||||
case .actionSheet: ActionSheetScreen()
|
||||
case .alert: AlertScreen()
|
||||
case .contextMenu: ContextMenuScreen()
|
||||
case .navigationBar: NavigationBarScreen()
|
||||
case .shareSheet: ShareSheetScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
34
compound-ios/Inspector/Sources/ScreenContent.swift
Normal file
34
compound-ios/Inspector/Sources/ScreenContent.swift
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
/// A helper to provider a default layout for the content of a screen.
|
||||
struct ScreenContent<Content: View>: View {
|
||||
let navigationTitle: String
|
||||
@ViewBuilder var content: () -> Content
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
LazyVStack(spacing: 16) {
|
||||
content()
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
.navigationTitle(navigationTitle)
|
||||
}
|
||||
}
|
||||
|
||||
struct ComponentsContainer_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ScreenContent(navigationTitle: "Buttons") {
|
||||
Button("Confirm") { }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
81
compound-ios/Inspector/Sources/SidebarList.swift
Normal file
81
compound-ios/Inspector/Sources/SidebarList.swift
Normal file
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SidebarList: View {
|
||||
var body: some View {
|
||||
List {
|
||||
tokensSection
|
||||
componentsSection
|
||||
systemComponentsSection
|
||||
}
|
||||
.navigationTitle("Components")
|
||||
.listStyle(.sidebar)
|
||||
.tint(.compound.iconAccentTertiary)
|
||||
}
|
||||
|
||||
var tokensSection: some View {
|
||||
Section("Tokens") {
|
||||
NavigationLink(value: Screen.colors) {
|
||||
Label("Colours", systemImage: "paintpalette")
|
||||
}
|
||||
NavigationLink(value: Screen.gradients) {
|
||||
Label("Gradients", systemImage: "lightspectrum.horizontal")
|
||||
}
|
||||
NavigationLink(value: Screen.fonts) {
|
||||
Label("Typography", systemImage: "character")
|
||||
}
|
||||
NavigationLink(value: Screen.icons) {
|
||||
Label("Icons", systemImage: "pencil.and.outline")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var componentsSection: some View {
|
||||
Section("Components") {
|
||||
NavigationLink(value: Screen.buttons) {
|
||||
Label("Buttons", systemImage: "rectangle.and.hand.point.up.left")
|
||||
}
|
||||
NavigationLink(value: Screen.list) {
|
||||
Label("List", systemImage: "list.bullet.clipboard")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var systemComponentsSection: some View {
|
||||
Section("System Components") {
|
||||
NavigationLink(value: Screen.actionSheet) {
|
||||
Label("Action Sheets", systemImage: "window.shade.closed")
|
||||
}
|
||||
|
||||
NavigationLink(value: Screen.alert) {
|
||||
Label("Alerts", systemImage: "exclamationmark.triangle")
|
||||
}
|
||||
|
||||
NavigationLink(value: Screen.contextMenu) {
|
||||
Label("Context Menus", systemImage: "contextualmenu.and.cursorarrow")
|
||||
}
|
||||
|
||||
NavigationLink(value: Screen.navigationBar) {
|
||||
Label("Navigation Bar", systemImage: "window.shade.open")
|
||||
}
|
||||
|
||||
NavigationLink(value: Screen.shareSheet) {
|
||||
Label("Share Sheet", systemImage: "square.and.arrow.up")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ContentView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
SidebarList()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct ActionSheetScreen: View {
|
||||
@State private var isPresentingConfirmationDialog = true
|
||||
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Action Sheets") {
|
||||
Text("This component will be rendered differently when running on macOS.")
|
||||
.font(.footnote)
|
||||
.foregroundColor(.secondary)
|
||||
.multilineTextAlignment(.center)
|
||||
}
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .bottomBar) {
|
||||
Button("Show Sheet") {
|
||||
isPresentingConfirmationDialog = true
|
||||
}
|
||||
.confirmationDialog("A Short Title is Best",
|
||||
isPresented: $isPresentingConfirmationDialog) {
|
||||
Button("Default") { }
|
||||
Button("Default") { }
|
||||
Button("Default") { }
|
||||
Button("Disabled") { }
|
||||
.disabled(true) // This hides the button on iOS 16 😐
|
||||
Button("Destructive", role: .destructive) { }
|
||||
} message: {
|
||||
Text("A message should be a short, complete sentence.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ActionSheetScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ActionSheetScreen()
|
||||
}
|
||||
.introspect(.window, on: .supportedVersions) { window in
|
||||
// Fix the tint colour like the App strut does.
|
||||
window.tintColor = .compound.textActionPrimary
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct AlertScreen: View {
|
||||
@State private var isPresentingActionAlert = false
|
||||
@State private var isPresentingActionAndCancelAlert = false
|
||||
@State private var isPresentingDestructiveAlert = false
|
||||
@State private var isPresentingTextFieldAlert = false
|
||||
@State private var textFieldValue = ""
|
||||
|
||||
private let title = "A Short Title is Best"
|
||||
private let message = "A message should be a short, complete sentence."
|
||||
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Alerts") {
|
||||
Text("This component will be rendered differently when running on macOS.")
|
||||
.font(.footnote)
|
||||
.foregroundColor(.secondary)
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
Button("Action") { isPresentingActionAlert = true }
|
||||
.padding(.top)
|
||||
.alert(title, isPresented: $isPresentingActionAlert) {
|
||||
Button("Action") { }
|
||||
} message: {
|
||||
Text(message)
|
||||
}
|
||||
|
||||
Button("Action and Cancel") { isPresentingActionAndCancelAlert = true }
|
||||
.padding(.top)
|
||||
.alert(title, isPresented: $isPresentingActionAndCancelAlert) {
|
||||
Button("Action") { }
|
||||
Button("Cancel", role: .cancel) { }
|
||||
} message: {
|
||||
Text(message)
|
||||
}
|
||||
|
||||
Button("Destructive") { isPresentingDestructiveAlert = true }
|
||||
.padding(.top)
|
||||
.alert(title, isPresented: $isPresentingDestructiveAlert) {
|
||||
Button("Action") { }
|
||||
Button("Destructive", role: .destructive) { }
|
||||
Button("Cancel", role: .cancel) { }
|
||||
} message: {
|
||||
Text(message)
|
||||
}
|
||||
|
||||
Button("TextField") { isPresentingTextFieldAlert = true }
|
||||
.padding(.top)
|
||||
.alert(title, isPresented: $isPresentingTextFieldAlert) {
|
||||
TextField("Input", text: $textFieldValue, prompt: Text("Placeholder"))
|
||||
Button("Action") { }
|
||||
Button("Cancel", role: .cancel) { }
|
||||
} message: {
|
||||
Text(message)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct AlertScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
AlertScreen()
|
||||
}
|
||||
.introspect(.window, on: .supportedVersions) { window in
|
||||
// Fix the tint colour like the App strut does.
|
||||
window.tintColor = .compound.textActionPrimary
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct ContextMenuScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Context Menus") {
|
||||
Text("This component will be rendered differently when running on macOS.")
|
||||
.font(.footnote)
|
||||
.foregroundColor(.secondary)
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
Text("Actions")
|
||||
.padding()
|
||||
.contentShape(.contextMenuPreview, RoundedRectangle(cornerRadius: 12))
|
||||
.contextMenu {
|
||||
Section {
|
||||
Button { } label: {
|
||||
Label("Action", systemImage: "square.dashed")
|
||||
}
|
||||
Button { } label: {
|
||||
Label("Action", systemImage: "square.dashed")
|
||||
}
|
||||
Button { } label: {
|
||||
Label("Disabled", systemImage: "square.dashed")
|
||||
}
|
||||
.disabled(true)
|
||||
Button(role: .destructive) { } label: {
|
||||
Label("Destructive", systemImage: "square.dashed")
|
||||
}
|
||||
}
|
||||
Section {
|
||||
Button { } label: {
|
||||
Label("Action", systemImage: "square.dashed")
|
||||
}
|
||||
Button { } label: {
|
||||
Label("Action", systemImage: "square.dashed")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text("Toggles")
|
||||
.padding()
|
||||
.contentShape(.contextMenuPreview, RoundedRectangle(cornerRadius: 12))
|
||||
.contextMenu {
|
||||
Section {
|
||||
Toggle(isOn: .constant(true)) {
|
||||
Label("Toggle", systemImage: "square.dashed")
|
||||
}
|
||||
Toggle(isOn: .constant(false)) {
|
||||
Label("Toggle", systemImage: "square.dashed")
|
||||
}
|
||||
Toggle(isOn: .constant(false)) {
|
||||
Label("Disabled", systemImage: "square.dashed")
|
||||
}
|
||||
.disabled(true)
|
||||
}
|
||||
Section {
|
||||
Toggle(isOn: .constant(true)) {
|
||||
Label("Toggle", systemImage: "square.dashed")
|
||||
}
|
||||
Toggle(isOn: .constant(true)) {
|
||||
Label("Toggle", systemImage: "square.dashed")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ContextMenuScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ContextMenuScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct NavigationBarScreen: View {
|
||||
enum TitleMode {
|
||||
case large
|
||||
case inline
|
||||
case hidden
|
||||
}
|
||||
|
||||
enum BackButtonMode {
|
||||
case navigation
|
||||
case cancellationAction
|
||||
case hidden
|
||||
}
|
||||
|
||||
@State private var titleMode = TitleMode.inline
|
||||
@State private var backButtonMode = BackButtonMode.navigation
|
||||
@State private var hasConfirmationAction = true
|
||||
@State private var hasPrimaryAction = false
|
||||
|
||||
var body: some View {
|
||||
Form {
|
||||
Section {
|
||||
ListRow(kind: .custom {
|
||||
Text("This component may be rendered differently when running on macOS.")
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
.multilineTextAlignment(.center)
|
||||
.frame(maxWidth: .infinity)
|
||||
.listRowBackground(Color.clear)
|
||||
})
|
||||
}
|
||||
|
||||
Section {
|
||||
ListRow(label: .plain(title: "Title"),
|
||||
kind: .picker(selection: $titleMode, items: [
|
||||
(title: "Large", tag: .large),
|
||||
(title: "Inline", tag: .inline),
|
||||
(title: "Hidden", tag: .hidden)
|
||||
]))
|
||||
ListRow(label: .plain(title: "Back Button"),
|
||||
kind: .picker(selection: $backButtonMode, items: [
|
||||
(title: "Navigation", tag: .navigation),
|
||||
(title: "Cancelation Action", tag: .cancellationAction),
|
||||
(title: "Hidden", tag: .hidden)
|
||||
]))
|
||||
|
||||
ListRow(label: .plain(title: "Confirmation Action"),
|
||||
kind: .toggle($hasConfirmationAction))
|
||||
ListRow(label: .plain(title: "Primary Action"),
|
||||
kind: .toggle($hasPrimaryAction))
|
||||
} header: {
|
||||
Text("Configuration")
|
||||
.compoundListSectionHeader()
|
||||
}
|
||||
|
||||
Section {
|
||||
ListRow(kind: .custom {
|
||||
VStack {
|
||||
Text("Empty section to make the form scrollable")
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
Spacer(minLength: 500)
|
||||
}
|
||||
.padding(ListRowPadding.insets)
|
||||
})
|
||||
}
|
||||
}
|
||||
.compoundList()
|
||||
.navigationTitle(titleMode == .hidden ? "" : "Navigation Bar")
|
||||
.navigationBarTitleDisplayMode(titleMode == .large ? .large : .inline)
|
||||
.navigationBarBackButtonHidden(backButtonMode != .navigation)
|
||||
.toolbar {
|
||||
if hasConfirmationAction {
|
||||
ToolbarItem(placement: .confirmationAction) {
|
||||
Button("Confirm") { }
|
||||
}
|
||||
}
|
||||
|
||||
if hasPrimaryAction {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
Button("Primary") { }
|
||||
}
|
||||
}
|
||||
|
||||
if backButtonMode == .cancellationAction {
|
||||
ToolbarItem(placement: .cancellationAction) {
|
||||
Button("Cancel") { }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct NavigationBarScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
NavigationBarScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct ShareSheetScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Share Sheets") {
|
||||
Text("This component will be rendered differently when running on macOS.")
|
||||
.font(.footnote)
|
||||
.foregroundColor(.secondary)
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
ShareLink(item: URL(string: "https://element.io")!, subject: Text("The subject"), message: Text("The message"))
|
||||
.padding(.top)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ShareSheetScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ShareSheetScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
66
compound-ios/Inspector/Sources/Tokens/AllCases.swift
Normal file
66
compound-ios/Inspector/Sources/Tokens/AllCases.swift
Normal file
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import Compound
|
||||
import SwiftUI
|
||||
|
||||
protocol AllValues {
|
||||
associatedtype ValueType
|
||||
var allValues: [(name: String, value: ValueType)] { get }
|
||||
}
|
||||
|
||||
extension AllValues {
|
||||
var allValues: [(name: String, value: ValueType)] {
|
||||
var values: [(name: String, value: ValueType)] = []
|
||||
let mirror = Mirror(reflecting: self)
|
||||
|
||||
for property in mirror.children {
|
||||
if let label = property.label, let value = property.value as? ValueType {
|
||||
values.append((label, value))
|
||||
}
|
||||
}
|
||||
|
||||
return values
|
||||
}
|
||||
}
|
||||
|
||||
extension CompoundColors: AllValues { typealias ValueType = Color }
|
||||
extension CompoundColorTokens: AllValues { typealias ValueType = Color }
|
||||
extension CompoundGradients: AllValues { typealias ValueType = Gradient }
|
||||
extension CompoundFonts: AllValues { typealias ValueType = Font }
|
||||
extension CompoundIcons: AllValues { typealias ValueType = Image }
|
||||
|
||||
extension CompoundColors {
|
||||
var allColors: [(name: String, value: Color)] {
|
||||
CompoundColorTokens().allValues + allValues
|
||||
}
|
||||
}
|
||||
|
||||
extension CompoundIcons {
|
||||
var allKeyPaths: [(name: String, value: KeyPath<CompoundIcons, Image>)] {
|
||||
var icons: [(name: String, value: KeyPath<CompoundIcons, Image>)] = []
|
||||
let mirror = Mirror(reflecting: self)
|
||||
|
||||
for property in mirror.children {
|
||||
if let label = property.label {
|
||||
let keyPath = \CompoundIcons.[checkedMirrorDescendant: label] as PartialKeyPath
|
||||
|
||||
if let imageKeyPath = keyPath as? KeyPath<CompoundIcons, Image> {
|
||||
icons.append((label, imageKeyPath))
|
||||
} else {
|
||||
print("Nope")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return icons
|
||||
}
|
||||
|
||||
private subscript(checkedMirrorDescendant key: String) -> Any {
|
||||
return Mirror(reflecting: self).descendant(key)!
|
||||
}
|
||||
}
|
||||
85
compound-ios/Inspector/Sources/Tokens/ColorsScreen.swift
Normal file
85
compound-ios/Inspector/Sources/Tokens/ColorsScreen.swift
Normal file
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct ColorsScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Colors") {
|
||||
ForEach(Color.compound.allColors, id: \.name) { color in
|
||||
ColorItem(color: color.value, name: color.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ColorItem: View {
|
||||
let color: Color
|
||||
let name: String
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
swatch
|
||||
|
||||
VStack(alignment: .leading) {
|
||||
Text(name)
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
Text(color.hexValue())
|
||||
.font(.compound.bodySM.monospaced())
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var swatch: some View {
|
||||
swatchShape
|
||||
.foregroundColor(color)
|
||||
.frame(height: 40)
|
||||
.aspectRatio(1, contentMode: .fit)
|
||||
.overlay {
|
||||
swatchShape
|
||||
.strokeBorder(Color.compound.iconPrimary, lineWidth: 1.5)
|
||||
.opacity(0.2)
|
||||
}
|
||||
}
|
||||
|
||||
var swatchShape: some InsettableShape {
|
||||
RoundedRectangle(cornerRadius: 12, style: .continuous)
|
||||
}
|
||||
}
|
||||
|
||||
private extension Color {
|
||||
func hexValue() -> String {
|
||||
let uiColor = UIColor(self)
|
||||
|
||||
var red: CGFloat = 0
|
||||
var green: CGFloat = 0
|
||||
var blue: CGFloat = 0
|
||||
var alpha: CGFloat = 0
|
||||
|
||||
uiColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
|
||||
|
||||
return "#\(red.asHex)\(green.asHex)\(blue.asHex)"
|
||||
}
|
||||
}
|
||||
|
||||
private extension CGFloat {
|
||||
var asHex: String {
|
||||
String(format:"%02X", Int((self * 255).rounded()))
|
||||
}
|
||||
}
|
||||
|
||||
struct ColorsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ColorsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 700))
|
||||
}
|
||||
}
|
||||
40
compound-ios/Inspector/Sources/Tokens/FontsScreen.swift
Normal file
40
compound-ios/Inspector/Sources/Tokens/FontsScreen.swift
Normal file
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct FontsScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Fonts") {
|
||||
ForEach(Font.compound.allValues, id: \.name) { font in
|
||||
FontItem(font: font.value, name: font.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct FontItem: View {
|
||||
let font: Font
|
||||
let name: String
|
||||
|
||||
var body: some View {
|
||||
Text(name)
|
||||
.font(font)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
}
|
||||
}
|
||||
|
||||
struct FontsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
FontsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
61
compound-ios/Inspector/Sources/Tokens/GradientsScreen.swift
Normal file
61
compound-ios/Inspector/Sources/Tokens/GradientsScreen.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// Copyright 2025 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct GradientsScreen: View {
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Colors") {
|
||||
ForEach(Gradient.compound.allValues, id: \.name) { gradient in
|
||||
GradientItem(gradient: gradient.value, name: gradient.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct GradientItem: View {
|
||||
let gradient: Gradient
|
||||
let name: String
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
swatch
|
||||
|
||||
VStack(alignment: .leading) {
|
||||
Text(name)
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var swatch: some View {
|
||||
swatchShape
|
||||
.foregroundStyle(gradient)
|
||||
.frame(height: 40)
|
||||
.aspectRatio(1, contentMode: .fit)
|
||||
.overlay {
|
||||
swatchShape
|
||||
.strokeBorder(Color.compound.iconPrimary, lineWidth: 1.5)
|
||||
.opacity(0.2)
|
||||
}
|
||||
}
|
||||
|
||||
var swatchShape: some InsettableShape {
|
||||
RoundedRectangle(cornerRadius: 12, style: .continuous)
|
||||
}
|
||||
}
|
||||
|
||||
struct GradientsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
ColorsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 700))
|
||||
}
|
||||
}
|
||||
47
compound-ios/Inspector/Sources/Tokens/IconsScreen.swift
Normal file
47
compound-ios/Inspector/Sources/Tokens/IconsScreen.swift
Normal file
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// Copyright 2023, 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Compound
|
||||
|
||||
struct IconsScreen: View {
|
||||
let icons = Image.compound.allValues.sorted(by: { $0.name < $1.name })
|
||||
|
||||
var body: some View {
|
||||
ScreenContent(navigationTitle: "Icons") {
|
||||
ForEach(icons, id: \.name) { icon in
|
||||
IconItem(icon: icon.value, name: icon.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct IconItem: View {
|
||||
let icon: Image
|
||||
let name: String
|
||||
|
||||
var body: some View {
|
||||
Label {
|
||||
Text(name)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
} icon: {
|
||||
CompoundIcon(customImage: icon)
|
||||
.foregroundColor(.compound.iconSecondary)
|
||||
}
|
||||
.font(.compound.bodyLG)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
}
|
||||
}
|
||||
|
||||
struct IconsScreen_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
IconsScreen()
|
||||
}
|
||||
.previewLayout(.fixed(width: 375, height: 750))
|
||||
}
|
||||
}
|
||||
11
compound-ios/Inspector/ci_scripts/ci_post_clone.sh
Executable file
11
compound-ios/Inspector/ci_scripts/ci_post_clone.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
# Build dependencies
|
||||
echo "Installing CocoaPods"
|
||||
brew install cocoapods
|
||||
|
||||
# Project dependencies
|
||||
echo "Installing Pods"
|
||||
pod install
|
||||
Reference in New Issue
Block a user