@digdir/designsystemet 0.1.0-alpha.17 → 0.1.0-alpha.19

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 (91) hide show
  1. package/LICENSE +7 -0
  2. package/dist/bin/designsystemet.js +24 -28
  3. package/dist/src/colors/colorUtils.js +223 -315
  4. package/dist/src/colors/index.js +3 -3
  5. package/dist/src/colors/themeUtils.js +227 -319
  6. package/dist/src/colors/types.js +0 -1
  7. package/dist/src/init/createTokensPackage.js +223 -201
  8. package/dist/src/init/generateMetadataJson.js +19 -14
  9. package/dist/src/init/generateThemesJson.js +49 -40
  10. package/dist/src/init/index.js +7 -4
  11. package/dist/src/init/nextStepsMarkdown.js +15 -13
  12. package/dist/src/init/template/prettier.config.js +5 -7
  13. package/dist/src/init/template/template-files/package.json +1 -0
  14. package/dist/src/init/utils.js +11 -7
  15. package/dist/src/migrations/beta-to-v1.js +342 -339
  16. package/dist/src/migrations/codemods/css/plugins.js +40 -36
  17. package/dist/src/migrations/codemods/css/run.js +15 -20
  18. package/dist/src/migrations/codemods/jsx/classname-prefix.js +57 -63
  19. package/dist/src/migrations/codemods/jsx/run.js +17 -19
  20. package/dist/src/migrations/index.js +6 -3
  21. package/dist/src/migrations/react-beta-to-v1.js +4 -3
  22. package/dist/src/tokens/actions.js +25 -23
  23. package/dist/src/tokens/build.js +65 -51
  24. package/dist/src/tokens/configs.js +188 -223
  25. package/dist/src/tokens/formats/css.js +143 -150
  26. package/dist/src/tokens/formats/js-tokens.js +27 -26
  27. package/dist/src/tokens/transformers.js +39 -41
  28. package/dist/src/tokens/utils/noCase.js +25 -25
  29. package/dist/src/tokens/utils/permutateThemes.js +50 -64
  30. package/dist/src/tokens/utils/utils.js +12 -25
  31. package/package.json +8 -3
  32. package/dist/src/test/a.css +0 -39
  33. package/dist/src/test/jsx-test.js +0 -12
  34. package/dist/types/bin/designsystemet.d.ts +0 -3
  35. package/dist/types/bin/designsystemet.d.ts.map +0 -1
  36. package/dist/types/src/colors/colorUtils.d.ts +0 -126
  37. package/dist/types/src/colors/colorUtils.d.ts.map +0 -1
  38. package/dist/types/src/colors/index.d.ts +0 -4
  39. package/dist/types/src/colors/index.d.ts.map +0 -1
  40. package/dist/types/src/colors/themeUtils.d.ts +0 -102
  41. package/dist/types/src/colors/themeUtils.d.ts.map +0 -1
  42. package/dist/types/src/colors/types.d.ts +0 -16
  43. package/dist/types/src/colors/types.d.ts.map +0 -1
  44. package/dist/types/src/init/createTokensPackage.d.ts +0 -5
  45. package/dist/types/src/init/createTokensPackage.d.ts.map +0 -1
  46. package/dist/types/src/init/generateMetadataJson.d.ts +0 -6
  47. package/dist/types/src/init/generateMetadataJson.d.ts.map +0 -1
  48. package/dist/types/src/init/generateThemesJson.d.ts +0 -3
  49. package/dist/types/src/init/generateThemesJson.d.ts.map +0 -1
  50. package/dist/types/src/init/index.d.ts +0 -3
  51. package/dist/types/src/init/index.d.ts.map +0 -1
  52. package/dist/types/src/init/nextStepsMarkdown.d.ts +0 -3
  53. package/dist/types/src/init/nextStepsMarkdown.d.ts.map +0 -1
  54. package/dist/types/src/init/template/prettier.config.d.mts +0 -9
  55. package/dist/types/src/init/template/prettier.config.d.mts.map +0 -1
  56. package/dist/types/src/init/utils.d.ts +0 -4
  57. package/dist/types/src/init/utils.d.ts.map +0 -1
  58. package/dist/types/src/migrations/beta-to-v1.d.ts +0 -3
  59. package/dist/types/src/migrations/beta-to-v1.d.ts.map +0 -1
  60. package/dist/types/src/migrations/codemods/css/plugins.d.ts +0 -6
  61. package/dist/types/src/migrations/codemods/css/plugins.d.ts.map +0 -1
  62. package/dist/types/src/migrations/codemods/css/run.d.ts +0 -8
  63. package/dist/types/src/migrations/codemods/css/run.d.ts.map +0 -1
  64. package/dist/types/src/migrations/codemods/jsx/classname-prefix.d.ts +0 -10
  65. package/dist/types/src/migrations/codemods/jsx/classname-prefix.d.ts.map +0 -1
  66. package/dist/types/src/migrations/codemods/jsx/run.d.ts +0 -7
  67. package/dist/types/src/migrations/codemods/jsx/run.d.ts.map +0 -1
  68. package/dist/types/src/migrations/index.d.ts +0 -6
  69. package/dist/types/src/migrations/index.d.ts.map +0 -1
  70. package/dist/types/src/migrations/react-beta-to-v1.d.ts +0 -3
  71. package/dist/types/src/migrations/react-beta-to-v1.d.ts.map +0 -1
  72. package/dist/types/src/test/jsx-test.d.ts +0 -4
  73. package/dist/types/src/test/jsx-test.d.ts.map +0 -1
  74. package/dist/types/src/tokens/actions.d.ts +0 -6
  75. package/dist/types/src/tokens/actions.d.ts.map +0 -1
  76. package/dist/types/src/tokens/build.d.ts +0 -11
  77. package/dist/types/src/tokens/build.d.ts.map +0 -1
  78. package/dist/types/src/tokens/configs.d.ts +0 -31
  79. package/dist/types/src/tokens/configs.d.ts.map +0 -1
  80. package/dist/types/src/tokens/formats/css.d.ts +0 -5
  81. package/dist/types/src/tokens/formats/css.d.ts.map +0 -1
  82. package/dist/types/src/tokens/formats/js-tokens.d.ts +0 -6
  83. package/dist/types/src/tokens/formats/js-tokens.d.ts.map +0 -1
  84. package/dist/types/src/tokens/transformers.d.ts +0 -5
  85. package/dist/types/src/tokens/transformers.d.ts.map +0 -1
  86. package/dist/types/src/tokens/utils/noCase.d.ts +0 -11
  87. package/dist/types/src/tokens/utils/noCase.d.ts.map +0 -1
  88. package/dist/types/src/tokens/utils/permutateThemes.d.ts +0 -17
  89. package/dist/types/src/tokens/utils/permutateThemes.d.ts.map +0 -1
  90. package/dist/types/src/tokens/utils/utils.d.ts +0 -24
  91. package/dist/types/src/tokens/utils/utils.d.ts.map +0 -1
