@cnamts/design-tokens
Version:
Design Tokens for the French Health Insurance
223 lines (216 loc) • 5.07 kB
text/typescript
import { toKebabCase } from './utils';
import type { Palette, VuetifyTheme, Colors, IndexedObject, ColorsBootstrap } from './types';
import { paletteBootstrap } from './boostrapColors';
export const palette: Palette = {
amBlue: {
darken80: '#020d1f',
darken60: '#051a3e',
darken40: '#07275c',
darken20: '#0a347b',
base: '#0c419a',
lighten20: '#3d67ae',
lighten40: '#6d8dc2',
lighten60: '#9eb3d7',
lighten80: '#ced9eb',
lighten90: '#e7ecf5',
lighten97: '#f8f9fc'
},
cyan: {
darken80: '#00212d',
darken60: '#004259',
darken40: '#006386',
darken20: '#0084b2',
base: '#00a5df',
lighten20: '#33b7e5',
lighten40: '#66c9ec',
lighten60: '#99dbf2',
lighten80: '#ccedf9',
lighten90: '#e5f6fc',
lighten97: '#f7fcfe'
},
frostedBlue: {
darken80: '#142327',
darken60: '#28464d',
darken40: '#3d6874',
darken20: '#518b9a',
base: '#65aec1',
lighten20: '#84becd',
lighten40: '#a3ceda',
lighten60: '#c1dfe6',
lighten80: '#e0eff3',
lighten90: '#f0f7f9',
lighten97: '#fafdfd'
},
parme: {
darken80: '#171c26',
darken60: '#2f384d',
darken40: '#465473',
darken20: '#5e709a',
base: '#758cc0',
lighten20: '#91a3cd',
lighten40: '#acbad9',
lighten60: '#c8d1e6',
lighten80: '#e3e8f2',
lighten90: '#f1f3f9',
lighten97: '#fbfcfd'
},
mauve: {
darken80: '#201224',
darken60: '#402449',
darken40: '#60376d',
darken20: '#804992',
base: '#a05bb6',
lighten20: '#b37cc5',
lighten40: '#c69dd3',
lighten60: '#d9bde2',
lighten80: '#ecdef0',
lighten90: '#f5eff8',
lighten97: '#fcfafd'
},
pink: {
darken80: '#2d051a',
darken60: '#5a0a34',
darken40: '#87104d',
darken20: '#b41567',
base: '#e11a81',
lighten20: '#e7489a',
lighten40: '#ed76b3',
lighten60: '#f3a3cd',
lighten80: '#f9d1e6',
lighten90: '#fce8f2',
lighten97: '#fef8fb'
},
brick: {
darken80: '#291112',
darken60: '#522224',
darken40: '#7b3237',
darken20: '#a44349',
base: '#cd545b',
lighten20: '#d7767c',
lighten40: '#e1989d',
lighten60: '#ebbbbd',
lighten80: '#f5ddde',
lighten90: '#faeeef',
lighten97: '#fdfafa'
},
orange: {
darken80: '#2d100b',
darken60: '#5a2017',
darken40: '#862f22',
darken20: '#b33f2e',
base: '#e04f39',
lighten20: '#e67261',
lighten40: '#ec9588',
lighten60: '#f3b9b0',
lighten80: '#f9dcd7',
lighten90: '#fcedeb',
lighten97: '#fefaf9'
},
yellow: {
darken80: '#302407',
darken60: '#60480e',
darken40: '#906b15',
darken20: '#c08f1c',
base: '#f0b323',
lighten20: '#f3c24f',
lighten40: '#f6d17b',
lighten60: '#f9e1a7',
lighten80: '#fcf0d3',
lighten90: '#fdf7e9',
lighten97: '#fffdf8'
},
green: {
darken80: '#112717',
darken60: '#224e2d',
darken40: '#347444',
darken20: '#459b5a',
base: '#56c271',
lighten20: '#78ce8d',
lighten40: '#9adaaa',
lighten60: '#bbe7c6',
lighten80: '#ddf3e3',
lighten90: '#eef9f1',
lighten97: '#fafdfb'
},
turquoise: {
darken80: '#00221c',
darken60: '#004439',
darken40: '#006755',
darken20: '#008972',
base: '#00ab8e',
lighten20: '#33bca5',
lighten40: '#66cdbb',
lighten60: '#99ddd2',
lighten80: '#cceee8',
lighten90: '#e5f7f4',
lighten97: '#f7fcfc'
},
grey: {
darken80: '#111212',
darken60: '#222324',
darken40: '#323535',
darken20: '#434647',
base: '#545859',
lighten20: '#76797a',
lighten40: '#989b9b',
lighten60: '#bbbcbd',
lighten80: '#dddede',
lighten90: '#eeeeee',
lighten97: '#fafafa'
}
};
export const lightTheme: VuetifyTheme = {
primary: palette.amBlue.base,
secondary: palette.cyan.darken40,
accent: palette.cyan.base,
error: palette.orange.darken20,
info: palette.amBlue.base,
success: palette.turquoise.darken60,
warning: palette.yellow.base,
risquePro: palette.brick.base
};
export const bootstrapTheme: VuetifyTheme = {
primary: paletteBootstrap.amBlue.darken40,
secondary: paletteBootstrap.pink.darken40,
accent: paletteBootstrap.cyan.base,
error: paletteBootstrap.brick.darken20,
info: paletteBootstrap.amBlue.darken60,
success: paletteBootstrap.green.lighten40,
warning: paletteBootstrap.yellow.lighten90,
risquePro: palette.brick.base,
light: palette.grey.lighten60,
dark: palette.grey.darken80,
brand: '#4a3f59',
brandSecondary: '#ac1c81',
brandMuted: '#b7cbd6',
brandMutedLite: '#E7F3F9',
hilitePrimary: '#0062ac',
hiliteSecondary: '#e6bebf'
};
export const colorClasses: IndexedObject = {};
const palettes = { ...palette };
Object.entries(palettes).forEach(([colorName, colorValues]) => {
Object.entries(colorValues).forEach(([variationName, colorValue]) => {
const colorClass = toKebabCase(`${colorName}-${variationName}`
.replace(/\d+/, '-$&')
.replace('-base', '')
);
colorClasses[colorClass] = colorValue as string;
});
});
export const colors: Colors = {
...palette,
...lightTheme
};
export const colorsBootstrap: ColorsBootstrap = {
...paletteBootstrap,
...bootstrapTheme
};
export const colorTheme: VuetifyTheme = {
...colorClasses,
...lightTheme
};
export const colorBootstrapTheme: VuetifyTheme = {
...colorClasses,
...bootstrapTheme
};