@data-fair/lib-common-types 1.20.5 → 1.20.6
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.
- package/package.json +1 -1
- package/theme/index.js +54 -24
- package/theme/index.js.map +1 -1
package/package.json
CHANGED
package/theme/index.js
CHANGED
|
@@ -288,7 +288,9 @@ const messages = {
|
|
|
288
288
|
'theme.hc': 'à contraste élevé',
|
|
289
289
|
'theme.hcDark': 'sombre à contraste élevé',
|
|
290
290
|
readableWarning: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\'est pas suffisamment lisible par-dessus la couleur {bgColorName} ({bgColorCode})',
|
|
291
|
-
|
|
291
|
+
readableWarningAggregated: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\'est pas suffisamment lisible par-dessus : {bgList}',
|
|
292
|
+
bgSolid: '{bgColorName} ({bgColorCode})',
|
|
293
|
+
bgTonal: 'variante tonale {baseName} ({tonalBgCode}) sur {bgColorName}',
|
|
292
294
|
authProvider: 'du fournisseur d\'identité {title}',
|
|
293
295
|
white: 'blanche',
|
|
294
296
|
text: 'de texte',
|
|
@@ -318,7 +320,9 @@ const messages = {
|
|
|
318
320
|
'theme.hc': 'high contrast',
|
|
319
321
|
'theme.hcDark': 'high contrast dark',
|
|
320
322
|
readableWarning: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over the {bgColorName} color ({bgColorCode})',
|
|
321
|
-
|
|
323
|
+
readableWarningAggregated: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over: {bgList}',
|
|
324
|
+
bgSolid: '{bgColorName} ({bgColorCode})',
|
|
325
|
+
bgTonal: 'tonal variant of {baseName} ({tonalBgCode}) on {bgColorName}',
|
|
322
326
|
authProvider: 'auth provider {title}',
|
|
323
327
|
white: 'white',
|
|
324
328
|
text: 'text',
|
|
@@ -346,40 +350,66 @@ const messages = {
|
|
|
346
350
|
const getMessage = (locale, messageKey, params = {}) => {
|
|
347
351
|
return microTemplate(messages[locale][messageKey], params);
|
|
348
352
|
};
|
|
349
|
-
function readableWarning(readableOptions, locale, colorCode, colorName, bgColorCode, bgColorName, themeName) {
|
|
350
|
-
if (!colorCode || !bgColorCode)
|
|
351
|
-
return;
|
|
352
|
-
if (!tinycolor.isReadable(colorCode, bgColorCode, readableOptions)) {
|
|
353
|
-
return getMessage(locale, 'readableWarning', { colorCode, colorName: getMessage(locale, `${colorName}`), bgColorCode, bgColorName: getMessage(locale, `${bgColorName}`), themeName: getMessage(locale, `theme.${themeName}`) });
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
function tonalReadableWarning(readableOptions, locale, colorCode, colorName, baseCode, baseName, bgColorCode, bgColorName, themeName) {
|
|
357
|
-
if (!colorCode || !baseCode || !bgColorCode)
|
|
358
|
-
return;
|
|
359
|
-
const tonalBgCode = getTonalBg(baseCode, bgColorCode);
|
|
360
|
-
if (!tinycolor.isReadable(colorCode, tonalBgCode, readableOptions)) {
|
|
361
|
-
return getMessage(locale, 'tonalReadableWarning', { colorCode, colorName: getMessage(locale, `${colorName}`), tonalBgCode, baseName: getMessage(locale, `${baseName}`), bgColorName: getMessage(locale, `${bgColorName}`), themeName: getMessage(locale, `theme.${themeName}`) });
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
353
|
export function getColorsWarnings(locale, colors, themeName, readableOptions) {
|
|
365
354
|
if (locale !== 'fr' && locale !== 'en')
|
|
366
355
|
locale = 'en';
|
|
367
|
-
const
|
|
356
|
+
const culprits = new Map();
|
|
357
|
+
const getCulprit = (colorName, colorCode) => {
|
|
358
|
+
const key = `${colorName}::${colorCode}`;
|
|
359
|
+
let c = culprits.get(key);
|
|
360
|
+
if (!c) {
|
|
361
|
+
c = { colorName, colorCode, bgs: [], failedSolid: new Set() };
|
|
362
|
+
culprits.set(key, c);
|
|
363
|
+
}
|
|
364
|
+
return c;
|
|
365
|
+
};
|
|
366
|
+
const checkSolid = (colorCode, colorName, bgColorCode, bgColorName) => {
|
|
367
|
+
if (!colorCode || !bgColorCode)
|
|
368
|
+
return;
|
|
369
|
+
if (tinycolor.isReadable(colorCode, bgColorCode, readableOptions))
|
|
370
|
+
return;
|
|
371
|
+
const c = getCulprit(colorName, colorCode);
|
|
372
|
+
c.bgs.push(getMessage(locale, 'bgSolid', { bgColorCode, bgColorName: getMessage(locale, bgColorName) }));
|
|
373
|
+
c.failedSolid.add(bgColorName);
|
|
374
|
+
};
|
|
375
|
+
const checkTonal = (colorCode, colorName, baseCode, baseName, bgColorCode, bgColorName) => {
|
|
376
|
+
if (!colorCode || !baseCode || !bgColorCode)
|
|
377
|
+
return;
|
|
378
|
+
// if the solid check against this same bg already failed, the tonal variant
|
|
379
|
+
// would add a redundant warning about the same root cause — skip it
|
|
380
|
+
const existing = culprits.get(`${colorName}::${colorCode}`);
|
|
381
|
+
if (existing?.failedSolid.has(bgColorName))
|
|
382
|
+
return;
|
|
383
|
+
const tonalBgCode = getTonalBg(baseCode, bgColorCode);
|
|
384
|
+
if (tinycolor.isReadable(colorCode, tonalBgCode, readableOptions))
|
|
385
|
+
return;
|
|
386
|
+
const c = getCulprit(colorName, colorCode);
|
|
387
|
+
c.bgs.push(getMessage(locale, 'bgTonal', { tonalBgCode, baseName: getMessage(locale, baseName), bgColorName: getMessage(locale, bgColorName) }));
|
|
388
|
+
};
|
|
368
389
|
for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {
|
|
369
390
|
const textColor = colors[`text-${color}`] ?? colors[color];
|
|
370
|
-
|
|
371
|
-
|
|
391
|
+
checkSolid(textColor, `text-${color}`, colors.background, 'background');
|
|
392
|
+
checkSolid(textColor, `text-${color}`, colors.surface, 'surface');
|
|
372
393
|
}
|
|
373
394
|
for (const color of ['background', 'surface', 'surface-inverse', 'primary', 'secondary', 'accent', 'info', 'success', 'error', 'warning', 'admin']) {
|
|
374
|
-
|
|
395
|
+
checkSolid(colors[`on-${color}`], 'text', colors[color], color);
|
|
375
396
|
}
|
|
376
397
|
for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {
|
|
377
398
|
const textColor = colors[`text-${color}`] ?? colors[color];
|
|
378
399
|
const baseColor = colors[color];
|
|
379
|
-
|
|
380
|
-
|
|
400
|
+
checkTonal(textColor, `text-${color}`, baseColor, color, colors.background, 'background');
|
|
401
|
+
checkTonal(textColor, `text-${color}`, baseColor, color, colors.surface, 'surface');
|
|
381
402
|
}
|
|
382
|
-
|
|
403
|
+
const warnings = [];
|
|
404
|
+
for (const c of culprits.values()) {
|
|
405
|
+
warnings.push(getMessage(locale, 'readableWarningAggregated', {
|
|
406
|
+
colorName: getMessage(locale, c.colorName),
|
|
407
|
+
colorCode: c.colorCode,
|
|
408
|
+
themeName: getMessage(locale, `theme.${themeName}`),
|
|
409
|
+
bgList: c.bgs.join('; ')
|
|
410
|
+
}));
|
|
411
|
+
}
|
|
412
|
+
return warnings;
|
|
383
413
|
}
|
|
384
414
|
export const readableOptions = { level: 'AA', size: 'small' };
|
|
385
415
|
export const hcReadableOptions = { level: 'AAA', size: 'small' };
|
package/theme/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Colors, type Theme } from './.type/index.js'\nimport clone from '@data-fair/lib-utils/clone.js'\nimport microTemplate from '@data-fair/lib-utils/micro-template.js'\nimport tinycolor from 'tinycolor2'\n\nexport * from './.type/index.js'\n\nexport const defaultTheme = {\n logo: undefined,\n bodyFontFamily: 'Nunito',\n bodyFontFamilyCss: \"@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaORs71cA-Bm_i0Dk1.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaHRs71cA-Cznx39fA.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaMRs71cA-CuWrHpFO.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaNRs71cA-D1eeM49Z.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaDRs4-BbMn9XSX.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIOOaBXso-BWI5zH9R.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIMeaBXso-C3IBG1kp.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIOuaBXso-B55YuedR.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIO-aBXso-DcJfvmGA.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofINeaB-BaTF6Vo7.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\",\n headingFontFamily: undefined,\n headingFontFamilyCss: undefined,\n colors: {\n // standard vuetify colors, see https://vuetifyjs.com/en/styles/colors/#material-colors\n background: '#FAFAFA', // grey-lighten-5\n 'on-background': '#424242', // grey-darken-3\n surface: '#FFFFFF',\n 'on-surface': '#424242', // grey-darken-3\n 'surface-inverse': '#424242', // grey-darken-3\n 'on-surface-inverse': '#FFFFFF',\n // Primary / secondary / accent forms an anlogous trio (blue / light blue / indigo)\n primary: '#1976D2', // blue-darken-2\n 'on-primary': '#FFFFFF',\n 'text-primary': '#1565C0', // blue-darken-3\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#01579B', // light-blue-darken-4\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#283593', // indigo-darken-3\n // Info and warning are variants of orange (light for info, dark for warning)\n // a natural complementary color for the dominant blue\n info: '#FFCC80', // orange-lighten-4\n 'on-info': '#000000',\n 'text-info': '#BF4300',\n warning: '#BF360A', // deep-orange-darken-4\n 'on-warning': '#FFFFFF',\n 'text-warning': '#8B2500',\n // error, success and admin are not very important\n // reserved for very specific UI element where semantics are more important than esthetics\n error: '#D50000', // red-accent-4\n 'on-error': '#FFFFFF',\n 'text-error': '#B71C1C', // red-darken-4\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': '#2E7D32', // green-darken-3\n admin: '#B71C1C', // red-darken-4\n 'on-admin': '#FFFFFF',\n 'text-admin': '#B71C1C', // red-darken-4\n },\n dark: false,\n darkColors: {\n background: '#303030', // slightly darker than surface\n 'on-background': '#FFFFFF', // white\n surface: '#424242', // grey-darken-3\n 'on-surface': '#FFFFFF', // white\n 'surface-inverse': '#FAFAFA', // grey-lighten-5\n 'on-surface-inverse': '#424242', // grey-darken-3\n primary: '#1976D2', // blue-darken-2\n 'on-primary': '#FFFFFF', // white\n 'text-primary': '#90CAF9', // blue-lighten-3\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#81D4FA', // light-blue-lighten-3\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#C5CAE9', // indigo-lighten-4\n info: '#FFE0B2',\n 'on-info': '#000000',\n 'text-info': undefined,\n warning: '#BF360A', // deep-orange-darken-4\n 'on-warning': '#FFFFFF',\n 'text-warning': '#FFAB40', // orange-accent-2\n error: '#D50000', // red-accent-4\n 'on-error': '#FFFFFF',\n 'text-error': '#FFCDD2', // red-lighten-4\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': undefined,\n admin: '#B71C1C', // red-darken-4\n 'on-admin': '#FFFFFF',\n 'text-admin': '#FFCDD2'\n },\n hc: false,\n hcColors: {\n // standard vuetify colors, see https://vuetifyjs.com/en/styles/colors/#material-colors\n background: '#FFFFFF',\n 'on-background': '#000000',\n surface: '#FFFFFF',\n 'on-surface': '#000000',\n 'surface-inverse': '#212121', // grey-darken-4\n 'on-surface-inverse': '#FFFFFF',\n primary: '#0D47A1', // blue-darken-4\n 'on-primary': '#FFFFFF',\n 'text-primary': undefined,\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#003A6B', // custom light-blue-darken-5\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#283593', // indigo-darken-3\n info: '#FFE0B2', // orange-lighten-4\n 'on-info': '#000000',\n 'text-info': '#993500',\n warning: '#6D1B00', // custom deep-orange-darken-5\n 'on-warning': '#FFFFFF',\n 'text-warning': undefined,\n error: '#b30000',\n 'on-error': '#FFFFFF',\n 'text-error': '#8B0000',\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': '#1B5E20', // green-darken-4\n admin: '#b30000',\n 'on-admin': '#FFFFFF',\n 'text-admin': '#8B0000',\n },\n hcDark: false,\n hcDarkColors: {\n background: '#121212',\n 'on-background': '#FFFFFF', // white\n surface: '#121212',\n 'on-surface': '#FFFFFF', // white\n 'surface-inverse': '#FFFFFF', // white\n 'on-surface-inverse': '#000000',\n primary: '#0D47A1', // blue-darken-4\n 'on-primary': '#FFFFFF', // white\n 'text-primary': '#BBDEFB', // blue-lighten-4\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#81D4FA', // light-blue-lighten-3\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#C5CAE9', // indigo-lighten-4\n info: '#FFE0B2',\n 'on-info': '#000000',\n 'text-info': undefined,\n warning: '#6D1B00', // custom deep-orange-darken-5\n 'on-warning': '#FFFFFF',\n 'text-warning': '#FFAB40', // orange-accent-2\n error: '#b30000',\n 'on-error': '#FFFFFF',\n 'text-error': '#FF8A80', // red-accent-1\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': undefined,\n admin: '#b30000',\n 'on-admin': '#FFFFFF',\n 'text-admin': '#FFCDD2'\n },\n}\n\nexport const getTextColorsCss = (colors: Colors, theme: string) => {\n let css = ''\n\n // by default give the text-primary color to links with the \"simple-link\" class\n if (colors['text-primary']) {\n css += `\n.v-theme--${theme} a.simple-link { color: ${colors['text-primary']}; text-decoration: none; }`\n }\n\n for (const color of ['surface-inverse', 'primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n // create a text-color class to apply text-* color variants\n // always emit the rule (falling back to the base color via the vuetify CSS var)\n // to prevent a parent theme's text-* rule from cascading into nested theme providers\n const textKey = `text-${color}` as keyof Colors\n const textValue = colors[textKey] ?? `rgb(var(--v-theme-${color}))`\n css += `\n.v-theme--${theme} .text-${color}:not(.v-btn--disabled) { color: ${textValue}!important; }`\n\n // apply the on-* color variants to links (they are ignored by vuetify by default)\n const onKey = `on-${color}` as keyof Colors\n if (colors[onKey]) {\n css += `\n.v-theme--${theme} .bg-${color} a.simple-link { color: ${colors[onKey]} }`\n }\n }\n return css\n}\n\nexport const getReadableColor = (baseColor: string, bgColors: string [], darkMode: boolean, level: 'AA' | 'AAA') => {\n const c = tinycolor(baseColor)\n while (!bgColors.every(bgColor => tinycolor.isReadable(c, bgColor, { level, size: 'small' }))) {\n if (darkMode) {\n if (c.getBrightness() === 255) break\n c.brighten(1)\n } else {\n if (c.getBrightness() === 0) break\n c.darken(1)\n }\n }\n return c.toHexString()\n}\n\nexport const getTonalBg = (color: string, bgColor: string) => {\n // Vuetify variant=\"tonal\" renders the color as a ~12% opacity overlay\n // over the underlying surface. Compositing color at 12% over bgColor\n // is equivalent to mixing bgColor with 12% of color.\n return tinycolor.mix(bgColor, color, 12).toHexString()\n}\n\nexport const getOnColor = (color: string) => {\n // priority to white text if it is readable\n if (tinycolor.isReadable(color, '#FFFFFF', { level: 'AA', size: 'small' })) return '#FFFFFF'\n return tinycolor.mostReadable(color, ['#000000', '#FFFFFF']).toHexString()\n}\n\nexport const fillTheme = (theme: Theme, defaultTheme: Theme) => {\n const fullTheme = clone(theme)\n if (fullTheme.assistedMode && fullTheme.assistedModeColors) {\n if (!defaultTheme.darkColors) throw new Error('darkColors is missing in default theme')\n if (!defaultTheme.hcColors) throw new Error('hcColors is missing in default theme')\n if (!defaultTheme.hcDarkColors) throw new Error('hcDarkColors is missing in default theme')\n fullTheme.assistedModeColors.primary = fullTheme.assistedModeColors.primary ?? fullTheme.colors.primary\n fullTheme.assistedModeColors.secondary = fullTheme.assistedModeColors.secondary ?? fullTheme.colors.secondary\n fullTheme.assistedModeColors.accent = fullTheme.assistedModeColors.accent ?? fullTheme.colors.accent\n fullTheme.colors = clone(defaultTheme.colors)\n fullTheme.darkColors = clone(defaultTheme.darkColors)\n fullTheme.hcColors = clone(defaultTheme.hcColors)\n fullTheme.hcDarkColors = clone(defaultTheme.hcDarkColors)\n const customColors = {\n primary: fullTheme.assistedModeColors.primary,\n secondary: fullTheme.assistedModeColors.secondary,\n accent: fullTheme.assistedModeColors.accent,\n 'on-primary': getOnColor(fullTheme.assistedModeColors.primary),\n 'on-secondary': getOnColor(fullTheme.assistedModeColors.secondary),\n 'on-accent': getOnColor(fullTheme.assistedModeColors.accent)\n }\n\n Object.assign(fullTheme.colors, customColors)\n Object.assign(fullTheme.darkColors, customColors)\n Object.assign(fullTheme.hcColors, customColors)\n Object.assign(fullTheme.hcDarkColors, customColors)\n const textBgColors = (c: Colors, key: 'primary' | 'secondary' | 'accent') => {\n const base = c[key] as string\n return [\n c.background,\n c.surface,\n getTonalBg(base, c.background),\n getTonalBg(base, c.surface)\n ]\n }\n fullTheme.colors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.colors, 'primary'), false, 'AA')\n fullTheme.colors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.colors, 'secondary'), false, 'AA')\n fullTheme.colors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.colors, 'accent'), false, 'AA')\n fullTheme.darkColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.darkColors, 'primary'), true, 'AA')\n fullTheme.darkColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.darkColors, 'secondary'), true, 'AA')\n fullTheme.darkColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.darkColors, 'accent'), true, 'AA')\n fullTheme.hcColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.hcColors, 'primary'), false, 'AAA')\n fullTheme.hcColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.hcColors, 'secondary'), false, 'AAA')\n fullTheme.hcColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.hcColors, 'accent'), false, 'AAA')\n fullTheme.hcDarkColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.hcDarkColors, 'primary'), true, 'AAA')\n fullTheme.hcDarkColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.hcDarkColors, 'secondary'), true, 'AAA')\n fullTheme.hcDarkColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.hcDarkColors, 'accent'), true, 'AAA')\n } else {\n fullTheme.assistedModeColors = {\n primary: fullTheme.colors.primary,\n secondary: fullTheme.colors.secondary,\n accent: fullTheme.colors.accent,\n }\n }\n // vuetify is sensitive to undefined keys, better to delete them\n for (const key of Object.keys(fullTheme.colors) as (keyof Colors)[]) {\n if (fullTheme.colors[key] === undefined) delete fullTheme.colors[key]\n }\n if (fullTheme.darkColors) {\n for (const key of Object.keys(fullTheme.darkColors) as (keyof Colors)[]) {\n if (fullTheme.darkColors[key] === undefined) delete fullTheme.darkColors[key]\n }\n }\n if (fullTheme.hcColors) {\n for (const key of Object.keys(fullTheme.hcColors) as (keyof Colors)[]) {\n if (fullTheme.hcColors[key] === undefined) delete fullTheme.hcColors[key]\n }\n }\n if (fullTheme.hcDarkColors) {\n for (const key of Object.keys(fullTheme.hcDarkColors) as (keyof Colors)[]) {\n if (fullTheme.hcDarkColors[key] === undefined) delete fullTheme.hcDarkColors[key]\n }\n }\n return fullTheme as Required<Pick<Theme, 'darkColors' | 'hcColors' | 'hcDarkColors'>> & Theme\n}\n\nconst messages: Record<string, Record<string, string>> = {\n fr: {\n 'theme.default': 'par défaut',\n 'theme.dark': 'sombre',\n 'theme.hc': 'à contraste élevé',\n 'theme.hcDark': 'sombre à contraste élevé',\n readableWarning: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\\'est pas suffisamment lisible par-dessus la couleur {bgColorName} ({bgColorCode})',\n tonalReadableWarning: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\\'est pas suffisamment lisible par-dessus la variante tonale {baseName} ({tonalBgCode}) au-dessus de la couleur {bgColorName}',\n authProvider: 'du fournisseur d\\'identité {title}',\n white: 'blanche',\n text: 'de texte',\n background: 'd\\'arrière plan',\n surface: 'de surface',\n 'surface-inverse': 'de surface avec contraste inversé',\n primary: 'primaire',\n 'text-primary': 'texte primaire',\n secondary: 'secondaire',\n 'text-secondary': 'texte secondaire',\n accent: 'accentuée',\n 'text-accent': 'texte accentué',\n info: 'd\\'information',\n 'text-info': 'texte d\\'information',\n warning: 'd\\'avertissement',\n 'text-warning': 'texte d\\'avertissement',\n error: 'd\\'erreur',\n 'text-error': 'texte d\\'erreur',\n success: 'de succès',\n 'text-success': 'texte de succès',\n admin: 'd\\'administration',\n 'text-admin': 'texte d\\'administration',\n },\n en: {\n 'theme.default': 'default',\n 'theme.dark': 'dark',\n 'theme.hc': 'high contrast',\n 'theme.hcDark': 'high contrast dark',\n readableWarning: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over the {bgColorName} color ({bgColorCode})',\n tonalReadableWarning: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over the tonal variant of {baseName} ({tonalBgCode}) on top of {bgColorName}',\n authProvider: 'auth provider {title}',\n white: 'white',\n text: 'text',\n background: 'background',\n surface: 'surface',\n 'surface-inverse': 'surface with inverted contrast',\n primary: 'primary',\n 'text-primary': 'primary text',\n secondary: 'secondary',\n 'text-secondary': 'secondary text',\n accent: 'accent',\n 'text-accent': 'accent text',\n info: 'info',\n 'text-info': 'info text',\n warning: 'warning',\n 'text-warning': 'warning text',\n error: 'error',\n 'text-error': 'error text',\n success: 'success',\n 'text-success': 'success text',\n admin: 'admin',\n 'text-admin': 'admin text'\n }\n}\n\nconst getMessage = (locale: 'en' | 'fr', messageKey: string, params: Record<string, string> = {}) => {\n return microTemplate(messages[locale][messageKey] as string, params)\n}\n\nfunction readableWarning (readableOptions: tinycolor.WCAG2Options, locale: 'en' | 'fr', colorCode: string | undefined, colorName: string, bgColorCode: string | undefined, bgColorName: string, themeName: string) {\n if (!colorCode || !bgColorCode) return\n if (!tinycolor.isReadable(colorCode, bgColorCode, readableOptions)) {\n return getMessage(locale, 'readableWarning', { colorCode, colorName: getMessage(locale, `${colorName}`), bgColorCode, bgColorName: getMessage(locale, `${bgColorName}`), themeName: getMessage(locale, `theme.${themeName}`) })\n }\n}\n\nfunction tonalReadableWarning (readableOptions: tinycolor.WCAG2Options, locale: 'en' | 'fr', colorCode: string | undefined, colorName: string, baseCode: string | undefined, baseName: string, bgColorCode: string | undefined, bgColorName: string, themeName: string) {\n if (!colorCode || !baseCode || !bgColorCode) return\n const tonalBgCode = getTonalBg(baseCode, bgColorCode)\n if (!tinycolor.isReadable(colorCode, tonalBgCode, readableOptions)) {\n return getMessage(locale, 'tonalReadableWarning', { colorCode, colorName: getMessage(locale, `${colorName}`), tonalBgCode, baseName: getMessage(locale, `${baseName}`), bgColorName: getMessage(locale, `${bgColorName}`), themeName: getMessage(locale, `theme.${themeName}`) })\n }\n}\n\nexport function getColorsWarnings (locale: 'en' | 'fr', colors: Colors, themeName: string, readableOptions: tinycolor.WCAG2Options): string[] {\n if (locale !== 'fr' && locale !== 'en') locale = 'en'\n const warnings: (string | undefined)[] = []\n for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n const textColor = colors[`text-${color}` as keyof Colors] ?? colors[color as keyof Colors]\n warnings.push(readableWarning(readableOptions, locale, textColor, `text-${color}`, colors.background, 'background', themeName))\n warnings.push(readableWarning(readableOptions, locale, textColor, `text-${color}`, colors.surface, 'surface', themeName))\n }\n for (const color of ['background', 'surface', 'surface-inverse', 'primary', 'secondary', 'accent', 'info', 'success', 'error', 'warning', 'admin']) {\n warnings.push(readableWarning(readableOptions, locale, colors[`on-${color}` as keyof Colors], 'text', colors[color as keyof Colors], color, themeName))\n }\n for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n const textColor = colors[`text-${color}` as keyof Colors] ?? colors[color as keyof Colors]\n const baseColor = colors[color as keyof Colors]\n warnings.push(tonalReadableWarning(readableOptions, locale, textColor, `text-${color}`, baseColor, color, colors.background, 'background', themeName))\n warnings.push(tonalReadableWarning(readableOptions, locale, textColor, `text-${color}`, baseColor, color, colors.surface, 'surface', themeName))\n }\n return warnings.filter(w => w !== undefined)\n}\n\nexport const readableOptions: tinycolor.WCAG2Options = { level: 'AA', size: 'small' }\nexport const hcReadableOptions: tinycolor.WCAG2Options = { level: 'AAA', size: 'small' }\n\nexport function getSiteColorsWarnings (locale: 'en' | 'fr', theme: Theme, authProviders?: { title?: string, color?: string }[]): string[] {\n if (locale !== 'fr' && locale !== 'en') locale = 'en'\n let warnings: (string | undefined)[] = getColorsWarnings(locale, theme.colors, 'default', readableOptions)\n if (theme.dark && theme.darkColors) warnings = warnings.concat(getColorsWarnings(locale, theme.darkColors, 'dark', readableOptions))\n if (theme.hc && theme.hcColors) warnings = warnings.concat(getColorsWarnings(locale, theme.hcColors, 'hc', hcReadableOptions))\n if (theme.hcDark && theme.hcDarkColors) warnings = warnings.concat(getColorsWarnings(locale, theme.hcDarkColors, 'hcDark', hcReadableOptions))\n if (authProviders) {\n for (const p of authProviders) {\n if (p.color && p.title) {\n if (!tinycolor.isReadable('#FFFFFF', p.color, readableOptions)) {\n warnings.push(getMessage(locale, 'readableWarning', { colorCode: '#FFFFFF', colorName: getMessage(locale, 'white'), bgColorCode: p.color, bgColorName: getMessage(locale, 'authProvider', { title: p.title }) }))\n }\n }\n }\n }\n return warnings.filter(w => w !== undefined)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Colors, type Theme } from './.type/index.js'\nimport clone from '@data-fair/lib-utils/clone.js'\nimport microTemplate from '@data-fair/lib-utils/micro-template.js'\nimport tinycolor from 'tinycolor2'\n\nexport * from './.type/index.js'\n\nexport const defaultTheme = {\n logo: undefined,\n bodyFontFamily: 'Nunito',\n bodyFontFamilyCss: \"@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaORs71cA-Bm_i0Dk1.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaHRs71cA-Cznx39fA.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaMRs71cA-CuWrHpFO.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaNRs71cA-D1eeM49Z.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXX3I6Li01BKofIMNaDRs4-BbMn9XSX.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIOOaBXso-BWI5zH9R.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIMeaBXso-C3IBG1kp.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIOuaBXso-B55YuedR.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofIO-aBXso-DcJfvmGA.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url({SITE_PATH}/simple-directory/fonts/XRXV3I6Li01BKofINeaB-BaTF6Vo7.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\",\n headingFontFamily: undefined,\n headingFontFamilyCss: undefined,\n colors: {\n // standard vuetify colors, see https://vuetifyjs.com/en/styles/colors/#material-colors\n background: '#FAFAFA', // grey-lighten-5\n 'on-background': '#424242', // grey-darken-3\n surface: '#FFFFFF',\n 'on-surface': '#424242', // grey-darken-3\n 'surface-inverse': '#424242', // grey-darken-3\n 'on-surface-inverse': '#FFFFFF',\n // Primary / secondary / accent forms an anlogous trio (blue / light blue / indigo)\n primary: '#1976D2', // blue-darken-2\n 'on-primary': '#FFFFFF',\n 'text-primary': '#1565C0', // blue-darken-3\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#01579B', // light-blue-darken-4\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#283593', // indigo-darken-3\n // Info and warning are variants of orange (light for info, dark for warning)\n // a natural complementary color for the dominant blue\n info: '#FFCC80', // orange-lighten-4\n 'on-info': '#000000',\n 'text-info': '#BF4300',\n warning: '#BF360A', // deep-orange-darken-4\n 'on-warning': '#FFFFFF',\n 'text-warning': '#8B2500',\n // error, success and admin are not very important\n // reserved for very specific UI element where semantics are more important than esthetics\n error: '#D50000', // red-accent-4\n 'on-error': '#FFFFFF',\n 'text-error': '#B71C1C', // red-darken-4\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': '#2E7D32', // green-darken-3\n admin: '#B71C1C', // red-darken-4\n 'on-admin': '#FFFFFF',\n 'text-admin': '#B71C1C', // red-darken-4\n },\n dark: false,\n darkColors: {\n background: '#303030', // slightly darker than surface\n 'on-background': '#FFFFFF', // white\n surface: '#424242', // grey-darken-3\n 'on-surface': '#FFFFFF', // white\n 'surface-inverse': '#FAFAFA', // grey-lighten-5\n 'on-surface-inverse': '#424242', // grey-darken-3\n primary: '#1976D2', // blue-darken-2\n 'on-primary': '#FFFFFF', // white\n 'text-primary': '#90CAF9', // blue-lighten-3\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#81D4FA', // light-blue-lighten-3\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#C5CAE9', // indigo-lighten-4\n info: '#FFE0B2',\n 'on-info': '#000000',\n 'text-info': undefined,\n warning: '#BF360A', // deep-orange-darken-4\n 'on-warning': '#FFFFFF',\n 'text-warning': '#FFAB40', // orange-accent-2\n error: '#D50000', // red-accent-4\n 'on-error': '#FFFFFF',\n 'text-error': '#FFCDD2', // red-lighten-4\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': undefined,\n admin: '#B71C1C', // red-darken-4\n 'on-admin': '#FFFFFF',\n 'text-admin': '#FFCDD2'\n },\n hc: false,\n hcColors: {\n // standard vuetify colors, see https://vuetifyjs.com/en/styles/colors/#material-colors\n background: '#FFFFFF',\n 'on-background': '#000000',\n surface: '#FFFFFF',\n 'on-surface': '#000000',\n 'surface-inverse': '#212121', // grey-darken-4\n 'on-surface-inverse': '#FFFFFF',\n primary: '#0D47A1', // blue-darken-4\n 'on-primary': '#FFFFFF',\n 'text-primary': undefined,\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#003A6B', // custom light-blue-darken-5\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#283593', // indigo-darken-3\n info: '#FFE0B2', // orange-lighten-4\n 'on-info': '#000000',\n 'text-info': '#993500',\n warning: '#6D1B00', // custom deep-orange-darken-5\n 'on-warning': '#FFFFFF',\n 'text-warning': undefined,\n error: '#b30000',\n 'on-error': '#FFFFFF',\n 'text-error': '#8B0000',\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': '#1B5E20', // green-darken-4\n admin: '#b30000',\n 'on-admin': '#FFFFFF',\n 'text-admin': '#8B0000',\n },\n hcDark: false,\n hcDarkColors: {\n background: '#121212',\n 'on-background': '#FFFFFF', // white\n surface: '#121212',\n 'on-surface': '#FFFFFF', // white\n 'surface-inverse': '#FFFFFF', // white\n 'on-surface-inverse': '#000000',\n primary: '#0D47A1', // blue-darken-4\n 'on-primary': '#FFFFFF', // white\n 'text-primary': '#BBDEFB', // blue-lighten-4\n secondary: '#81D4FA', // light-blue-lighten-3\n 'on-secondary': '#000000',\n 'text-secondary': '#81D4FA', // light-blue-lighten-3\n accent: '#283593', // indigo-darken-3\n 'on-accent': '#FFFFFF',\n 'text-accent': '#C5CAE9', // indigo-lighten-4\n info: '#FFE0B2',\n 'on-info': '#000000',\n 'text-info': undefined,\n warning: '#6D1B00', // custom deep-orange-darken-5\n 'on-warning': '#FFFFFF',\n 'text-warning': '#FFAB40', // orange-accent-2\n error: '#b30000',\n 'on-error': '#FFFFFF',\n 'text-error': '#FF8A80', // red-accent-1\n success: '#B9F6CA', // green-accent-1\n 'on-success': '#000000',\n 'text-success': undefined,\n admin: '#b30000',\n 'on-admin': '#FFFFFF',\n 'text-admin': '#FFCDD2'\n },\n}\n\nexport const getTextColorsCss = (colors: Colors, theme: string) => {\n let css = ''\n\n // by default give the text-primary color to links with the \"simple-link\" class\n if (colors['text-primary']) {\n css += `\n.v-theme--${theme} a.simple-link { color: ${colors['text-primary']}; text-decoration: none; }`\n }\n\n for (const color of ['surface-inverse', 'primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n // create a text-color class to apply text-* color variants\n // always emit the rule (falling back to the base color via the vuetify CSS var)\n // to prevent a parent theme's text-* rule from cascading into nested theme providers\n const textKey = `text-${color}` as keyof Colors\n const textValue = colors[textKey] ?? `rgb(var(--v-theme-${color}))`\n css += `\n.v-theme--${theme} .text-${color}:not(.v-btn--disabled) { color: ${textValue}!important; }`\n\n // apply the on-* color variants to links (they are ignored by vuetify by default)\n const onKey = `on-${color}` as keyof Colors\n if (colors[onKey]) {\n css += `\n.v-theme--${theme} .bg-${color} a.simple-link { color: ${colors[onKey]} }`\n }\n }\n return css\n}\n\nexport const getReadableColor = (baseColor: string, bgColors: string [], darkMode: boolean, level: 'AA' | 'AAA') => {\n const c = tinycolor(baseColor)\n while (!bgColors.every(bgColor => tinycolor.isReadable(c, bgColor, { level, size: 'small' }))) {\n if (darkMode) {\n if (c.getBrightness() === 255) break\n c.brighten(1)\n } else {\n if (c.getBrightness() === 0) break\n c.darken(1)\n }\n }\n return c.toHexString()\n}\n\nexport const getTonalBg = (color: string, bgColor: string) => {\n // Vuetify variant=\"tonal\" renders the color as a ~12% opacity overlay\n // over the underlying surface. Compositing color at 12% over bgColor\n // is equivalent to mixing bgColor with 12% of color.\n return tinycolor.mix(bgColor, color, 12).toHexString()\n}\n\nexport const getOnColor = (color: string) => {\n // priority to white text if it is readable\n if (tinycolor.isReadable(color, '#FFFFFF', { level: 'AA', size: 'small' })) return '#FFFFFF'\n return tinycolor.mostReadable(color, ['#000000', '#FFFFFF']).toHexString()\n}\n\nexport const fillTheme = (theme: Theme, defaultTheme: Theme) => {\n const fullTheme = clone(theme)\n if (fullTheme.assistedMode && fullTheme.assistedModeColors) {\n if (!defaultTheme.darkColors) throw new Error('darkColors is missing in default theme')\n if (!defaultTheme.hcColors) throw new Error('hcColors is missing in default theme')\n if (!defaultTheme.hcDarkColors) throw new Error('hcDarkColors is missing in default theme')\n fullTheme.assistedModeColors.primary = fullTheme.assistedModeColors.primary ?? fullTheme.colors.primary\n fullTheme.assistedModeColors.secondary = fullTheme.assistedModeColors.secondary ?? fullTheme.colors.secondary\n fullTheme.assistedModeColors.accent = fullTheme.assistedModeColors.accent ?? fullTheme.colors.accent\n fullTheme.colors = clone(defaultTheme.colors)\n fullTheme.darkColors = clone(defaultTheme.darkColors)\n fullTheme.hcColors = clone(defaultTheme.hcColors)\n fullTheme.hcDarkColors = clone(defaultTheme.hcDarkColors)\n const customColors = {\n primary: fullTheme.assistedModeColors.primary,\n secondary: fullTheme.assistedModeColors.secondary,\n accent: fullTheme.assistedModeColors.accent,\n 'on-primary': getOnColor(fullTheme.assistedModeColors.primary),\n 'on-secondary': getOnColor(fullTheme.assistedModeColors.secondary),\n 'on-accent': getOnColor(fullTheme.assistedModeColors.accent)\n }\n\n Object.assign(fullTheme.colors, customColors)\n Object.assign(fullTheme.darkColors, customColors)\n Object.assign(fullTheme.hcColors, customColors)\n Object.assign(fullTheme.hcDarkColors, customColors)\n const textBgColors = (c: Colors, key: 'primary' | 'secondary' | 'accent') => {\n const base = c[key] as string\n return [\n c.background,\n c.surface,\n getTonalBg(base, c.background),\n getTonalBg(base, c.surface)\n ]\n }\n fullTheme.colors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.colors, 'primary'), false, 'AA')\n fullTheme.colors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.colors, 'secondary'), false, 'AA')\n fullTheme.colors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.colors, 'accent'), false, 'AA')\n fullTheme.darkColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.darkColors, 'primary'), true, 'AA')\n fullTheme.darkColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.darkColors, 'secondary'), true, 'AA')\n fullTheme.darkColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.darkColors, 'accent'), true, 'AA')\n fullTheme.hcColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.hcColors, 'primary'), false, 'AAA')\n fullTheme.hcColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.hcColors, 'secondary'), false, 'AAA')\n fullTheme.hcColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.hcColors, 'accent'), false, 'AAA')\n fullTheme.hcDarkColors['text-primary'] = getReadableColor(fullTheme.colors.primary, textBgColors(fullTheme.hcDarkColors, 'primary'), true, 'AAA')\n fullTheme.hcDarkColors['text-secondary'] = getReadableColor(fullTheme.colors.secondary, textBgColors(fullTheme.hcDarkColors, 'secondary'), true, 'AAA')\n fullTheme.hcDarkColors['text-accent'] = getReadableColor(fullTheme.colors.accent, textBgColors(fullTheme.hcDarkColors, 'accent'), true, 'AAA')\n } else {\n fullTheme.assistedModeColors = {\n primary: fullTheme.colors.primary,\n secondary: fullTheme.colors.secondary,\n accent: fullTheme.colors.accent,\n }\n }\n // vuetify is sensitive to undefined keys, better to delete them\n for (const key of Object.keys(fullTheme.colors) as (keyof Colors)[]) {\n if (fullTheme.colors[key] === undefined) delete fullTheme.colors[key]\n }\n if (fullTheme.darkColors) {\n for (const key of Object.keys(fullTheme.darkColors) as (keyof Colors)[]) {\n if (fullTheme.darkColors[key] === undefined) delete fullTheme.darkColors[key]\n }\n }\n if (fullTheme.hcColors) {\n for (const key of Object.keys(fullTheme.hcColors) as (keyof Colors)[]) {\n if (fullTheme.hcColors[key] === undefined) delete fullTheme.hcColors[key]\n }\n }\n if (fullTheme.hcDarkColors) {\n for (const key of Object.keys(fullTheme.hcDarkColors) as (keyof Colors)[]) {\n if (fullTheme.hcDarkColors[key] === undefined) delete fullTheme.hcDarkColors[key]\n }\n }\n return fullTheme as Required<Pick<Theme, 'darkColors' | 'hcColors' | 'hcDarkColors'>> & Theme\n}\n\nconst messages: Record<string, Record<string, string>> = {\n fr: {\n 'theme.default': 'par défaut',\n 'theme.dark': 'sombre',\n 'theme.hc': 'à contraste élevé',\n 'theme.hcDark': 'sombre à contraste élevé',\n readableWarning: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\\'est pas suffisamment lisible par-dessus la couleur {bgColorName} ({bgColorCode})',\n readableWarningAggregated: 'la couleur {colorName} ({colorCode}) du thème {themeName} n\\'est pas suffisamment lisible par-dessus : {bgList}',\n bgSolid: '{bgColorName} ({bgColorCode})',\n bgTonal: 'variante tonale {baseName} ({tonalBgCode}) sur {bgColorName}',\n authProvider: 'du fournisseur d\\'identité {title}',\n white: 'blanche',\n text: 'de texte',\n background: 'd\\'arrière plan',\n surface: 'de surface',\n 'surface-inverse': 'de surface avec contraste inversé',\n primary: 'primaire',\n 'text-primary': 'texte primaire',\n secondary: 'secondaire',\n 'text-secondary': 'texte secondaire',\n accent: 'accentuée',\n 'text-accent': 'texte accentué',\n info: 'd\\'information',\n 'text-info': 'texte d\\'information',\n warning: 'd\\'avertissement',\n 'text-warning': 'texte d\\'avertissement',\n error: 'd\\'erreur',\n 'text-error': 'texte d\\'erreur',\n success: 'de succès',\n 'text-success': 'texte de succès',\n admin: 'd\\'administration',\n 'text-admin': 'texte d\\'administration',\n },\n en: {\n 'theme.default': 'default',\n 'theme.dark': 'dark',\n 'theme.hc': 'high contrast',\n 'theme.hcDark': 'high contrast dark',\n readableWarning: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over the {bgColorName} color ({bgColorCode})',\n readableWarningAggregated: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over: {bgList}',\n bgSolid: '{bgColorName} ({bgColorCode})',\n bgTonal: 'tonal variant of {baseName} ({tonalBgCode}) on {bgColorName}',\n authProvider: 'auth provider {title}',\n white: 'white',\n text: 'text',\n background: 'background',\n surface: 'surface',\n 'surface-inverse': 'surface with inverted contrast',\n primary: 'primary',\n 'text-primary': 'primary text',\n secondary: 'secondary',\n 'text-secondary': 'secondary text',\n accent: 'accent',\n 'text-accent': 'accent text',\n info: 'info',\n 'text-info': 'info text',\n warning: 'warning',\n 'text-warning': 'warning text',\n error: 'error',\n 'text-error': 'error text',\n success: 'success',\n 'text-success': 'success text',\n admin: 'admin',\n 'text-admin': 'admin text'\n }\n}\n\nconst getMessage = (locale: 'en' | 'fr', messageKey: string, params: Record<string, string> = {}) => {\n return microTemplate(messages[locale][messageKey] as string, params)\n}\n\nexport function getColorsWarnings (locale: 'en' | 'fr', colors: Colors, themeName: string, readableOptions: tinycolor.WCAG2Options): string[] {\n if (locale !== 'fr' && locale !== 'en') locale = 'en'\n\n type Culprit = { colorName: string, colorCode: string, bgs: string[], failedSolid: Set<string> }\n const culprits = new Map<string, Culprit>()\n const getCulprit = (colorName: string, colorCode: string): Culprit => {\n const key = `${colorName}::${colorCode}`\n let c = culprits.get(key)\n if (!c) {\n c = { colorName, colorCode, bgs: [], failedSolid: new Set() }\n culprits.set(key, c)\n }\n return c\n }\n\n const checkSolid = (colorCode: string | undefined, colorName: string, bgColorCode: string | undefined, bgColorName: string) => {\n if (!colorCode || !bgColorCode) return\n if (tinycolor.isReadable(colorCode, bgColorCode, readableOptions)) return\n const c = getCulprit(colorName, colorCode)\n c.bgs.push(getMessage(locale, 'bgSolid', { bgColorCode, bgColorName: getMessage(locale, bgColorName) }))\n c.failedSolid.add(bgColorName)\n }\n\n const checkTonal = (colorCode: string | undefined, colorName: string, baseCode: string | undefined, baseName: string, bgColorCode: string | undefined, bgColorName: string) => {\n if (!colorCode || !baseCode || !bgColorCode) return\n // if the solid check against this same bg already failed, the tonal variant\n // would add a redundant warning about the same root cause — skip it\n const existing = culprits.get(`${colorName}::${colorCode}`)\n if (existing?.failedSolid.has(bgColorName)) return\n const tonalBgCode = getTonalBg(baseCode, bgColorCode)\n if (tinycolor.isReadable(colorCode, tonalBgCode, readableOptions)) return\n const c = getCulprit(colorName, colorCode)\n c.bgs.push(getMessage(locale, 'bgTonal', { tonalBgCode, baseName: getMessage(locale, baseName), bgColorName: getMessage(locale, bgColorName) }))\n }\n\n for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n const textColor = colors[`text-${color}` as keyof Colors] ?? colors[color as keyof Colors]\n checkSolid(textColor, `text-${color}`, colors.background, 'background')\n checkSolid(textColor, `text-${color}`, colors.surface, 'surface')\n }\n for (const color of ['background', 'surface', 'surface-inverse', 'primary', 'secondary', 'accent', 'info', 'success', 'error', 'warning', 'admin']) {\n checkSolid(colors[`on-${color}` as keyof Colors], 'text', colors[color as keyof Colors], color)\n }\n for (const color of ['primary', 'secondary', 'accent', 'info', 'warning', 'error', 'success', 'admin']) {\n const textColor = colors[`text-${color}` as keyof Colors] ?? colors[color as keyof Colors]\n const baseColor = colors[color as keyof Colors]\n checkTonal(textColor, `text-${color}`, baseColor, color, colors.background, 'background')\n checkTonal(textColor, `text-${color}`, baseColor, color, colors.surface, 'surface')\n }\n\n const warnings: string[] = []\n for (const c of culprits.values()) {\n warnings.push(getMessage(locale, 'readableWarningAggregated', {\n colorName: getMessage(locale, c.colorName),\n colorCode: c.colorCode,\n themeName: getMessage(locale, `theme.${themeName}`),\n bgList: c.bgs.join('; ')\n }))\n }\n return warnings\n}\n\nexport const readableOptions: tinycolor.WCAG2Options = { level: 'AA', size: 'small' }\nexport const hcReadableOptions: tinycolor.WCAG2Options = { level: 'AAA', size: 'small' }\n\nexport function getSiteColorsWarnings (locale: 'en' | 'fr', theme: Theme, authProviders?: { title?: string, color?: string }[]): string[] {\n if (locale !== 'fr' && locale !== 'en') locale = 'en'\n let warnings: (string | undefined)[] = getColorsWarnings(locale, theme.colors, 'default', readableOptions)\n if (theme.dark && theme.darkColors) warnings = warnings.concat(getColorsWarnings(locale, theme.darkColors, 'dark', readableOptions))\n if (theme.hc && theme.hcColors) warnings = warnings.concat(getColorsWarnings(locale, theme.hcColors, 'hc', hcReadableOptions))\n if (theme.hcDark && theme.hcDarkColors) warnings = warnings.concat(getColorsWarnings(locale, theme.hcDarkColors, 'hcDark', hcReadableOptions))\n if (authProviders) {\n for (const p of authProviders) {\n if (p.color && p.title) {\n if (!tinycolor.isReadable('#FFFFFF', p.color, readableOptions)) {\n warnings.push(getMessage(locale, 'readableWarning', { colorCode: '#FFFFFF', colorName: getMessage(locale, 'white'), bgColorCode: p.color, bgColorName: getMessage(locale, 'authProvider', { title: p.title }) }))\n }\n }\n }\n }\n return warnings.filter(w => w !== undefined)\n}\n"]}
|