@atlaskit/editor-toolbar 0.3.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/index.js +14 -0
  3. package/dist/cjs/ui/ColorPalette/Color.compiled.css +1 -2
  4. package/dist/cjs/ui/ColorPalette/Color.js +3 -2
  5. package/dist/cjs/ui/ColorPalette/index.js +239 -5
  6. package/dist/cjs/ui/ColorPalette/utils.js +40 -1
  7. package/dist/cjs/ui/ToolbarDropdownItem.js +9 -2
  8. package/dist/cjs/ui/ToolbarDropdownMenu.compiled.css +2 -1
  9. package/dist/cjs/ui/ToolbarDropdownMenu.js +4 -2
  10. package/dist/cjs/ui/icons/LoomIcon.js +13 -0
  11. package/dist/es2019/index.js +2 -0
  12. package/dist/es2019/ui/ColorPalette/Color.compiled.css +1 -2
  13. package/dist/es2019/ui/ColorPalette/Color.js +3 -2
  14. package/dist/es2019/ui/ColorPalette/index.js +240 -5
  15. package/dist/es2019/ui/ColorPalette/utils.js +36 -1
  16. package/dist/es2019/ui/ToolbarDropdownItem.js +23 -14
  17. package/dist/es2019/ui/ToolbarDropdownMenu.compiled.css +2 -1
  18. package/dist/es2019/ui/ToolbarDropdownMenu.js +4 -2
  19. package/dist/es2019/ui/icons/LoomIcon.js +2 -0
  20. package/dist/esm/index.js +2 -0
  21. package/dist/esm/ui/ColorPalette/Color.compiled.css +1 -2
  22. package/dist/esm/ui/ColorPalette/Color.js +3 -2
  23. package/dist/esm/ui/ColorPalette/index.js +242 -8
  24. package/dist/esm/ui/ColorPalette/utils.js +38 -1
  25. package/dist/esm/ui/ToolbarDropdownItem.js +9 -2
  26. package/dist/esm/ui/ToolbarDropdownMenu.compiled.css +2 -1
  27. package/dist/esm/ui/ToolbarDropdownMenu.js +4 -2
  28. package/dist/esm/ui/icons/LoomIcon.js +2 -0
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/ui/ColorPalette/utils.d.ts +20 -0
  31. package/dist/types/ui/ToolbarDropdownItem.d.ts +4 -1
  32. package/dist/types/ui/icons/LoomIcon.d.ts +1 -0
  33. package/dist/types-ts4.5/index.d.ts +2 -0
  34. package/dist/types-ts4.5/ui/ColorPalette/utils.d.ts +20 -0
  35. package/dist/types-ts4.5/ui/ToolbarDropdownItem.d.ts +4 -1
  36. package/dist/types-ts4.5/ui/icons/LoomIcon.d.ts +1 -0
  37. package/package.json +6 -8
@@ -1,14 +1,15 @@
1
1
  /* index.tsx generated by @compiled/babel-plugin v0.36.1 */
2
2
  import "./index.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
- import React, { useMemo } from 'react';
4
+ import React, { useMemo, useCallback, useRef, useEffect } from 'react';
5
5
  import chromatism from 'chromatism';
6
6
  import { useIntl } from 'react-intl-next';
7
- import { Box } from '@atlaskit/primitives/compiled';
7
+ import { Box, Grid, Inline } from '@atlaskit/primitives/compiled';
8
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
8
9
  import { useThemeObserver } from '@atlaskit/tokens';
9
10
  import { Color } from './Color';
10
11
  import getColorMessage from './getColorMessage';
11
- import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette, getTokenCSSVariableValue } from './utils';
12
+ import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette, getSelectedRowAndColumnFromPalette, getTokenCSSVariableValue } from './utils';
12
13
  const styles = {
13
14
  paletteWrapper: "_1e0c1txw"
14
15
  };
