@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-fair/lib-common-types",
3
- "version": "1.20.5",
3
+ "version": "1.20.6",
4
4
  "description": "Shared schemas and built type definitions in the data-fair stack.",
5
5
  "main": "index.js",
6
6
  "scripts": {
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
- 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}',
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
- tonalReadableWarning: 'the {colorName} color ({colorCode}) of {themeName} theme is not sufficiently readable over the tonal variant of {baseName} ({tonalBgCode}) on top of {bgColorName}',
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 warnings = [];
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
- warnings.push(readableWarning(readableOptions, locale, textColor, `text-${color}`, colors.background, 'background', themeName));
371
- warnings.push(readableWarning(readableOptions, locale, textColor, `text-${color}`, colors.surface, 'surface', themeName));
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
- warnings.push(readableWarning(readableOptions, locale, colors[`on-${color}`], 'text', colors[color], color, themeName));
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
- warnings.push(tonalReadableWarning(readableOptions, locale, textColor, `text-${color}`, baseColor, color, colors.background, 'background', themeName));
380
- warnings.push(tonalReadableWarning(readableOptions, locale, textColor, `text-${color}`, baseColor, color, colors.surface, 'surface', themeName));
400
+ checkTonal(textColor, `text-${color}`, baseColor, color, colors.background, 'background');
401
+ checkTonal(textColor, `text-${color}`, baseColor, color, colors.surface, 'surface');
381
402
  }
382
- return warnings.filter(w => w !== undefined);
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' };
@@ -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"]}