Pick a sector and tone — or drop in your own brand color — and HexPalette derives the full role set (primary, secondary, accent, surfaces, text, and success/warning/error states) in OKLCH, with every intended text pairing checked for WCAG AA contrast. Not five swatches: a system you can ship.
Every intended pairing here — text, buttons and states — meets WCAG AA by construction.
:root {
--primary: #765BC6;
--on-primary: #FFFFFF;
--primary-hover: #6549B2;
--primary-active: #583AA2;
--primary-disabled: #C7C4DD;
--secondary: #C04500;
--secondary-hover: #AB3100;
--accent: #00AB77;
--link: #008150;
--link-hover: #006C3D;
--focus-ring: #00A06D;
--selected-bg: #EBE6FF;
--background: #F8F6FF;
--surface: #FEFDFF;
--border: #DBD8ED;
--input-bg: #FDFCFF;
--input-border: #C4C1D6;
--input-focus: #00A06D;
--text: #242131;
--muted: #6F6A87;
--success: #008323;
--warning: #AB5500;
--error: #D7171F;
--on-success: #FFFFFF;
--success-container: #C2F9C3;
--on-success-container: #2E7535;
--on-warning: #FFFFFF;
--warning-container: #FFD8AF;
--on-warning-container: #964D0D;
--on-error: #FFFFFF;
--error-container: #FFD1C8;
--on-error-container: #9C443C;
}
[data-theme="dark"] {
--primary: #765BC6;
--on-primary: #FFFFFF;
--primary-hover: #8A70DE;
--primary-active: #9980EF;
--primary-disabled: #383549;
--secondary: #C04500;
--secondary-hover: #D85C26;
--accent: #00AB77;
--link: #54DAA3;
--link-hover: #6EF1B9;
--focus-ring: #54DAA3;
--selected-bg: #27223D;
--background: #110F1A;
--surface: #1B1927;
--border: #3D3A4C;
--input-bg: #171620;
--input-border: #504D5F;
--input-focus: #54DAA3;
--text: #EEECFB;
--muted: #B1ACCC;
--success: #5BDC80;
--warning: #FFAF36;
--error: #FF6359;
--on-success: #000000;
--success-container: #063215;
--on-success-container: #A2F5B4;
--on-warning: #000000;
--warning-container: #3D2200;
--on-warning-container: #FFD181;
--on-error: #000000;
--error-container: #451915;
--on-error-container: #FFBFB3;
}
// light $ui-system-primary: #765BC6; $ui-system-on-primary: #FFFFFF; $ui-system-primary-hover: #6549B2; $ui-system-primary-active: #583AA2; $ui-system-primary-disabled: #C7C4DD; $ui-system-secondary: #C04500; $ui-system-secondary-hover: #AB3100; $ui-system-accent: #00AB77; $ui-system-link: #008150; $ui-system-link-hover: #006C3D; $ui-system-focus-ring: #00A06D; $ui-system-selected-bg: #EBE6FF; $ui-system-background: #F8F6FF; $ui-system-surface: #FEFDFF; $ui-system-border: #DBD8ED; $ui-system-input-bg: #FDFCFF; $ui-system-input-border: #C4C1D6; $ui-system-input-focus: #00A06D; $ui-system-text: #242131; $ui-system-muted: #6F6A87; $ui-system-success: #008323; $ui-system-warning: #AB5500; $ui-system-error: #D7171F; $ui-system-on-success: #FFFFFF; $ui-system-success-container: #C2F9C3; $ui-system-on-success-container: #2E7535; $ui-system-on-warning: #FFFFFF; $ui-system-warning-container: #FFD8AF; $ui-system-on-warning-container: #964D0D; $ui-system-on-error: #FFFFFF; $ui-system-error-container: #FFD1C8; $ui-system-on-error-container: #9C443C; // dark $ui-system-primary-dark: #765BC6; $ui-system-on-primary-dark: #FFFFFF; $ui-system-primary-hover-dark: #8A70DE; $ui-system-primary-active-dark: #9980EF; $ui-system-primary-disabled-dark: #383549; $ui-system-secondary-dark: #C04500; $ui-system-secondary-hover-dark: #D85C26; $ui-system-accent-dark: #00AB77; $ui-system-link-dark: #54DAA3; $ui-system-link-hover-dark: #6EF1B9; $ui-system-focus-ring-dark: #54DAA3; $ui-system-selected-bg-dark: #27223D; $ui-system-background-dark: #110F1A; $ui-system-surface-dark: #1B1927; $ui-system-border-dark: #3D3A4C; $ui-system-input-bg-dark: #171620; $ui-system-input-border-dark: #504D5F; $ui-system-input-focus-dark: #54DAA3; $ui-system-text-dark: #EEECFB; $ui-system-muted-dark: #B1ACCC; $ui-system-success-dark: #5BDC80; $ui-system-warning-dark: #FFAF36; $ui-system-error-dark: #FF6359; $ui-system-on-success-dark: #000000; $ui-system-success-container-dark: #063215; $ui-system-on-success-container-dark: #A2F5B4; $ui-system-on-warning-dark: #000000; $ui-system-warning-container-dark: #3D2200; $ui-system-on-warning-container-dark: #FFD181; $ui-system-on-error-dark: #000000; $ui-system-error-container-dark: #451915; $ui-system-on-error-container-dark: #FFBFB3;
// tailwind.config.js — theme.extend.colors
colors: {
'ui-system': {
'primary': '#765BC6',
'on-primary': '#FFFFFF',
'primary-hover': '#6549B2',
'primary-active': '#583AA2',
'primary-disabled': '#C7C4DD',
'secondary': '#C04500',
'secondary-hover': '#AB3100',
'accent': '#00AB77',
'link': '#008150',
'link-hover': '#006C3D',
'focus-ring': '#00A06D',
'selected-bg': '#EBE6FF',
'background': '#F8F6FF',
'surface': '#FEFDFF',
'border': '#DBD8ED',
'input-bg': '#FDFCFF',
'input-border': '#C4C1D6',
'input-focus': '#00A06D',
'text': '#242131',
'muted': '#6F6A87',
'success': '#008323',
'warning': '#AB5500',
'error': '#D7171F',
'on-success': '#FFFFFF',
'success-container': '#C2F9C3',
'on-success-container': '#2E7535',
'on-warning': '#FFFFFF',
'warning-container': '#FFD8AF',
'on-warning-container': '#964D0D',
'on-error': '#FFFFFF',
'error-container': '#FFD1C8',
'on-error-container': '#9C443C',
},
'ui-system-dark': {
'primary': '#765BC6',
'on-primary': '#FFFFFF',
'primary-hover': '#8A70DE',
'primary-active': '#9980EF',
'primary-disabled': '#383549',
'secondary': '#C04500',
'secondary-hover': '#D85C26',
'accent': '#00AB77',
'link': '#54DAA3',
'link-hover': '#6EF1B9',
'focus-ring': '#54DAA3',
'selected-bg': '#27223D',
'background': '#110F1A',
'surface': '#1B1927',
'border': '#3D3A4C',
'input-bg': '#171620',
'input-border': '#504D5F',
'input-focus': '#54DAA3',
'text': '#EEECFB',
'muted': '#B1ACCC',
'success': '#5BDC80',
'warning': '#FFAF36',
'error': '#FF6359',
'on-success': '#000000',
'success-container': '#063215',
'on-success-container': '#A2F5B4',
'on-warning': '#000000',
'warning-container': '#3D2200',
'on-warning-container': '#FFD181',
'on-error': '#000000',
'error-container': '#451915',
'on-error-container': '#FFBFB3',
},
}
{
"light": {
"primary": {
"value": "#765BC6",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#6549B2",
"type": "color"
},
"primary-active": {
"value": "#583AA2",
"type": "color"
},
"primary-disabled": {
"value": "#C7C4DD",
"type": "color"
},
"secondary": {
"value": "#C04500",
"type": "color"
},
"secondary-hover": {
"value": "#AB3100",
"type": "color"
},
"accent": {
"value": "#00AB77",
"type": "color"
},
"link": {
"value": "#008150",
"type": "color"
},
"link-hover": {
"value": "#006C3D",
"type": "color"
},
"focus-ring": {
"value": "#00A06D",
"type": "color"
},
"selected-bg": {
"value": "#EBE6FF",
"type": "color"
},
"background": {
"value": "#F8F6FF",
"type": "color"
},
"surface": {
"value": "#FEFDFF",
"type": "color"
},
"border": {
"value": "#DBD8ED",
"type": "color"
},
"input-bg": {
"value": "#FDFCFF",
"type": "color"
},
"input-border": {
"value": "#C4C1D6",
"type": "color"
},
"input-focus": {
"value": "#00A06D",
"type": "color"
},
"text": {
"value": "#242131",
"type": "color"
},
"muted": {
"value": "#6F6A87",
"type": "color"
},
"success": {
"value": "#008323",
"type": "color"
},
"warning": {
"value": "#AB5500",
"type": "color"
},
"error": {
"value": "#D7171F",
"type": "color"
},
"on-success": {
"value": "#FFFFFF",
"type": "color"
},
"success-container": {
"value": "#C2F9C3",
"type": "color"
},
"on-success-container": {
"value": "#2E7535",
"type": "color"
},
"on-warning": {
"value": "#FFFFFF",
"type": "color"
},
"warning-container": {
"value": "#FFD8AF",
"type": "color"
},
"on-warning-container": {
"value": "#964D0D",
"type": "color"
},
"on-error": {
"value": "#FFFFFF",
"type": "color"
},
"error-container": {
"value": "#FFD1C8",
"type": "color"
},
"on-error-container": {
"value": "#9C443C",
"type": "color"
}
},
"dark": {
"primary": {
"value": "#765BC6",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#8A70DE",
"type": "color"
},
"primary-active": {
"value": "#9980EF",
"type": "color"
},
"primary-disabled": {
"value": "#383549",
"type": "color"
},
"secondary": {
"value": "#C04500",
"type": "color"
},
"secondary-hover": {
"value": "#D85C26",
"type": "color"
},
"accent": {
"value": "#00AB77",
"type": "color"
},
"link": {
"value": "#54DAA3",
"type": "color"
},
"link-hover": {
"value": "#6EF1B9",
"type": "color"
},
"focus-ring": {
"value": "#54DAA3",
"type": "color"
},
"selected-bg": {
"value": "#27223D",
"type": "color"
},
"background": {
"value": "#110F1A",
"type": "color"
},
"surface": {
"value": "#1B1927",
"type": "color"
},
"border": {
"value": "#3D3A4C",
"type": "color"
},
"input-bg": {
"value": "#171620",
"type": "color"
},
"input-border": {
"value": "#504D5F",
"type": "color"
},
"input-focus": {
"value": "#54DAA3",
"type": "color"
},
"text": {
"value": "#EEECFB",
"type": "color"
},
"muted": {
"value": "#B1ACCC",
"type": "color"
},
"success": {
"value": "#5BDC80",
"type": "color"
},
"warning": {
"value": "#FFAF36",
"type": "color"
},
"error": {
"value": "#FF6359",
"type": "color"
},
"on-success": {
"value": "#000000",
"type": "color"
},
"success-container": {
"value": "#063215",
"type": "color"
},
"on-success-container": {
"value": "#A2F5B4",
"type": "color"
},
"on-warning": {
"value": "#000000",
"type": "color"
},
"warning-container": {
"value": "#3D2200",
"type": "color"
},
"on-warning-container": {
"value": "#FFD181",
"type": "color"
},
"on-error": {
"value": "#000000",
"type": "color"
},
"error-container": {
"value": "#451915",
"type": "color"
},
"on-error-container": {
"value": "#FFBFB3",
"type": "color"
}
}
}
{
"light": {
"primary": "#765BC6",
"on-primary": "#FFFFFF",
"primary-hover": "#6549B2",
"primary-active": "#583AA2",
"primary-disabled": "#C7C4DD",
"secondary": "#C04500",
"secondary-hover": "#AB3100",
"accent": "#00AB77",
"link": "#008150",
"link-hover": "#006C3D",
"focus-ring": "#00A06D",
"selected-bg": "#EBE6FF",
"background": "#F8F6FF",
"surface": "#FEFDFF",
"border": "#DBD8ED",
"input-bg": "#FDFCFF",
"input-border": "#C4C1D6",
"input-focus": "#00A06D",
"text": "#242131",
"muted": "#6F6A87",
"success": "#008323",
"warning": "#AB5500",
"error": "#D7171F",
"on-success": "#FFFFFF",
"success-container": "#C2F9C3",
"on-success-container": "#2E7535",
"on-warning": "#FFFFFF",
"warning-container": "#FFD8AF",
"on-warning-container": "#964D0D",
"on-error": "#FFFFFF",
"error-container": "#FFD1C8",
"on-error-container": "#9C443C"
},
"dark": {
"primary": "#765BC6",
"on-primary": "#FFFFFF",
"primary-hover": "#8A70DE",
"primary-active": "#9980EF",
"primary-disabled": "#383549",
"secondary": "#C04500",
"secondary-hover": "#D85C26",
"accent": "#00AB77",
"link": "#54DAA3",
"link-hover": "#6EF1B9",
"focus-ring": "#54DAA3",
"selected-bg": "#27223D",
"background": "#110F1A",
"surface": "#1B1927",
"border": "#3D3A4C",
"input-bg": "#171620",
"input-border": "#504D5F",
"input-focus": "#54DAA3",
"text": "#EEECFB",
"muted": "#B1ACCC",
"success": "#5BDC80",
"warning": "#FFAF36",
"error": "#FF6359",
"on-success": "#000000",
"success-container": "#063215",
"on-success-container": "#A2F5B4",
"on-warning": "#000000",
"warning-container": "#3D2200",
"on-warning-container": "#FFD181",
"on-error": "#000000",
"error-container": "#451915",
"on-error-container": "#FFBFB3"
}
}
/* Canva → Brand Kit → Brand Colors */ /* Brand */ #765BC6 #FFFFFF #6549B2 #583AA2 #C7C4DD #C04500 #AB3100 #00AB77 #008150 #006C3D #00A06D #EBE6FF #00A06D /* Neutral */ #F8F6FF #FEFDFF #DBD8ED #FDFCFF #C4C1D6 #242131 #6F6A87 /* Semantic */ #008323 #AB5500 #D7171F #FFFFFF #C2F9C3 #2E7535 #FFFFFF #FFD8AF #964D0D #FFFFFF #FFD1C8 #9C443C