@@ -1,336 +1,244 @@
1
1
  import { BackgroundColor, Color, Theme } from "@adobe/leonardo-contrast-colors";
2
2
  import { Hsluv } from "hsluv";
3
- import { getContrastFromHex, getContrastFromLightness, getLightnessFromHex } from "./colorUtils.js";
4
- const blueBaseColor = '#0A71C0';
5
- const greenBaseColor = '#078D19';
6
- const orangeBaseColor = '#CA5C21';
7
- const purpleBaseColor = '#663299';
8
- const redBaseColor = '#C01B1B';
9
- const yellowBaseColor = '#EABF28';
10
- /**
11
- * Generates a Leonardo theme color that is used to create a Leonardo Theme
12
- *
13
- * @param color CssColor
14
- * @param mode Light, Dark or Contrastmode
15
- * @param contrastMode Contrast mode
16
- * @returns
17
- */ const generateThemeColor = (color, mode, contrastMode = 'aa')=>{
18
- const leoBackgroundColor = new BackgroundColor({
19
- name: 'backgroundColor',
20
- colorKeys: [
21
- '#ffffff'
22
- ],
23
- ratios: [
24
- 1
25
- ]
26
- });
27
- let colorLightness = getLightnessFromHex(color);
28
- if (mode === 'dark' || mode === 'contrast') {
29
- color = getBaseColor(color);
30
- colorLightness = colorLightness <= 30 ? 70 : 100 - colorLightness;
31
- }
32
- const multiplier = colorLightness <= 30 ? -8 : 8;
33
- const baseDefaultContrast = getContrastFromLightness(colorLightness, color, leoBackgroundColor.colorKeys[0]);
34
- const baseHoverContrast = getContrastFromLightness(colorLightness - multiplier, color, leoBackgroundColor.colorKeys[0]);
35
- const baseActiveContrast = getContrastFromLightness(colorLightness - multiplier * 2, color, leoBackgroundColor.colorKeys[0]);
36
- const textSubLightLightness = contrastMode === 'aa' ? 42 : 30;
37
- const textDefLightLightness = contrastMode === 'aa' ? 18 : 12;
38
- const textSubDarkLightness = contrastMode === 'aa' ? 67 : 80;
39
- const textDefDarkLightness = contrastMode === 'aa' ? 90 : 94;
40
- let lightnessScale = [];
41
- if (mode === 'light') {
42
- lightnessScale = [
43
- 100,
44
- 96,
45
- 90,
46
- 84,
47
- 78,
48
- 76,
49
- 54,
50
- 33,
51
- textSubLightLightness,
52
- textDefLightLightness
53
- ];
54
- } else if (mode === 'dark') {
55
- lightnessScale = [
56
- 10,
57
- 14,
58
- 20,
59
- 26,
60
- 32,
61
- 35,
62
- 47,
63
- 77,
64
- textSubDarkLightness,
65
- textDefDarkLightness
66
- ];
67
- } else {
68
- lightnessScale = [
69
- 1,
70
- 6,
71
- 14,
72
- 20,
73
- 26,
74
- 58,
75
- 70,
76
- 82,
77
- 80,
78
- 95
79
- ];
80
- }
81
- const getColorContrasts = (color, lightnessScale, backgroundColor)=>{
82
- return lightnessScale.map((lightness)=>getContrastFromLightness(lightness, color, backgroundColor));
83
- };
84
- return new Color({
85
- name: 'color',
86
- colorKeys: [
87
- color
88
- ],
89
- ratios: [
90
- ...getColorContrasts(color, lightnessScale.slice(0, 8), leoBackgroundColor.colorKeys[0]),
91
- baseDefaultContrast,
92
- baseHoverContrast,
93
- baseActiveContrast,
94
- ...getColorContrasts(color, lightnessScale.slice(8), leoBackgroundColor.colorKeys[0])
95
- ]
96
- });
3
+ import { getContrastFromHex, getContrastFromLightness, getLightnessFromHex } from "./colorUtils";
4
+ const blueBaseColor = "#0A71C0";
5
+ const greenBaseColor = "#078D19";
6
+ const orangeBaseColor = "#CA5C21";
7
+ const purpleBaseColor = "#663299";
8
+ const redBaseColor = "#C01B1B";
9
+ const yellowBaseColor = "#EABF28";
10
+ const generateThemeColor = (color, mode, contrastMode = "aa") => {
11
+ const leoBackgroundColor = new BackgroundColor({
12
+ name: "backgroundColor",
13
+ colorKeys: ["#ffffff"],
14
+ ratios: [1]
15
+ });
16
+ let colorLightness = getLightnessFromHex(color);
17
+ if (mode === "dark" || mode === "contrast") {
18
+ color = getBaseColor(color);
19
+ colorLightness = colorLightness <= 30 ? 70 : 100 - colorLightness;
20
+ }
21
+ const multiplier = colorLightness <= 30 ? -8 : 8;
22
+ const baseDefaultContrast = getContrastFromLightness(colorLightness, color, leoBackgroundColor.colorKeys[0]);
23
+ const baseHoverContrast = getContrastFromLightness(
24
+ colorLightness - multiplier,
25
+ color,
26
+ leoBackgroundColor.colorKeys[0]
27
+ );
28
+ const baseActiveContrast = getContrastFromLightness(
29
+ colorLightness - multiplier * 2,
30
+ color,
31
+ leoBackgroundColor.colorKeys[0]
32
+ );
33
+ const textSubLightLightness = contrastMode === "aa" ? 42 : 30;
34
+ const textDefLightLightness = contrastMode === "aa" ? 18 : 12;
35
+ const textSubDarkLightness = contrastMode === "aa" ? 67 : 80;
36
+ const textDefDarkLightness = contrastMode === "aa" ? 90 : 94;
37
+ let lightnessScale = [];
38
+ if (mode === "light") {
39
+ lightnessScale = [100, 96, 90, 84, 78, 76, 54, 33, textSubLightLightness, textDefLightLightness];
40
+ } else if (mode === "dark") {
41
+ lightnessScale = [10, 14, 20, 26, 32, 35, 47, 77, textSubDarkLightness, textDefDarkLightness];
42
+ } else {
43
+ lightnessScale = [1, 6, 14, 20, 26, 58, 70, 82, 80, 95];
44
+ }
45
+ const getColorContrasts = (color2, lightnessScale2, backgroundColor) => {
46
+ return lightnessScale2.map((lightness) => getContrastFromLightness(lightness, color2, backgroundColor));
47
+ };
48
+ return new Color({
49
+ name: "color",
50
+ colorKeys: [color],
51
+ ratios: [
52
+ ...getColorContrasts(color, lightnessScale.slice(0, 8), leoBackgroundColor.colorKeys[0]),
53
+ baseDefaultContrast,
54
+ baseHoverContrast,
55
+ baseActiveContrast,
56
+ ...getColorContrasts(color, lightnessScale.slice(8), leoBackgroundColor.colorKeys[0])
57
+ ]
58
+ });
97
59
  };
98
- /**
99
- *
100
- * Generates a color scale based on a base color and a mode.
101
- *
102
- * @param color The base color that is used to generate the color scale
103
- * @param mode The mode of the theme
104
- */ export const generateScaleForColor = (color, mode, contrastMode = 'aa')=>{
105
- const themeColor = generateThemeColor(color, mode, contrastMode);
106
- const leoBackgroundColor = new BackgroundColor({
107
- name: 'backgroundColor',
108
- colorKeys: [
109
- '#ffffff'
110
- ],
111
- ratios: [
112
- 1
113
- ]
114
- });
115
- const theme = new Theme({
116
- colors: [
117
- themeColor
118
- ],
119
- backgroundColor: leoBackgroundColor,
120
- lightness: 100
121
- });
122
- const outputArray = [];
123
- for(let i = 0; i < theme.contrastColorValues.length; i++){
124
- outputArray.push({
125
- hex: theme.contrastColorValues[i],
126
- number: i + 1,
127
- name: getColorNameFromNumber(i + 1)
128
- });
129
- }
130
- outputArray.push({
131
- hex: calculateContrastOneColor(theme.contrastColorValues[8]),
132
- number: 14,
133
- name: getColorNameFromNumber(14)
134
- });
60
+ const generateScaleForColor = (color, mode, contrastMode = "aa") => {
61
+ const themeColor = generateThemeColor(color, mode, contrastMode);
62
+ const leoBackgroundColor = new BackgroundColor({
63
+ name: "backgroundColor",
64
+ colorKeys: ["#ffffff"],
65
+ ratios: [1]
66
+ });
67
+ const theme = new Theme({
68
+ colors: [themeColor],
69
+ backgroundColor: leoBackgroundColor,
70
+ lightness: 100
71
+ });
72
+ const outputArray = [];
73
+ for (let i = 0; i < theme.contrastColorValues.length; i++) {
135
74
  outputArray.push({
136
- hex: calculateContrastTwoColor(theme.contrastColorValues[8]),
137
- number: 15,
138
- name: getColorNameFromNumber(15)
75
+ hex: theme.contrastColorValues[i],
76
+ number: i + 1,
77
+ name: getColorNameFromNumber(i + 1)
139
78
  });
140
- if (mode === 'light') {
141
- outputArray[8].hex = color;
142
- }
143
- return outputArray;
79
+ }
80
+ outputArray.push({
81
+ hex: calculateContrastOneColor(theme.contrastColorValues[8]),
82
+ number: 14,
83
+ name: getColorNameFromNumber(14)
84
+ });
85
+ outputArray.push({
86
+ hex: calculateContrastTwoColor(theme.contrastColorValues[8]),
87
+ number: 15,
88
+ name: getColorNameFromNumber(15)
89
+ });
90
+ if (mode === "light") {
91
+ outputArray[8].hex = color;
92
+ }
93
+ return outputArray;
144
94
  };
145
- /**
146
- *
147
- * Generates a color theme based on a base color. Light, Dark and Contrast scales are includes.
148
- *
149
- * @param color The base color that is used to generate the color theme
150
- */ export const generateThemeForColor = (color, contrastMode = 'aa')=>{
151
- const lightScale = generateScaleForColor(color, 'light', contrastMode);
152
- const darkScale = generateScaleForColor(color, 'dark', contrastMode);
153
- const contrastScale = generateScaleForColor(color, 'contrast', contrastMode);
154
- return {
155
- light: lightScale,
156
- dark: darkScale,
157
- contrast: contrastScale
158
- };
95
+ const generateThemeForColor = (color, contrastMode = "aa") => {
96
+ const lightScale = generateScaleForColor(color, "light", contrastMode);
97
+ const darkScale = generateScaleForColor(color, "dark", contrastMode);
98
+ const contrastScale = generateScaleForColor(color, "contrast", contrastMode);
99
+ return {
100
+ light: lightScale,
101
+ dark: darkScale,
102
+ contrast: contrastScale
103
+ };
159
104
  };
160
- export const generateGlobalColors = ({ contrastMode = 'aa' })=>{
161
- const blueTheme = generateThemeForColor(blueBaseColor, contrastMode);
162
- const greenTheme = generateThemeForColor(greenBaseColor, contrastMode);
163
- const orangeTheme = generateThemeForColor(orangeBaseColor, contrastMode);
164
- const purpleTheme = generateThemeForColor(purpleBaseColor, contrastMode);
165
- const redTheme = generateThemeForColor(redBaseColor, contrastMode);
166
- const yellowTheme = generateThemeForColor(yellowBaseColor, contrastMode);
167
- return {
168
- blue: blueTheme,
169
- green: greenTheme,
170
- orange: orangeTheme,
171
- purple: purpleTheme,
172
- red: redTheme,
173
- yellow: yellowTheme
174
- };
105
+ const generateGlobalColors = ({ contrastMode = "aa" }) => {
106
+ const blueTheme = generateThemeForColor(blueBaseColor, contrastMode);
107
+ const greenTheme = generateThemeForColor(greenBaseColor, contrastMode);
108
+ const orangeTheme = generateThemeForColor(orangeBaseColor, contrastMode);
109
+ const purpleTheme = generateThemeForColor(purpleBaseColor, contrastMode);
110
+ const redTheme = generateThemeForColor(redBaseColor, contrastMode);
111
+ const yellowTheme = generateThemeForColor(yellowBaseColor, contrastMode);
112
+ return {
113
+ blue: blueTheme,
114
+ green: greenTheme,
115
+ orange: orangeTheme,
116
+ purple: purpleTheme,
117
+ red: redTheme,
118
+ yellow: yellowTheme
119
+ };
175
120
  };
176
- /**
177
- * This function generates a complete theme for a set of colors.
178
- *
179
- * @param colors Which colors to generate the theme for
180
- * @param contrastMode The contrast mode to use
181
- * @returns
182
- */ export const generateColorTheme = ({ colors, contrastMode = 'aa' })=>{
183
- const accentTheme = generateThemeForColor(colors.accent, contrastMode);
184
- const neutralTheme = generateThemeForColor(colors.neutral, contrastMode);
185
- const brand1Theme = generateThemeForColor(colors.brand1, contrastMode);
186
- const brand2Theme = generateThemeForColor(colors.brand2, contrastMode);
187
- const brand3Theme = generateThemeForColor(colors.brand3, contrastMode);
188
- return {
189
- accent: accentTheme,
190
- neutral: neutralTheme,
191
- brand1: brand1Theme,
192
- brand2: brand2Theme,
193
- brand3: brand3Theme
194
- };
121
+ const generateColorTheme = ({ colors, contrastMode = "aa" }) => {
122
+ const accentTheme = generateThemeForColor(colors.accent, contrastMode);
123
+ const neutralTheme = generateThemeForColor(colors.neutral, contrastMode);
124
+ const brand1Theme = generateThemeForColor(colors.brand1, contrastMode);
125
+ const brand2Theme = generateThemeForColor(colors.brand2, contrastMode);
126
+ const brand3Theme = generateThemeForColor(colors.brand3, contrastMode);
127
+ return {
128
+ accent: accentTheme,
129
+ neutral: neutralTheme,
130
+ brand1: brand1Theme,
131
+ brand2: brand2Theme,
132
+ brand3: brand3Theme
133
+ };
195
134
  };
196
- /**
197
- *
198
- * This function calculates a color that can be used as a strong contrast color to a base color.
199
- *
200
- * @param baseColor The base color
201
- */ export const calculateContrastOneColor = (baseColor)=>{
202
- const contrastWhite = getContrastFromHex(baseColor, '#ffffff');
203
- const contrastBlack = getContrastFromHex(baseColor, '#000000');
204
- const lightness = contrastWhite >= contrastBlack ? 100 : 0;
205
- // const color = createColorWithLightness(baseColor, lightness);
206
- return lightness === 0 ? '#000000' : '#ffffff';
135
+ const calculateContrastOneColor = (baseColor) => {
136
+ const contrastWhite = getContrastFromHex(baseColor, "#ffffff");
137
+ const contrastBlack = getContrastFromHex(baseColor, "#000000");
138
+ const lightness = contrastWhite >= contrastBlack ? 100 : 0;
139
+ return lightness === 0 ? "#000000" : "#ffffff";
207
140
  };
208
- /**
209
- *
210
- * This function calculates a color that can be used as a subtle contrast color to a base color.
211
- *
212
- * @param color The base color
213
- */ export const calculateContrastTwoColor = (color)=>{
214
- const contrastWhite = getContrastFromHex(color, '#ffffff');
215
- const contrastBlack = getContrastFromHex(color, '#000000');
216
- const lightness = getLightnessFromHex(color);
217
- const doubleALightnessModifier = lightness <= 40 ? 60 : lightness >= 60 ? 60 : 50;
218
- let targetLightness = 0;
219
- const contrastDirection = contrastWhite >= contrastBlack ? 'lighten' : 'darken';
220
- targetLightness = contrastDirection === 'lighten' ? lightness + doubleALightnessModifier : lightness - doubleALightnessModifier;
221
- return createColorWithLightness(color, targetLightness);
141
+ const calculateContrastTwoColor = (color) => {
142
+ const contrastWhite = getContrastFromHex(color, "#ffffff");
143
+ const contrastBlack = getContrastFromHex(color, "#000000");
144
+ const lightness = getLightnessFromHex(color);
145
+ const doubleALightnessModifier = lightness <= 40 ? 60 : lightness >= 60 ? 60 : 50;
146
+ let targetLightness = 0;
147
+ const contrastDirection = contrastWhite >= contrastBlack ? "lighten" : "darken";
148
+ targetLightness = contrastDirection === "lighten" ? lightness + doubleALightnessModifier : lightness - doubleALightnessModifier;
149
+ return createColorWithLightness(color, targetLightness);
222
150
  };
223
- /**
224
- *
225
- * This function checks if white or black text can be used on 2 different colors at 4.5:1 contrast.
226
- *
227
- * @param baseDefaultColor Base default color
228
- * @param baseActiveColor Base active color
229
- */ export const canTextBeUsedOnColors = (baseDefaultColor, baseActiveColor)=>{
230
- const defaultAgainstWhite = getContrastFromHex(baseDefaultColor, '#ffffff');
231
- const defaultAgainstBlack = getContrastFromHex(baseDefaultColor, '#000000');
232
- const activeAgainstWhite = getContrastFromHex(baseActiveColor, '#ffffff');
233
- const activeAgainstBlack = getContrastFromHex(baseActiveColor, '#000000');
234
- if (defaultAgainstWhite >= 4.5 && activeAgainstWhite >= 4.5) {
235
- return true;
236
- } else if (defaultAgainstBlack >= 4.5 && activeAgainstBlack >= 4.5) {
237
- return true;
238
- }
239
- return false;
151
+ const canTextBeUsedOnColors = (baseDefaultColor, baseActiveColor) => {
152
+ const defaultAgainstWhite = getContrastFromHex(baseDefaultColor, "#ffffff");
153
+ const defaultAgainstBlack = getContrastFromHex(baseDefaultColor, "#000000");
154
+ const activeAgainstWhite = getContrastFromHex(baseActiveColor, "#ffffff");
155
+ const activeAgainstBlack = getContrastFromHex(baseActiveColor, "#000000");
156
+ if (defaultAgainstWhite >= 4.5 && activeAgainstWhite >= 4.5) {
157
+ return true;
158
+ } else if (defaultAgainstBlack >= 4.5 && activeAgainstBlack >= 4.5) {
159
+ return true;
160
+ }
161
+ return false;
240
162
  };
241
- /**
242
- *
243
- * This function creates a color with a specific lightness value.
244
- *
245
- * @param color The base color
246
- * @param lightness The lightness value from 0 to 100
247
- */ export const createColorWithLightness = (color, lightness)=>{
248
- const leoBackgroundColor = new BackgroundColor({
249
- name: 'backgroundColor',
250
- colorKeys: [
251
- '#ffffff'
252
- ],
253
- ratios: [
254
- 1
255
- ]
256
- });
257
- const colors = new Color({
258
- name: 'color',
259
- colorKeys: [
260
- color
261
- ],
262
- ratios: [
263
- getContrastFromLightness(lightness, color, '#ffffff')
264
- ]
265
- });
266
- const theme = new Theme({
267
- colors: [
268
- colors
269
- ],
270
- backgroundColor: leoBackgroundColor,
271
- lightness: 100
272
- });
273
- return theme.contrastColorValues[0];
163
+ const createColorWithLightness = (color, lightness) => {
164
+ const leoBackgroundColor = new BackgroundColor({
165
+ name: "backgroundColor",
166
+ colorKeys: ["#ffffff"],
167
+ ratios: [1]
168
+ });
169
+ const colors = new Color({
170
+ name: "color",
171
+ colorKeys: [color],
172
+ ratios: [getContrastFromLightness(lightness, color, "#ffffff")]
173
+ });
174
+ const theme = new Theme({
175
+ colors: [colors],
176
+ backgroundColor: leoBackgroundColor,
177
+ lightness: 100
178
+ });
179
+ return theme.contrastColorValues[0];
180
+ };
181
+ const getColorNumberFromName = (name) => {
182
+ const colorMap = {
183
+ "Background Default": 1,
184
+ "Background Subtle": 2,
185
+ "Surface Default": 3,
186
+ "Surface Hover": 4,
187
+ "Surface Active": 5,
188
+ "Border Subtle": 6,
189
+ "Border Default": 7,
190
+ "Border Strong": 8,
191
+ "Base Default": 9,
192
+ "Base Hover": 10,
193
+ "Base Active": 11,
194
+ "Text Subtle": 12,
195
+ "Text Default": 13,
196
+ "Contrast Default": 14,
197
+ "Contrast Subtle": 15
198
+ };
199
+ return colorMap[name];
274
200
  };
275
- /**
276
- *
277
- * This function returns the color number based on the color name.
278
- *
279
- * @param name The name of the color
280
- */ export const getColorNumberFromName = (name)=>{
281
- const colorMap = {
282
- 'Background Default': 1,
283
- 'Background Subtle': 2,
284
- 'Surface Default': 3,
285
- 'Surface Hover': 4,
286
- 'Surface Active': 5,
287
- 'Border Subtle': 6,
288
- 'Border Default': 7,
289
- 'Border Strong': 8,
290
- 'Base Default': 9,
291
- 'Base Hover': 10,
292
- 'Base Active': 11,
293
- 'Text Subtle': 12,
294
- 'Text Default': 13,
295
- 'Contrast Default': 14,
296
- 'Contrast Subtle': 15
297
- };
298
- return colorMap[name];
201
+ const getColorNameFromNumber = (number) => {
202
+ const colorMap = {
203
+ 1: "Background Default",
204
+ 2: "Background Subtle",
205
+ 3: "Surface Default",
206
+ 4: "Surface Hover",
207
+ 5: "Surface Active",
208
+ 6: "Border Subtle",
209
+ 7: "Border Default",
210
+ 8: "Border Strong",
211
+ 9: "Base Default",
212
+ 10: "Base Hover",
213
+ 11: "Base Active",
214
+ 12: "Text Subtle",
215
+ 13: "Text Default",
216
+ 14: "Contrast Default",
217
+ 15: "Contrast Subtle"
218
+ };
219
+ return colorMap[number];
299
220
  };
300
- /**
301
- *
302
- * This function returns the color name based on the color number.
303
- *
304
- * @param number The number of the color
305
- */ export const getColorNameFromNumber = (number)=>{
306
- const colorMap = {
307
- 1: 'Background Default',
308
- 2: 'Background Subtle',
309
- 3: 'Surface Default',
310
- 4: 'Surface Hover',
311
- 5: 'Surface Active',
312
- 6: 'Border Subtle',
313
- 7: 'Border Default',
314
- 8: 'Border Strong',
315
- 9: 'Base Default',
316
- 10: 'Base Hover',
317
- 11: 'Base Active',
318
- 12: 'Text Subtle',
319
- 13: 'Text Default',
320
- 14: 'Contrast Default',
321
- 15: 'Contrast Subtle'
322
- };
323
- return colorMap[number];
221
+ const getBaseColor = (color) => {
222
+ const conv = new Hsluv();
223
+ conv.hex = color;
224
+ conv.hexToHsluv();
225
+ conv.hsluvToHex();
226
+ return conv.hex;
324
227
  };
325
- export const getBaseColor = (color)=>{
326
- const conv = new Hsluv();
327
- conv.hex = color;
328
- conv.hexToHsluv();
329
- // conv.hsluv_l = 100 - conv.hsluv_l;
330
- // conv.hsluv_s = getSaturationForDarkMode(color, conv.hsluv_s);
331
- conv.hsluvToHex();
332
- return conv.hex;
228
+ const getCssVariable = (colorType, colorNumber) => {
229
+ return `--ds-${colorType}-${getColorNameFromNumber(colorNumber).toLowerCase().replace(/\s/g, "-")}`;
333
230
  };
334
- export const getCssVariable = (colorType, colorNumber)=>{
335
- return `--ds-${colorType}-${getColorNameFromNumber(colorNumber).toLowerCase().replace(/\s/g, '-')}`;
231
+ export {
232
+ calculateContrastOneColor,
233
+ calculateContrastTwoColor,
234
+ canTextBeUsedOnColors,
235
+ createColorWithLightness,
236
+ generateColorTheme,
237
+ generateGlobalColors,
238
+ generateScaleForColor,
239
+ generateThemeForColor,
240
+ getBaseColor,
241
+ getColorNameFromNumber,
242
+ getColorNumberFromName,
243
+ getCssVariable
336
244
  };
@@ -1 +0,0 @@
1
- export { };