Skip to content

Commit 63b0b01

Browse files
committed
Fix/ loadDesignTokens API (#2302)
* fix loadDesignTokens API * review fixes * update generateDesignTokens
1 parent bf6fd36 commit 63b0b01

File tree

2 files changed

+34
-51
lines changed

2 files changed

+34
-51
lines changed

src/style/__tests__/colors.spec.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,23 +126,23 @@ describe('style/Colors', () => {
126126

127127
describe('generateDesignTokens(...)', () => {
128128
it('should generate design tokens from dark color for light theme', () => {
129-
const chosenColor = '#860D86';
130-
expect(uut.isDark(chosenColor)).toEqual(true);
131-
expect(uut.generateDesignTokens(chosenColor, 'light')).toEqual({
132-
$backgroundPrimaryHeavy: chosenColor,
129+
const primaryColor = '#860D86';
130+
expect(uut.isDark(primaryColor)).toEqual(true);
131+
expect(uut.generateDesignTokens(primaryColor)).toEqual({
132+
$backgroundPrimaryHeavy: primaryColor,
133133
$backgroundPrimaryLight: '#FFFAFF',
134134
$backgroundPrimaryMedium: '#FACCFA',
135-
$iconPrimary: chosenColor,
135+
$iconPrimary: primaryColor,
136136
$iconPrimaryLight: '#F16FF1',
137-
$outlinePrimary: chosenColor,
138-
$textPrimary: chosenColor
137+
$outlinePrimary: primaryColor,
138+
$textPrimary: primaryColor
139139
});
140140
});
141141

142142
it('should generate design tokens from light color for light theme', () => {
143-
const chosenColor = '#E9BEE7';
144-
expect(uut.isDark(chosenColor)).toEqual(false);
145-
expect(uut.generateDesignTokens(chosenColor, 'light')).toEqual({
143+
const primaryColor = '#E9BEE7';
144+
expect(uut.isDark(primaryColor)).toEqual(false);
145+
expect(uut.generateDesignTokens(primaryColor)).toEqual({
146146
$backgroundPrimaryHeavy: '#A4379F',
147147
$backgroundPrimaryLight: '#F6E4F5',
148148
$backgroundPrimaryMedium: '#E9BEE7',
@@ -154,9 +154,9 @@ describe('style/Colors', () => {
154154
});
155155

156156
it('should generate design tokens from dark color for dark theme', () => {
157-
const chosenColor = '#860D86';
158-
expect(uut.isDark(chosenColor)).toEqual(true);
159-
expect(uut.generateDesignTokens(chosenColor, 'dark')).toEqual({
157+
const primaryColor = '#860D86';
158+
expect(uut.isDark(primaryColor)).toEqual(true);
159+
expect(uut.generateDesignTokens(primaryColor, true)).toEqual({
160160
$backgroundPrimaryHeavy: '#F69DF6',
161161
$backgroundPrimaryLight: '#860D86',
162162
$backgroundPrimaryMedium: '#B512B5',
@@ -168,16 +168,16 @@ describe('style/Colors', () => {
168168
});
169169

170170
it('should generate design tokens from light color for dark theme', () => {
171-
const chosenColor = '#E9BEE7';
172-
expect(uut.isDark(chosenColor)).toEqual(false);
173-
expect(uut.generateDesignTokens(chosenColor, 'dark')).toEqual({
174-
$backgroundPrimaryHeavy: chosenColor,
171+
const primaryColor = '#E9BEE7';
172+
expect(uut.isDark(primaryColor)).toEqual(false);
173+
expect(uut.generateDesignTokens(primaryColor, true)).toEqual({
174+
$backgroundPrimaryHeavy: primaryColor,
175175
$backgroundPrimaryLight: '#581E55',
176176
$backgroundPrimaryMedium: '#7E2B7A',
177-
$iconPrimary: chosenColor,
177+
$iconPrimary: primaryColor,
178178
$iconPrimaryLight: '#C24CBD',
179-
$outlinePrimary: chosenColor,
180-
$textPrimary: chosenColor
179+
$outlinePrimary: primaryColor,
180+
$textPrimary: primaryColor
181181
});
182182
});
183183
});

src/style/colors.ts

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import ColorName from './colorName';
1111
import Scheme, {Schemes, SchemeType} from './scheme';
1212

1313
export type DesignToken = {semantic?: [string]; resource_paths?: [string]; toString: Function};
14+
export type TokensOptions = {primaryColor: string};
1415

1516
export class Colors {
1617
[key: string]: any;
@@ -49,10 +50,10 @@ export class Colors {
4950
* Load light and dark schemes based on generated design tokens
5051
* @param color - palette color
5152
*/
52-
loadDesignTokens(color: string) {
53+
loadDesignTokens(options: TokensOptions) {
5354
this.loadSchemes({
54-
light: this.generateLightModeTokens(color),
55-
dark: this.generateDarkModeTokens(color)
55+
light: this.generateDesignTokens(options.primaryColor),
56+
dark: this.generateDesignTokens(options.primaryColor, true)
5657
});
5758
}
5859

@@ -220,39 +221,21 @@ export class Colors {
220221
return this.shouldSupportDarkMode && Scheme.getSchemeType() === 'dark' ? _.reverse(palette) : palette;
221222
});
222223

223-
generateDesignTokens(color: string, mode: 'light' | 'dark' = 'light') {
224-
return mode === 'light' ? this.generateLightModeTokens(color) : this.generateDarkModeTokens(color);
225-
}
226-
227-
private generateLightModeTokens(color: string) {
228-
const colorPalette: string[] = this.generatePalette(color);
229-
const color30 = colorPalette[2];
230-
const color50 = colorPalette[4];
231-
const color70 = colorPalette[6];
232-
const color80 = colorPalette[7];
233-
234-
const mainColor = this.isDark(color) ? color : color30;
235-
236-
return {
237-
$backgroundPrimaryHeavy: mainColor,
238-
$backgroundPrimaryLight: color80,
239-
$backgroundPrimaryMedium: color70,
240-
$iconPrimary: mainColor,
241-
$iconPrimaryLight: color50,
242-
$textPrimary: mainColor,
243-
$outlinePrimary: mainColor
244-
};
245-
}
246-
247-
private generateDarkModeTokens(color: string) {
248-
const colorPalette: string[] = _.reverse(this.generatePalette(color));
224+
private generateDesignTokens(primaryColor: string, dark?: boolean) {
225+
let colorPalette: string[] = this.generatePalette(primaryColor);
226+
if (dark) {
227+
colorPalette = _.reverse(colorPalette);
228+
}
249229
const color30 = colorPalette[2];
250230
const color50 = colorPalette[4];
251231
const color70 = colorPalette[6];
252232
const color80 = colorPalette[7];
253233

254-
const mainColor = this.isDark(color) ? color30 : color;
255-
234+
const isPrimaryColorDark = this.isDark(primaryColor);
235+
let mainColor = isPrimaryColorDark ? primaryColor : color30;
236+
if (dark) {
237+
mainColor = isPrimaryColorDark ? color30 : primaryColor;
238+
}
256239
return {
257240
$backgroundPrimaryHeavy: mainColor,
258241
$backgroundPrimaryLight: color80,

0 commit comments

Comments
 (0)