diff --git a/README.md b/README.md
index 0216b21..326f90a 100644
--- a/README.md
+++ b/README.md
@@ -502,9 +502,9 @@ For `figma-export colors`
**Important, the [API](https://www.figma.com/developers/api#variables) for working with color variables in Figma is still in `Beta` stage, so something may break at any time.**
-**Important, in [CONFIG.md](CONFIG.md) use either colors or variablesColors.**
+**Important, in [figma-export.yaml](CONFIG.md) use either `colors` or `variablesColors`.**
-With the introduction of color variables in Figma, you can use color variables instead of color styles. Color variables can be used in figma-export, for this in [CONFIG.md](CONFIG.md) you need to use the `variablesColors` variable instead of `colors`.
+With the introduction of color variables in Figma, you can use it instead of color styles. Color variables can be used in figma-export, for this in [figma-export.yaml](CONFIG.md) you need to use the `variablesColors` option instead of `colors`.
The value of variables can be either the final color value or another variable. For example, the `Primary` variable can contain the value `#FFFFFF`, and the `Secondary` variable can contain the value `Pand/90`. Figma-export can work with any depth of variable nesting. You can specify the `primitivesModeName` parameter to indicate the mode for the final table with your primitives, if the parameter is not specified, the default value will be used.
@@ -522,10 +522,10 @@ Example:
-1. primitivesModeName - the name of the variable column, if the value in [CONFIG.md](CONFIG.md) is not specified, the default value will be used
+1. primitivesModeName - the name of the variable column, if the value in [figma-export.yaml](CONFIG.md) is not specified, the default value will be used
2. A variable that has a local value
-See [CONFIG.md](CONFIG.md) for more information in the variablesColors section.
+See [CONFIG.md](CONFIG.md) for more information in the `variablesColors` section.
### For icons
diff --git a/Sources/FigmaAPI/Model/Variables.swift b/Sources/FigmaAPI/Model/Variables.swift
index 83fcc2b..5f00859 100644
--- a/Sources/FigmaAPI/Model/Variables.swift
+++ b/Sources/FigmaAPI/Model/Variables.swift
@@ -3,24 +3,14 @@ public struct Mode: Decodable {
public var name: String
}
-public struct VariableCollectionId: Decodable {
+public struct VariableCollectionValue: Decodable {
public var defaultModeId: String
public var id: String
public var name: String
- public var remote: Bool
public var modes: [Mode]
- public var key: String
- public var hiddenFromPublishing: Bool
public var variableIds: [String]
}
-public enum ResolvedType: String, Decodable {
- case boolean = "BOOLEAN"
- case float = "FLOAT"
- case string = "STRING"
- case color = "COLOR"
-}
-
public struct VariableAlias: Codable {
public var id: String
public var type: String
@@ -58,25 +48,22 @@ public enum ValuesByMode: Decodable {
}
}
-public struct VariableID: Decodable {
+public struct VariableValue: Decodable {
public var id: String
public var name: String
- public var key: String
public var variableCollectionId: String
- public var resolvedType: ResolvedType
public var valuesByMode: [String: ValuesByMode]
- public var remote: Bool
public var description: String
- public var hiddenFromPublishing: Bool
}
+public typealias VariableId = String
+public typealias VariableCollectionId = String
+
public struct VariablesMeta: Decodable {
- public var variableCollections: [String: VariableCollectionId]
- public var variables: [String: VariableID]
+ public var variableCollections: [VariableCollectionId: VariableCollectionValue]
+ public var variables: [VariableId: VariableValue]
}
public struct VariablesResponse: Decodable {
- public let error: Bool
- public let status: Int
public let meta: VariablesMeta
}
diff --git a/Sources/FigmaExport/Loaders/Colors/ColorsLoader.swift b/Sources/FigmaExport/Loaders/Colors/ColorsLoader.swift
index eaf1ad8..153fcd2 100644
--- a/Sources/FigmaExport/Loaders/Colors/ColorsLoader.swift
+++ b/Sources/FigmaExport/Loaders/Colors/ColorsLoader.swift
@@ -1,8 +1,10 @@
import FigmaAPI
import FigmaExportCore
+typealias ColorsLoaderOutput = (light: [Color], dark: [Color]?, lightHC: [Color]?, darkHC: [Color]?)
+
/// Loads colors from Figma
-final class ColorsLoader: ColorsLoaderProtocol {
+final class ColorsLoader {
private let client: Client
private let figmaParams: Params.Figma
diff --git a/Sources/FigmaExport/Loaders/Colors/ColorsLoaderProtocol.swift b/Sources/FigmaExport/Loaders/Colors/ColorsLoaderProtocol.swift
deleted file mode 100644
index 74cb1a1..0000000
--- a/Sources/FigmaExport/Loaders/Colors/ColorsLoaderProtocol.swift
+++ /dev/null
@@ -1,8 +0,0 @@
-import FigmaAPI
-import FigmaExportCore
-
-typealias ColorsLoaderOutput = (light: [Color], dark: [Color]?, lightHC: [Color]?, darkHC: [Color]?)
-
-protocol ColorsLoaderProtocol {
- func load() throws -> ColorsLoaderOutput
-}
diff --git a/Sources/FigmaExport/Loaders/Colors/ColorsVariablesLoader.swift b/Sources/FigmaExport/Loaders/Colors/ColorsVariablesLoader.swift
index 4db6ee9..7c5212d 100644
--- a/Sources/FigmaExport/Loaders/Colors/ColorsVariablesLoader.swift
+++ b/Sources/FigmaExport/Loaders/Colors/ColorsVariablesLoader.swift
@@ -2,7 +2,7 @@ import FigmaAPI
import FigmaExportCore
/// Loads color variables from Figma
-final class ColorsVariablesLoader: ColorsLoaderProtocol {
+final class ColorsVariablesLoader {
private let client: Client
private let variableParams: Params.Common.VariablesColors?
private let filter: String?
@@ -42,7 +42,7 @@ final class ColorsVariablesLoader: ColorsLoaderProtocol {
return try client.request(endpoint)
}
- private func extractModeIds(from collections: Dictionary.Values.Element) -> ModeIds {
+ private func extractModeIds(from collections: Dictionary.Values.Element) -> ModeIds {
var modeIds = ModeIds()
collections.modes.forEach { mode in
switch mode.name {
@@ -61,7 +61,7 @@ final class ColorsVariablesLoader: ColorsLoaderProtocol {
return modeIds
}
- private func mapVariableMetaToVariable(variableMeta: VariableID, modeIds: ModeIds) -> Variable {
+ private func mapVariableMetaToVariable(variableMeta: VariableValue, modeIds: ModeIds) -> Variable {
let values = Values(
light: variableMeta.valuesByMode[modeIds.lightModeId],
dark: variableMeta.valuesByMode[modeIds.darkModeId],
diff --git a/Sources/FigmaExport/Subcommands/ExportColors.swift b/Sources/FigmaExport/Subcommands/ExportColors.swift
index c73b2ab..1f6f782 100644
--- a/Sources/FigmaExport/Subcommands/ExportColors.swift
+++ b/Sources/FigmaExport/Subcommands/ExportColors.swift
@@ -37,12 +37,11 @@ extension FigmaExportCommand {
let figmaParams = options.params.figma
var colors: ColorsLoaderOutput?
- var loader: ColorsLoaderProtocol
var nameValidateRegexp: String?
var nameReplaceRegexp: String?
if let colorParams = commonParams?.colors {
- loader = ColorsLoader(
+ let loader = ColorsLoader(
client: client,
figmaParams: figmaParams,
colorParams: colorParams,
@@ -50,10 +49,10 @@ extension FigmaExportCommand {
)
colors = try loader.load()
- nameValidateRegexp = options.params.common?.colors?.nameValidateRegexp
- nameReplaceRegexp = options.params.common?.colors?.nameReplaceRegexp
+ nameValidateRegexp = colorParams.nameValidateRegexp
+ nameReplaceRegexp = colorParams.nameReplaceRegexp
} else if let variableParams = commonParams?.variablesColors {
- loader = ColorsVariablesLoader(
+ let loader = ColorsVariablesLoader(
client: client,
figmaParams: figmaParams,
variableParams: variableParams,
@@ -61,8 +60,8 @@ extension FigmaExportCommand {
)
colors = try loader.load()
- nameValidateRegexp = options.params.common?.variablesColors?.nameValidateRegexp
- nameReplaceRegexp = options.params.common?.variablesColors?.nameReplaceRegexp
+ nameValidateRegexp = variableParams.nameValidateRegexp
+ nameReplaceRegexp = variableParams.nameReplaceRegexp
}
guard let colors else {