65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
/**
|
|
* Shared design tokens for SVG card rendering.
|
|
* Mirror of the values in web/src/app/globals.css so social-card output
|
|
* matches the in-app brand exactly.
|
|
*/
|
|
|
|
const COLORS = Object.freeze({
|
|
bg0: '#06060B',
|
|
bg1: '#0E0E16',
|
|
bg2: '#15151F',
|
|
bg3: '#1A1A26',
|
|
text0: '#E8E8F0',
|
|
text1: '#7A7A8E',
|
|
text2: '#4A4A5E',
|
|
border: '#1E1E2E',
|
|
borderHi: '#2A2A3E',
|
|
acc0: '#0F3D2E',
|
|
acc1: '#1A5A42',
|
|
gradeAplus: '#00FFB8',
|
|
gradeA: '#00D4A0',
|
|
gradeB: '#4A9EFF',
|
|
gradeC: '#FFB347',
|
|
gradeD: '#FF5252',
|
|
crimson: '#8B0000',
|
|
nba: '#E94B3C',
|
|
mlb: '#1E90FF',
|
|
wnba: '#F7944A',
|
|
nfl: '#013369',
|
|
nhl: '#A0A0B0',
|
|
tennis: '#C5B358',
|
|
mma: '#D4AF37',
|
|
boxing: '#8B0000',
|
|
golf: '#2E7D32',
|
|
});
|
|
|
|
const FONTS = Object.freeze({
|
|
mono: "'IBM Plex Mono','JetBrains Mono','SF Mono',ui-monospace,monospace",
|
|
sans: "'Instrument Sans','Helvetica Neue',-apple-system,sans-serif",
|
|
});
|
|
|
|
const SPORT_LABEL_COLOR = Object.freeze({
|
|
nba: COLORS.nba,
|
|
wnba: COLORS.wnba,
|
|
mlb: COLORS.mlb,
|
|
nfl: COLORS.nfl,
|
|
nhl: COLORS.nhl,
|
|
tennis: COLORS.tennis,
|
|
mma: COLORS.mma,
|
|
boxing: COLORS.boxing,
|
|
golf: COLORS.golf,
|
|
});
|
|
|
|
function gradeColor(grade) {
|
|
if (!grade) return COLORS.text1;
|
|
const head = String(grade).trim().toUpperCase();
|
|
if (head.startsWith('A+')) return COLORS.gradeAplus;
|
|
if (head.startsWith('A')) return COLORS.gradeA;
|
|
if (head.startsWith('B')) return COLORS.gradeB;
|
|
if (head.startsWith('C')) return COLORS.gradeC;
|
|
if (head.startsWith('D') || head.startsWith('F')) return COLORS.gradeD;
|
|
return COLORS.text1;
|
|
}
|
|
|
|
module.exports = { COLORS, FONTS, SPORT_LABEL_COLOR, gradeColor };
|