@@ -19,7 +20,7 @@ const styles = {
19
20
  *
20
21
  * @param color color string, supports HEX, RGB, RGBA etc.
21
22
  * @param useIconToken boolean, describes if a token should be used for the icon color
22
- * @return Highest contrast color in pool
23
+ * @returns Highest contrast color in pool
23
24
  */
24
25
  function getCheckMarkColor(color, useIconToken) {
25
26
  const tokenVal = getTokenCSSVariableValue(color);
@@ -68,10 +69,244 @@ const ColorPalette = ({
68
69
  colorMode: tokenTheme
69
70
  } = useThemeObserver();
70
71
  const useIconToken = !!hexToPaletteColor;
72
+
73
+ // Refs for keyboard navigation
74
+ const paletteRef = useRef(null);
75
+ const currentFocusRef = useRef({
76
+ row: 0,
77
+ col: 0
78
+ });
71
79
  const colorsPerRow = useMemo(() => {
72
80
  return getColorsPerRowFromPalette(palette, cols);
73
81
  }, [palette, cols]);
74
- return /*#__PURE__*/React.createElement(React.Fragment, null, colorsPerRow.map(row => /*#__PURE__*/React.createElement(Box, {
82
+
83
+ // Get initial focus position based on selected color
84
+ const {
85
+ selectedRowIndex,
86
+ selectedColumnIndex
87
+ } = useMemo(() => {
88
+ return getSelectedRowAndColumnFromPalette(palette, selectedColor, cols);
89
+ }, [palette, selectedColor, cols]);
90
+
91
+ // Focus management utility
92
+ const focusColorAt = useCallback((row, col) => {
93
+ var _rowElement$children$, _rowElement$children$2;
94
+ if (!paletteRef.current) {
95
+ return;
96
+ }
97
+ const rowElement = paletteRef.current.children[row];
98
+ if (!(rowElement instanceof HTMLElement)) {
99
+ return;
100
+ }
101
+ const colorButtonCandidate = (_rowElement$children$ = rowElement.children[col]) === null || _rowElement$children$ === void 0 ? void 0 : (_rowElement$children$2 = _rowElement$children$.querySelector) === null || _rowElement$children$2 === void 0 ? void 0 : _rowElement$children$2.call(_rowElement$children$, 'button');
102
+ const colorButton = colorButtonCandidate instanceof HTMLButtonElement ? colorButtonCandidate : null;
103
+ if (colorButton) {
104
+ colorButton.focus();
105
+ currentFocusRef.current = {
106
+ row,
107
+ col
108
+ };
109
+ }
110
+ }, []);
111
+
112
+ // Initialize focus position and handle autofocus
113
+ useEffect(() => {
114
+ if (!expValEquals('platform_editor_toolbar_aifc_patch_1', 'isEnabled', true)) {
115
+ return;
116
+ }
117
+ if (selectedRowIndex >= 0 && selectedColumnIndex >= 0) {
118
+ currentFocusRef.current = {
119
+ row: selectedRowIndex,
120
+ col: selectedColumnIndex
121
+ };
122
+ } else {
123
+ currentFocusRef.current = {
124
+ row: 0,
125
+ col: 0
126
+ };
127
+ }
128
+ }, [selectedRowIndex, selectedColumnIndex]);
129
+
130
+ // Keyboard navigation handler
131
+ const handleKeyDown = useCallback((value, label, event) => {
132
+ var _colorsPerRow$row;
133
+ const {
134
+ row,
135
+ col
136
+ } = currentFocusRef.current;
137
+ const maxRow = colorsPerRow.length - 1;
138
+ const maxCol = ((_colorsPerRow$row = colorsPerRow[row]) === null || _colorsPerRow$row === void 0 ? void 0 : _colorsPerRow$row.length) - 1 || 0;
139
+ switch (event.key) {
140
+ case 'ArrowRight':
141
+ {
142
+ event.preventDefault();
143
+ if (col < maxCol) {
144
+ focusColorAt(row, col + 1);
145
+ } else if (row < maxRow) {
146
+ // Move to first color of next row
147
+ focusColorAt(row + 1, 0);
148
+ } else {
149
+ // Wrap to first color of first row
150
+ focusColorAt(0, 0);
151
+ }
152
+ break;
153
+ }
154
+ case 'ArrowLeft':
155
+ {
156
+ event.preventDefault();
157
+ if (col > 0) {
158
+ focusColorAt(row, col - 1);
159
+ } else if (row > 0) {
160
+ var _colorsPerRow;
161
+ // Move to last color of previous row
162
+ const prevRowMaxCol = ((_colorsPerRow = colorsPerRow[row - 1]) === null || _colorsPerRow === void 0 ? void 0 : _colorsPerRow.length) - 1 || 0;
163
+ focusColorAt(row - 1, prevRowMaxCol);
164
+ } else {
165
+ var _colorsPerRow$maxRow;
166
+ // Wrap to last color of last row
167
+ const lastRowMaxCol = ((_colorsPerRow$maxRow = colorsPerRow[maxRow]) === null || _colorsPerRow$maxRow === void 0 ? void 0 : _colorsPerRow$maxRow.length) - 1 || 0;
168
+ focusColorAt(maxRow, lastRowMaxCol);
169
+ }
170
+ break;
171
+ }
172
+ case 'ArrowDown':
173
+ {
174
+ event.preventDefault();
175
+ if (row < maxRow) {
176
+ var _colorsPerRow2;
177
+ // Move to same column in next row, or last available column
178
+ const nextRowMaxCol = ((_colorsPerRow2 = colorsPerRow[row + 1]) === null || _colorsPerRow2 === void 0 ? void 0 : _colorsPerRow2.length) - 1 || 0;
179
+ const targetCol = Math.min(col, nextRowMaxCol);
180
+ focusColorAt(row + 1, targetCol);
181
+ } else {
182
+ var _colorsPerRow$;
183
+ // Wrap to same column in first row
184
+ const firstRowMaxCol = ((_colorsPerRow$ = colorsPerRow[0]) === null || _colorsPerRow$ === void 0 ? void 0 : _colorsPerRow$.length) - 1 || 0;
185
+ const targetCol = Math.min(col, firstRowMaxCol);
186
+ focusColorAt(0, targetCol);
187
+ }
188
+ break;
189
+ }
190
+ case 'ArrowUp':
191
+ {
192
+ event.preventDefault();
193
+ if (row > 0) {
194
+ var _colorsPerRow3;
195
+ // Move to same column in previous row, or last available column
196
+ const prevRowMaxCol = ((_colorsPerRow3 = colorsPerRow[row - 1]) === null || _colorsPerRow3 === void 0 ? void 0 : _colorsPerRow3.length) - 1 || 0;
197
+ const targetCol = Math.min(col, prevRowMaxCol);
198
+ focusColorAt(row - 1, targetCol);
199
+ } else {
200
+ var _colorsPerRow$maxRow2;
201
+ // Wrap to same column in last row
202
+ const lastRowMaxCol = ((_colorsPerRow$maxRow2 = colorsPerRow[maxRow]) === null || _colorsPerRow$maxRow2 === void 0 ? void 0 : _colorsPerRow$maxRow2.length) - 1 || 0;
203
+ const targetCol = Math.min(col, lastRowMaxCol);
204
+ focusColorAt(maxRow, targetCol);
205
+ }
206
+ break;
207
+ }
208
+ case 'Home':
209
+ {
210
+ event.preventDefault();
211
+ focusColorAt(row, 0);
212
+ break;
213
+ }
214
+ case 'End':
215
+ {
216
+ event.preventDefault();
217
+ focusColorAt(row, maxCol);
218
+ break;
219
+ }
220
+ case 'PageUp':
221
+ {
222
+ event.preventDefault();
223
+ focusColorAt(0, col);
224
+ break;
225
+ }
226
+ case 'PageDown':
227
+ {
228
+ var _colorsPerRow$maxRow3;
229
+ event.preventDefault();
230
+ const lastRowMaxCol = ((_colorsPerRow$maxRow3 = colorsPerRow[maxRow]) === null || _colorsPerRow$maxRow3 === void 0 ? void 0 : _colorsPerRow$maxRow3.length) - 1 || 0;
231
+ const targetCol = Math.min(col, lastRowMaxCol);
232
+ focusColorAt(maxRow, targetCol);
233
+ break;
234
+ }
235
+ case 'Tab':
236
+ {
237
+ // Allow Tab to move to next focusable element (don't prevent default)
238
+ // This will allow Tab to move between color palettes
239
+ if (onKeyDown) {
240
+ onKeyDown(value, label, event);
241
+ }
242
+ break;
243
+ }
244
+ case 'Enter':
245
+ case ' ':
246
+ {
247
+ event.preventDefault();
248
+ onClick(value, label);
249
+ break;
250
+ }
251
+ default:
252
+ {
253
+ // Pass through to custom onKeyDown handler if provided
254
+ if (onKeyDown) {
255
+ onKeyDown(value, label, event);
256
+ }
257
+ break;
258
+ }
259
+ }
260
+ }, [colorsPerRow, focusColorAt, onClick, onKeyDown]);
261
+ return expValEquals('platform_editor_toolbar_aifc_patch_1', 'isEnabled', true) ? /*#__PURE__*/React.createElement(Grid, {
262
+ gap: "space.050",
263
+ ref: paletteRef,
264
+ role: "group"
265
+ }, colorsPerRow.map((row, rowIndex) => /*#__PURE__*/React.createElement(Inline, {
266
+ rowSpace: "space.050",
267
+ key: `row-first-color-${row[0].value}`,
268
+ role: "radiogroup"
269
+ }, row.map(({
270
+ value,
271
+ label,
272
+ border,
273
+ message,
274
+ decorator
275
+ }, colIndex) => {
276
+ let tooltipMessage = message;
277
+
278
+ // Override with theme-specific tooltip messages if provided
279
+ if (paletteColorTooltipMessages) {
280
+ if (tokenTheme === 'dark') {
281
+ tooltipMessage = getColorMessage(paletteColorTooltipMessages.dark, value.toUpperCase());
282
+ }
283
+ if (tokenTheme === 'light') {
284
+ tooltipMessage = getColorMessage(paletteColorTooltipMessages.light, value.toUpperCase());
285
+ }
286
+ }
287
+
288
+ // Determine if this color should be focusable
289
+ const isSelectedColor = value === selectedColor;
290
+ const isFirstColor = rowIndex === 0 && colIndex === 0;
291
+
292
+ // Only the selected color or first color should be focusable via Tab
293
+ // This allows Tab to move between color palettes
294
+ const shouldBeFocusable = isSelectedColor || !selectedColor && isFirstColor;
295
+ return /*#__PURE__*/React.createElement(Color, {
296
+ key: value,
297
+ value: value,
298
+ borderColor: border,
299
+ label: tooltipMessage ? formatMessage(tooltipMessage) : label,
300
+ onClick: onClick,
301
+ onKeyDown: handleKeyDown,
302
+ isSelected: isSelectedColor,
303
+ checkMarkColor: getCheckMarkColor(value, useIconToken),
304
+ hexToPaletteColor: hexToPaletteColor,
305
+ decorator: decorator,
306
+ tabIndex: shouldBeFocusable ? 0 : -1,
307
+ autoFocus: isSelectedColor && rowIndex === selectedRowIndex && colIndex === selectedColumnIndex
308
+ });
309
+ })))) : /*#__PURE__*/React.createElement(React.Fragment, null, colorsPerRow.map(row => /*#__PURE__*/React.createElement(Box, {
75
310
  xcss: styles.paletteWrapper,
76
311
  key: `row-first-color-${row[0].value}`,
77
312
  role: "radiogroup"
@@ -1,3 +1,4 @@
1
+ import chromatism from 'chromatism';
1
2
  /**
2
3
  * Default number of columns in the color picker
3
4
  */
@@ -80,4 +81,38 @@ export const getTokenCSSVariableValue = variableExpression => {
80
81
  return value || fallback;
81
82
  }
82
83
  return '';
83
- };
84
+ };
85
+
86
+ /**
87
+ * Get the best contrasting background color for a given text color
88
+ * Ensures WCAG AA compliance for accessibility
89
+ *
90
+ * @param textColor - The text color to find a contrasting background for (supports HEX, RGB, RGBA etc.)
91
+ * @param useTokens - Whether to return design tokens instead of raw hex values
92
+ * @returns The best contrasting background color (hex value or design token)
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // Get contrasting color for white text
97
+ * const bgForWhite = getContrastingBackgroundColor('#FFFFFF', false);
98
+ * // Returns: '#42526E' (dark gray)
99
+ *
100
+ * // Get contrasting color for black text with design tokens
101
+ * const bgForBlack = getContrastingBackgroundColor('#000000', true);
102
+ * // Returns: token('elevation.surface', '#FFFFFF')
103
+ * ```
104
+ */
105
+ export function getContrastingBackgroundColor(textColor) {
106
+ const candidates = ['#FFFFFF',
107
+ // white - surface
108
+ '#172B4D' // dark blue-gray - text color
109
+ ];
110
+
111
+ // Extract actual color value if it's a CSS variable
112
+ const tokenVal = getTokenCSSVariableValue(textColor);
113
+ const colorValue = !!tokenVal ? tokenVal : textColor;
114
+
115
+ // Find the color with the highest contrast ratio
116
+ const bestContrast = candidates.sort((a, b) => chromatism.difference(b, colorValue) - chromatism.difference(a, colorValue))[0];
117
+ return bestContrast;
118
+ }
@@ -5,6 +5,7 @@ import React, { forwardRef } from 'react';
5
5
  import { cx } from '@atlaskit/css';
6
6
  import { DropdownItem } from '@atlaskit/dropdown-menu';
7
7
  import { Pressable } from '@atlaskit/primitives/compiled';
8
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
8
9
  const styles = {
9
10
  toolbarDropdownItem: "_18zrpxbi _1rjcu2gc _1e0c1txw _kqswh2mm _bfhksm61 _1bsb1osq _1tke14no _1ul9163w _1basglpi _1ah31i6y",
10
11
  enabled: "_irr3166n _1di61dty",
@@ -42,17 +43,25 @@ export const ToolbarDropdownItem = ({
42
43
  hasNestedDropdownMenu,
43
44
  triggerRef,
44
45
  testId,
45
- ariaKeyshortcuts
46
- }) => /*#__PURE__*/React.createElement(DropdownItem, {
47
- onClick: onClick,
48
- elemBefore: elemBefore,
49
- elemAfter: elemAfter,
50
- isSelected: isSelected,
51
- isDisabled: isDisabled,
52
- "aria-haspopup": hasNestedDropdownMenu,
53
- "aria-pressed": isSelected,
54
- "aria-keyshortcuts": ariaKeyshortcuts,
55
- ref: triggerRef,
56
- component: CustomDropdownMenuItemButton,
57
- testId: testId
58
- }, children);
46
+ ariaKeyshortcuts,
47
+ href,
48
+ target,
49
+ rel
50
+ }) => {
51
+ return /*#__PURE__*/React.createElement(DropdownItem, {
52
+ onClick: onClick,
53
+ elemBefore: elemBefore,
54
+ elemAfter: elemAfter,
55
+ isSelected: isSelected,
56
+ isDisabled: isDisabled,
57
+ "aria-haspopup": hasNestedDropdownMenu,
58
+ "aria-pressed": isSelected,
59
+ "aria-keyshortcuts": ariaKeyshortcuts,
60
+ ref: triggerRef,
61
+ href: href,
62
+ target: target,
63
+ rel: rel,
64
+ component: href && expValEquals('platform_editor_toolbar_migrate_loom', 'isEnabled', true) ? undefined : CustomDropdownMenuItemButton,
65
+ testId: testId
66
+ }, children);
67
+ };
@@ -1 +1,2 @@
1
- ._1mou1b66{margin-block:var(--ds-space-050,4px)}
1
+
2
+ ._1mou1b66{margin-block:var(--ds-space-050,4px)}._18l8n7od [data-section]:first-of-type{border-block-start:unset}
@@ -3,11 +3,13 @@ import "./ToolbarDropdownMenu.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { useCallback } from 'react';
5
5
  import DropdownMenu from '@atlaskit/dropdown-menu';
6
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
6
7
  import { useToolbarUI } from '../hooks/ui-context';
7
8
  import { ToolbarButton } from './ToolbarButton';
8
9
  import { ToolbarDropdownMenuProvider, useToolbarDropdownMenu } from './ToolbarDropdownMenuContext';
9
10
  const styles = {
10
- sectionMargin: "_1mou1b66"
11
+ sectionMargin: "_1mou1b66",
12
+ firstSectionSeparator: "_18l8n7od"
11
13
  };
12
14
  const ToolbarDropdownMenuContent = ({
13
15
  iconBefore,
@@ -73,6 +75,6 @@ export const ToolbarDropdownMenu = ({
73
75
  testId: testId,
74
76
  label: label
75
77
  }, /*#__PURE__*/React.createElement("div", {
76
- className: ax([hasSectionMargin && styles.sectionMargin])
78
+ className: ax([hasSectionMargin && styles.sectionMargin, expValEquals('platform_editor_toolbar_migrate_loom', 'isEnabled', true) && styles.firstSectionSeparator])
77
79
  }, children)));
78
80
  };
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @atlaskit/editor/no-re-export */
2
+ export { default as LoomIcon } from '@atlaskit/icon/core/video';
package/dist/esm/index.js CHANGED
@@ -65,5 +65,7 @@ export { TaskIcon } from './ui/icons/TaskIcon';
65
65
  export { UndoIcon } from './ui/icons/UndoIcon';
66
66
  export { RedoIcon } from './ui/icons/RedoIcon';
67
67
  export { HistoryIcon } from './ui/icons/HistoryIcon';
68
+ export { LoomIcon } from './ui/icons/LoomIcon';
68
69
  export { default as ColorPalette } from './ui/ColorPalette';
70
+ export { getContrastingBackgroundColor } from './ui/ColorPalette/utils';
69
71
  export { useToolbarUI, ToolbarUIProvider } from './hooks/ui-context';
@@ -1,7 +1,6 @@
1
1
 
2
2
  ._19itcf40{border:var(--_1wr0y6w)}
3
- ._2rko1hkb{border-radius:var(--ds-border-radius-050,4px)}
4
- ._2rkoiti9{border-radius:var(--ds-border-radius-100,4px)}._189et94y{border-width:1px}
3
+ ._2rko12b0{border-radius:var(--ds-radius-small,4px)}._189et94y{border-width:1px}
5
4
  ._1dqonqa1{border-style:solid}
6
5
  ._1h6d1j28{border-color:transparent}
7
6
  ._19bvidpf{padding-left:0}
@@ -42,7 +42,7 @@ export var Color = /*#__PURE__*/memo(function (_ref) {
42
42
  return /*#__PURE__*/React.createElement(Tooltip, {
43
43
  content: label
44
44
  }, /*#__PURE__*/React.createElement("span", {
45
- className: ax(["_2rkoiti9 _1h6d1j28 _1dqonqa1 _189et94y _1e0c1txw _4cvr1h6o _ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o _858umuej _jyzfmuej _4cvxmuej"])
45
+ className: ax(["_2rko12b0 _1h6d1j28 _1dqonqa1 _189et94y _1e0c1txw _4cvr1h6o _ca0qv77o _u5f3v77o _n3tdv77o _19bvv77o _858umuej _jyzfmuej _4cvxmuej"])
46
46
  }, /*#__PURE__*/React.createElement("button", {
47
47
  type: "button",
48
48
  "aria-label": label,
@@ -53,7 +53,7 @@ export var Color = /*#__PURE__*/memo(function (_ref) {
53
53
  onMouseDown: handleMouseDown,
54
54
  tabIndex: tabIndex,
55
55
  autoFocus: autoFocus,
56
- className: ax(["_ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _2rko1hkb _19itcf40 _4t3icr4y _1bsbcr4y _bfhkm7j4 _80omtlke _1e0c1ule _kqswh2mm _y2mv12j9 _1bg4v77o"]),
56
+ className: ax(["_ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _2rko12b0 _19itcf40 _4t3icr4y _1bsbcr4y _bfhkm7j4 _80omtlke _1e0c1ule _kqswh2mm _y2mv12j9 _1bg4v77o"]),
57
57
  style: {
58
58
  backgroundColor: colorStyle || "var(--ds-background-input, #FFFFFF)",
59
59
  border: "1px solid ".concat(borderColor),
@@ -61,6 +61,7 @@ export var Color = /*#__PURE__*/memo(function (_ref) {
61
61
  "--_toyvsf": ix("2px solid ".concat("var(--ds-border-focused, #388BFF)"))
62
62
  }
63
63
  }, !decorator && isSelected && /*#__PURE__*/React.createElement(EditorDoneIcon, {
64
+ color: checkMarkColor,
64
65
  LEGACY_primaryColor: checkMarkColor,
65
66
  label: ""
66
67
  }), decorator)));