diff --git a/plugin-api-standalone.d.ts b/plugin-api-standalone.d.ts index 376dede..73553fd 100644 --- a/plugin-api-standalone.d.ts +++ b/plugin-api-standalone.d.ts @@ -2919,13 +2919,15 @@ interface UtilAPI { * const color = rgb('#FF00FF') * ``` * - * @param color - A CSS color string, `RGB` object, or `RGBA` object. The input color's alpha value, if any, will be ignored. + * @param color - A CSS color string, `RGB` object, `RGBA` object, or `ColorWithColorSpace`. The input color's alpha value, if any, will be ignored. */ - rgb(color: string | RGB | RGBA): RGB + rgb( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + ): RGBWithColorSpace /** * Creates an `RGBA` color object from a variety of common color encodings. * - * Accepted color formats include CSS color strings with hex, `rgb()`, `hsl()`, or `lab()` encodings, as well as `RGB` and `RGBA` objects. Alpha defaults to 1 (opaque) if not provided in the input. If a string encoding cannot be parsed, an error will be thrown. + * Accepted color formats include CSS color strings with hex, `rgb()`, `hsl()`, or `lab()` encodings, as well as `RGB`, `RGBA`, and `ColorWithColorSpace` objects. Alpha defaults to 1 (opaque) if not provided in the input. If supplied, `alphaOverride` takes precedence over alpha encoded in `color`. If a string encoding cannot be parsed, an error will be thrown. * * Examples: * @@ -2944,9 +2946,13 @@ interface UtilAPI { * const color = rgba('rgb(25% 25% 25% / 0.5)') * ``` * - * @param color - A CSS color string, `RGB` object, or `RGBA` object. + * @param color - A CSS color string, `RGB` object, `RGBA` object, or `ColorWithColorSpace`. + * @param alphaOverride - An optional alpha value that takes precedence over alpha encoded in `color`. */ - rgba(color: string | RGB | RGBA): RGBA + rgba( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + alphaOverride?: number, + ): RGBAWithColorSpace /** * Creates a `SolidPaint` object, assigning color and opacity from a variety of common color encodings. * @@ -2960,6 +2966,9 @@ interface UtilAPI { * // Set the current page background to red * figma.currentPage.backgrounds = [figma.util.solidPaint("#FF0000")] * + * // Create a solid paint from an OKLCH color + * figma.currentPage.backgrounds = [figma.util.solidPaint('oklch(40.1% 0.123 21.57)')] + * * // Modify an existing SolidPaint with new color and opacity * if (node.fills[0].type === 'SOLID') { * const updated = figma.util.solidPaint('#FF00FF88', node.fills[0]) @@ -2983,7 +2992,10 @@ interface UtilAPI { * @param color - A CSS color string, `RGB` object, or `RGBA` object. * @param overrides - An optional object that allows you to specify additional `SolidPaint` properties, aside from color. This is useful for modifying the color of a pre-existing `SolidPaint` object. */ - solidPaint(color: string | RGB | RGBA, overrides?: Partial): SolidPaint + solidPaint( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + overrides?: Partial, + ): SolidPaint /** * * Normalizes the markdown string to verify what markdown will render with Figma's rich-text editors. @@ -3953,6 +3965,52 @@ interface RGBA { readonly b: number readonly a: number } +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +type ColorWithColorSpace = + | { + readonly space: 'SRGB' | 'DISPLAY_P3' + readonly r: number + readonly g: number + readonly b: number + } + | { + readonly space: 'HSL' + readonly h: number + readonly s: number + readonly l: number + } + | { + readonly space: 'HSB' + readonly h: number + readonly s: number + readonly b: number + } + | { + readonly space: 'OKLAB' + readonly l: number + readonly a: number + readonly b: number + } + | { + readonly space: 'OKLCH' + readonly l: number + readonly c: number + readonly h: number + } +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +interface RGBWithColorSpace extends RGB { + readonly sourceColor?: ColorWithColorSpace +} +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +interface RGBAWithColorSpace extends RGBA { + readonly sourceColor?: ColorWithColorSpace +} /** * @see https://developers.figma.com/docs/plugins/api/FontName * @@ -4298,7 +4356,7 @@ interface DropShadowEffect { /** * The color of the shadow, including its opacity. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The offset of the shadow relative to its object. Use this property to simulate the direction of the light. */ @@ -4341,7 +4399,7 @@ interface InnerShadowEffect { /** * The color of the shadow, including its opacity. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The offset of the shadow relative to its object. Use this property to simulate the direction of the light. */ @@ -4437,7 +4495,7 @@ interface NoiseEffectBase { /** * The color of the noise effect. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * Whether the noise effect is visible. */ @@ -4487,7 +4545,7 @@ interface NoiseEffectDuotone extends NoiseEffectBase { /** * The secondary color of the noise effect. */ - readonly secondaryColor: RGBA + readonly secondaryColor: RGBAWithColorSpace } /** * @see https://developers.figma.com/docs/plugins/api/Effect @@ -4648,7 +4706,7 @@ interface ColorStop { /** * The color value of the gradient stop */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The variable bound to a gradient stop */ @@ -4691,7 +4749,7 @@ interface SolidPaint { * } * ``` */ - readonly color: RGB + readonly color: RGBWithColorSpace /** * Whether the paint is visible. Defaults to true. */ @@ -12854,4 +12912,4 @@ interface RadialRepeatModifier extends RepeatModifier { } // prettier-ignore -export { ArgFreeEventType, PluginAPI, VersionHistoryResult, VariablesAPI, LibraryVariableCollection, LibraryVariable, AnnotationsAPI, BuzzAPI, BuzzTextField, BuzzMediaField, BuzzAssetType, TeamLibraryAPI, PaymentStatus, PaymentsAPI, ClientStorageAPI, NotificationOptions, NotifyDequeueReason, NotificationHandler, MotionAPI, ShowUIOptions, UIPostMessageOptions, OnMessageProperties, MessageEventHandler, UIAPI, UtilAPI, ColorPalette, ColorPalettes, ConstantsAPI, CodegenEvent, CodegenPreferences, CodegenPreferencesEvent, CodegenResult, CodegenAPI, DevResource, DevResourceWithNodeId, LinkPreviewEvent, PlainTextElement, LinkPreviewResult, AuthEvent, DevResourceOpenEvent, AuthResult, VSCodeAPI, DevResourcesAPI, TimerAPI, ViewportAPI, TextReviewAPI, ParameterValues, SuggestionResults, ParameterInputEvent, ParametersAPI, RunParametersEvent, OpenDevResourcesEvent, RunEvent, SlidesViewChangeEvent, CanvasViewChangeEvent, DropEvent, DropItem, DropFile, DocumentChangeEvent, StyleChangeEvent, StyleChange, BaseDocumentChange, BaseNodeChange, RemovedNode, CreateChange, DeleteChange, PropertyChange, BaseStyleChange, StyleCreateChange, StyleDeleteChange, StylePropertyChange, DocumentChange, NodeChangeProperty, NodeChangeEvent, NodeChange, StyleChangeProperty, TextReviewEvent, TextReviewRange, Transform, Vector, Rect, RGB, RGBA, FontName, FontVariationSettings, FontNameInput, TextCase, TextDecoration, TextDecorationStyle, FontStyle, TextDecorationOffset, TextDecorationThickness, TextDecorationColor, OpenTypeFeature, ArcData, DropShadowEffect, InnerShadowEffect, BlurEffectBase, BlurEffectNormal, BlurEffectProgressive, BlurEffect, NoiseEffectBase, NoiseEffectMonotone, NoiseEffectDuotone, NoiseEffectMultitone, NoiseEffect, TextureEffect, GlassEffect, ShaderEffect, Effect, ConstraintType, Constraints, ColorStop, ImageFilters, SolidPaint, GradientPaint, ImagePaint, VideoPaint, PatternPaint, ShaderPaint, Paint, ShaderPropertyValue, ShaderPropertyDefinition, Shader, Guide, RowsColsLayoutGrid, GridLayoutGrid, LayoutGrid, ExportSettingsConstraints, ExportSettingsImage, ExportSettingsSVGBase, ExportSettingsSVG, ExportSettingsSVGString, ExportSettingsPDF, ExportSettingsREST, VideoExportScale, VideoExportConstraint, ExportSettingsMP4, ExportSettingsGIF, ExportSettingsWEBM, ExportSettings, WindingRule, VectorVertex, VectorSegment, VectorRegion, VectorNetwork, VectorPath, VectorPaths, LetterSpacing, LineHeight, LeadingTrim, TextWrapStyle, HyperlinkTarget, TextListOptions, BlendMode, MaskType, Font, TextStyleOverrideType, StyledTextSegment, TextPathStartData, Reaction, VariableDataType, ExpressionFunction, Expression, VariableValueWithExpression, VariableData, ConditionalBlock, DevStatus, Action, SimpleTransition, DirectionalTransition, Transition, Trigger, Navigation, Easing, EasingFunctionBezier, EasingFunctionSpring, MotionEasing, PhysicalSpring, NormalizedSpring, AnimationStylePropValue, AvailableAnimationStylePropValue, BaseAnimationStyle, AvailableAnimationStyle, FigmaAnimationStyleConfiguration, CustomAnimationStyleConfiguration, AnimationStyleConfiguration, AppliedFigmaAnimationStyle, AppliedCustomAnimationStyle, AppliedAnimationStyle, AnimationEntry, KeyframeValue, ManualKeyframeInput, ManualKeyframeTrackInput, ManualKeyframe, ManualKeyframeBinding, ManualKeyframeTrack, KeyframeBinding, KeyframePropertyFieldName, EffectKeyframeFieldName, KeyframeField, ComponentPropKeyframeTracks, ComponentPropKeyframeBindings, PaintManualKeyframeTrack, PaintKeyframeBinding, EffectManualKeyframeTracks, EffectKeyframeBindings, ManualKeyframeTracks, Animations, Timeline, OverflowDirection, OverlayPositionType, OverlayBackground, OverlayBackgroundInteraction, PublishStatus, ConnectorEndpointPosition, ConnectorEndpointPositionAndEndpointNodeId, ConnectorEndpointEndpointNodeIdAndMagnet, ConnectorEndpoint, ConnectorStrokeCap, BaseNodeMixin, PluginDataMixin, DevResourcesMixin, DevStatusMixin, SceneNodeMixin, MotionNodeMixin, VariableBindableNodeField, VariableBindableTextField, VariableBindablePaintField, VariableBindablePaintStyleField, VariableBindableColorStopField, VariableBindableEffectField, VariableBindableEffectStyleField, VariableBindableLayoutGridField, VariableBindableGridStyleField, VariableBindableComponentPropertyField, VariableBindableComponentPropertyDefinitionField, StickableMixin, ChildrenMixin, ConstraintMixin, DimensionAndPositionMixin, LayoutMixin, AspectRatioLockMixin, BlendMixin, ContainerMixin, DeprecatedBackgroundMixin, StrokeCap, StrokeJoin, HandleMirroring, AutoLayoutMixin, GridTrackSize, GridTrackReorderOptions, GridTrackReorderEntry, GridLayoutMixin, AutoLayoutChildrenMixin, GridChildrenMixin, InferredAutoLayoutResult, DetachedInfo, MinimalStrokesMixin, IndividualStrokesMixin, MinimalFillsMixin, VariableWidthPoint, PresetVariableWidthStrokeProperties, CustomVariableWidthStrokeProperties, VariableWidthStrokeProperties, ComplexStrokeProperties, ScatterBrushProperties, StretchBrushProperties, BrushStrokeProperties, DynamicStrokeProperties, GeometryMixin, ComplexStrokesMixin, CornerMixin, RectangleCornerMixin, ExportMixin, FramePrototypingMixin, VectorLikeMixin, ReactionMixin, DocumentationLink, PublishableMixin, DefaultShapeMixin, BaseFrameMixin, DefaultFrameMixin, OpaqueNodeMixin, MinimalBlendMixin, Annotation, AnnotationProperty, AnnotationPropertyType, AnnotationsMixin, Measurement, MeasurementSide, MeasurementOffset, MeasurementsMixin, VariantMixin, ComponentPropertiesMixin, BaseNonResizableTextMixin, NonResizableTextMixin, NonResizableTextPathMixin, TextSublayerNode, DocumentNode, ExplicitVariableModesMixin, PageNode, FrameNode, GroupNode, TransformGroupNode, SliceNode, RectangleNode, LineNode, EllipseNode, PolygonNode, StarNode, VectorNode, TextNode, TextPathNode, ComponentPropertyType, InstanceSwapPreferredValue, SlotSettings, ComponentPropertyOptions, ComponentPropertyDefinitions, ComponentSetNode, ComponentNode, ComponentProperties, InstanceNode, SlotNode, BooleanOperationNode, StickyNode, StampNode, TableNode, TableCellNode, HighlightNode, WashiTapeNode, ShapeWithTextNode, CodeBlockNode, LabelSublayerNode, ConnectorNode, VariableResolvedDataType, VariableAlias, VariableComposedColor, VariableValue, VariableScope, CodeSyntaxPlatform, Variable, VariableCollection, ExtendedVariableCollection, AnnotationCategoryColor, AnnotationCategory, WidgetNode, EmbedData, EmbedNode, LinkUnfurlData, LinkUnfurlNode, MediaData, MediaNode, SectionNode, SlideNode, SlideRowNode, SlideGridNode, InteractiveSlideElementNode, SlideTransition, BaseNode, SceneNode, NodeType, StyleType, InheritedStyleField, StyleConsumers, BaseStyleMixin, PaintStyle, TextStyle, EffectStyle, GridStyle, CustomAnimationStyle, BaseStyle, Image, Video, BaseUser, User, ActiveUser, FindAllCriteria, TransformModifier, RepeatModifier, LinearRepeatModifier, RadialRepeatModifier } +export { ArgFreeEventType, PluginAPI, VersionHistoryResult, VariablesAPI, LibraryVariableCollection, LibraryVariable, AnnotationsAPI, BuzzAPI, BuzzTextField, BuzzMediaField, BuzzAssetType, TeamLibraryAPI, PaymentStatus, PaymentsAPI, ClientStorageAPI, NotificationOptions, NotifyDequeueReason, NotificationHandler, MotionAPI, ShowUIOptions, UIPostMessageOptions, OnMessageProperties, MessageEventHandler, UIAPI, UtilAPI, ColorPalette, ColorPalettes, ConstantsAPI, CodegenEvent, CodegenPreferences, CodegenPreferencesEvent, CodegenResult, CodegenAPI, DevResource, DevResourceWithNodeId, LinkPreviewEvent, PlainTextElement, LinkPreviewResult, AuthEvent, DevResourceOpenEvent, AuthResult, VSCodeAPI, DevResourcesAPI, TimerAPI, ViewportAPI, TextReviewAPI, ParameterValues, SuggestionResults, ParameterInputEvent, ParametersAPI, RunParametersEvent, OpenDevResourcesEvent, RunEvent, SlidesViewChangeEvent, CanvasViewChangeEvent, DropEvent, DropItem, DropFile, DocumentChangeEvent, StyleChangeEvent, StyleChange, BaseDocumentChange, BaseNodeChange, RemovedNode, CreateChange, DeleteChange, PropertyChange, BaseStyleChange, StyleCreateChange, StyleDeleteChange, StylePropertyChange, DocumentChange, NodeChangeProperty, NodeChangeEvent, NodeChange, StyleChangeProperty, TextReviewEvent, TextReviewRange, Transform, Vector, Rect, RGB, RGBA, ColorWithColorSpace, RGBWithColorSpace, RGBAWithColorSpace, FontName, FontVariationSettings, FontNameInput, TextCase, TextDecoration, TextDecorationStyle, FontStyle, TextDecorationOffset, TextDecorationThickness, TextDecorationColor, OpenTypeFeature, ArcData, DropShadowEffect, InnerShadowEffect, BlurEffectBase, BlurEffectNormal, BlurEffectProgressive, BlurEffect, NoiseEffectBase, NoiseEffectMonotone, NoiseEffectDuotone, NoiseEffectMultitone, NoiseEffect, TextureEffect, GlassEffect, ShaderEffect, Effect, ConstraintType, Constraints, ColorStop, ImageFilters, SolidPaint, GradientPaint, ImagePaint, VideoPaint, PatternPaint, ShaderPaint, Paint, ShaderPropertyValue, ShaderPropertyDefinition, Shader, Guide, RowsColsLayoutGrid, GridLayoutGrid, LayoutGrid, ExportSettingsConstraints, ExportSettingsImage, ExportSettingsSVGBase, ExportSettingsSVG, ExportSettingsSVGString, ExportSettingsPDF, ExportSettingsREST, VideoExportScale, VideoExportConstraint, ExportSettingsMP4, ExportSettingsGIF, ExportSettingsWEBM, ExportSettings, WindingRule, VectorVertex, VectorSegment, VectorRegion, VectorNetwork, VectorPath, VectorPaths, LetterSpacing, LineHeight, LeadingTrim, TextWrapStyle, HyperlinkTarget, TextListOptions, BlendMode, MaskType, Font, TextStyleOverrideType, StyledTextSegment, TextPathStartData, Reaction, VariableDataType, ExpressionFunction, Expression, VariableValueWithExpression, VariableData, ConditionalBlock, DevStatus, Action, SimpleTransition, DirectionalTransition, Transition, Trigger, Navigation, Easing, EasingFunctionBezier, EasingFunctionSpring, MotionEasing, PhysicalSpring, NormalizedSpring, AnimationStylePropValue, AvailableAnimationStylePropValue, BaseAnimationStyle, AvailableAnimationStyle, FigmaAnimationStyleConfiguration, CustomAnimationStyleConfiguration, AnimationStyleConfiguration, AppliedFigmaAnimationStyle, AppliedCustomAnimationStyle, AppliedAnimationStyle, AnimationEntry, KeyframeValue, ManualKeyframeInput, ManualKeyframeTrackInput, ManualKeyframe, ManualKeyframeBinding, ManualKeyframeTrack, KeyframeBinding, KeyframePropertyFieldName, EffectKeyframeFieldName, KeyframeField, ComponentPropKeyframeTracks, ComponentPropKeyframeBindings, PaintManualKeyframeTrack, PaintKeyframeBinding, EffectManualKeyframeTracks, EffectKeyframeBindings, ManualKeyframeTracks, Animations, Timeline, OverflowDirection, OverlayPositionType, OverlayBackground, OverlayBackgroundInteraction, PublishStatus, ConnectorEndpointPosition, ConnectorEndpointPositionAndEndpointNodeId, ConnectorEndpointEndpointNodeIdAndMagnet, ConnectorEndpoint, ConnectorStrokeCap, BaseNodeMixin, PluginDataMixin, DevResourcesMixin, DevStatusMixin, SceneNodeMixin, MotionNodeMixin, VariableBindableNodeField, VariableBindableTextField, VariableBindablePaintField, VariableBindablePaintStyleField, VariableBindableColorStopField, VariableBindableEffectField, VariableBindableEffectStyleField, VariableBindableLayoutGridField, VariableBindableGridStyleField, VariableBindableComponentPropertyField, VariableBindableComponentPropertyDefinitionField, StickableMixin, ChildrenMixin, ConstraintMixin, DimensionAndPositionMixin, LayoutMixin, AspectRatioLockMixin, BlendMixin, ContainerMixin, DeprecatedBackgroundMixin, StrokeCap, StrokeJoin, HandleMirroring, AutoLayoutMixin, GridTrackSize, GridTrackReorderOptions, GridTrackReorderEntry, GridLayoutMixin, AutoLayoutChildrenMixin, GridChildrenMixin, InferredAutoLayoutResult, DetachedInfo, MinimalStrokesMixin, IndividualStrokesMixin, MinimalFillsMixin, VariableWidthPoint, PresetVariableWidthStrokeProperties, CustomVariableWidthStrokeProperties, VariableWidthStrokeProperties, ComplexStrokeProperties, ScatterBrushProperties, StretchBrushProperties, BrushStrokeProperties, DynamicStrokeProperties, GeometryMixin, ComplexStrokesMixin, CornerMixin, RectangleCornerMixin, ExportMixin, FramePrototypingMixin, VectorLikeMixin, ReactionMixin, DocumentationLink, PublishableMixin, DefaultShapeMixin, BaseFrameMixin, DefaultFrameMixin, OpaqueNodeMixin, MinimalBlendMixin, Annotation, AnnotationProperty, AnnotationPropertyType, AnnotationsMixin, Measurement, MeasurementSide, MeasurementOffset, MeasurementsMixin, VariantMixin, ComponentPropertiesMixin, BaseNonResizableTextMixin, NonResizableTextMixin, NonResizableTextPathMixin, TextSublayerNode, DocumentNode, ExplicitVariableModesMixin, PageNode, FrameNode, GroupNode, TransformGroupNode, SliceNode, RectangleNode, LineNode, EllipseNode, PolygonNode, StarNode, VectorNode, TextNode, TextPathNode, ComponentPropertyType, InstanceSwapPreferredValue, SlotSettings, ComponentPropertyOptions, ComponentPropertyDefinitions, ComponentSetNode, ComponentNode, ComponentProperties, InstanceNode, SlotNode, BooleanOperationNode, StickyNode, StampNode, TableNode, TableCellNode, HighlightNode, WashiTapeNode, ShapeWithTextNode, CodeBlockNode, LabelSublayerNode, ConnectorNode, VariableResolvedDataType, VariableAlias, VariableComposedColor, VariableValue, VariableScope, CodeSyntaxPlatform, Variable, VariableCollection, ExtendedVariableCollection, AnnotationCategoryColor, AnnotationCategory, WidgetNode, EmbedData, EmbedNode, LinkUnfurlData, LinkUnfurlNode, MediaData, MediaNode, SectionNode, SlideNode, SlideRowNode, SlideGridNode, InteractiveSlideElementNode, SlideTransition, BaseNode, SceneNode, NodeType, StyleType, InheritedStyleField, StyleConsumers, BaseStyleMixin, PaintStyle, TextStyle, EffectStyle, GridStyle, CustomAnimationStyle, BaseStyle, Image, Video, BaseUser, User, ActiveUser, FindAllCriteria, TransformModifier, RepeatModifier, LinearRepeatModifier, RadialRepeatModifier } diff --git a/plugin-api.d.ts b/plugin-api.d.ts index 5c7faae..26c6d21 100644 --- a/plugin-api.d.ts +++ b/plugin-api.d.ts @@ -2919,13 +2919,15 @@ interface UtilAPI { * const color = rgb('#FF00FF') * ``` * - * @param color - A CSS color string, `RGB` object, or `RGBA` object. The input color's alpha value, if any, will be ignored. + * @param color - A CSS color string, `RGB` object, `RGBA` object, or `ColorWithColorSpace`. The input color's alpha value, if any, will be ignored. */ - rgb(color: string | RGB | RGBA): RGB + rgb( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + ): RGBWithColorSpace /** * Creates an `RGBA` color object from a variety of common color encodings. * - * Accepted color formats include CSS color strings with hex, `rgb()`, `hsl()`, or `lab()` encodings, as well as `RGB` and `RGBA` objects. Alpha defaults to 1 (opaque) if not provided in the input. If a string encoding cannot be parsed, an error will be thrown. + * Accepted color formats include CSS color strings with hex, `rgb()`, `hsl()`, or `lab()` encodings, as well as `RGB`, `RGBA`, and `ColorWithColorSpace` objects. Alpha defaults to 1 (opaque) if not provided in the input. If supplied, `alphaOverride` takes precedence over alpha encoded in `color`. If a string encoding cannot be parsed, an error will be thrown. * * Examples: * @@ -2944,9 +2946,13 @@ interface UtilAPI { * const color = rgba('rgb(25% 25% 25% / 0.5)') * ``` * - * @param color - A CSS color string, `RGB` object, or `RGBA` object. + * @param color - A CSS color string, `RGB` object, `RGBA` object, or `ColorWithColorSpace`. + * @param alphaOverride - An optional alpha value that takes precedence over alpha encoded in `color`. */ - rgba(color: string | RGB | RGBA): RGBA + rgba( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + alphaOverride?: number, + ): RGBAWithColorSpace /** * Creates a `SolidPaint` object, assigning color and opacity from a variety of common color encodings. * @@ -2960,6 +2966,9 @@ interface UtilAPI { * // Set the current page background to red * figma.currentPage.backgrounds = [figma.util.solidPaint("#FF0000")] * + * // Create a solid paint from an OKLCH color + * figma.currentPage.backgrounds = [figma.util.solidPaint('oklch(40.1% 0.123 21.57)')] + * * // Modify an existing SolidPaint with new color and opacity * if (node.fills[0].type === 'SOLID') { * const updated = figma.util.solidPaint('#FF00FF88', node.fills[0]) @@ -2983,7 +2992,10 @@ interface UtilAPI { * @param color - A CSS color string, `RGB` object, or `RGBA` object. * @param overrides - An optional object that allows you to specify additional `SolidPaint` properties, aside from color. This is useful for modifying the color of a pre-existing `SolidPaint` object. */ - solidPaint(color: string | RGB | RGBA, overrides?: Partial): SolidPaint + solidPaint( + color: string | RGBWithColorSpace | RGBAWithColorSpace | ColorWithColorSpace, + overrides?: Partial, + ): SolidPaint /** * * Normalizes the markdown string to verify what markdown will render with Figma's rich-text editors. @@ -3953,6 +3965,52 @@ interface RGBA { readonly b: number readonly a: number } +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +type ColorWithColorSpace = + | { + readonly space: 'SRGB' | 'DISPLAY_P3' + readonly r: number + readonly g: number + readonly b: number + } + | { + readonly space: 'HSL' + readonly h: number + readonly s: number + readonly l: number + } + | { + readonly space: 'HSB' + readonly h: number + readonly s: number + readonly b: number + } + | { + readonly space: 'OKLAB' + readonly l: number + readonly a: number + readonly b: number + } + | { + readonly space: 'OKLCH' + readonly l: number + readonly c: number + readonly h: number + } +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +interface RGBWithColorSpace extends RGB { + readonly sourceColor?: ColorWithColorSpace +} +/** + * @see https://developers.figma.com/docs/plugins/api/RGB + */ +interface RGBAWithColorSpace extends RGBA { + readonly sourceColor?: ColorWithColorSpace +} /** * @see https://developers.figma.com/docs/plugins/api/FontName * @@ -4298,7 +4356,7 @@ interface DropShadowEffect { /** * The color of the shadow, including its opacity. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The offset of the shadow relative to its object. Use this property to simulate the direction of the light. */ @@ -4341,7 +4399,7 @@ interface InnerShadowEffect { /** * The color of the shadow, including its opacity. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The offset of the shadow relative to its object. Use this property to simulate the direction of the light. */ @@ -4437,7 +4495,7 @@ interface NoiseEffectBase { /** * The color of the noise effect. */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * Whether the noise effect is visible. */ @@ -4487,7 +4545,7 @@ interface NoiseEffectDuotone extends NoiseEffectBase { /** * The secondary color of the noise effect. */ - readonly secondaryColor: RGBA + readonly secondaryColor: RGBAWithColorSpace } /** * @see https://developers.figma.com/docs/plugins/api/Effect @@ -4648,7 +4706,7 @@ interface ColorStop { /** * The color value of the gradient stop */ - readonly color: RGBA + readonly color: RGBAWithColorSpace /** * The variable bound to a gradient stop */ @@ -4691,7 +4749,7 @@ interface SolidPaint { * } * ``` */ - readonly color: RGB + readonly color: RGBWithColorSpace /** * Whether the paint is visible. Defaults to true. */