/** * Shades a hex color by a given percentage. * Positive values lighten the color, negative values darken it. * * @param {string} color - A 7-character hex color string (e.g. "#ffcc00"). * @param {number} percent - A percentage from -100 to 100 to adjust brightness. * @returns {string} - The adjusted hex color string. */ function shadeColor(color, percent) { const num = parseInt(color.slice(1), 16); const amt = Math.round(2.55 * percent); let r = (num >> 16) + amt; let g = ((num >> 8) & 0xff) + amt; let b = (num & 0xff) + amt; // Clamp each component between 0 and 255 r = Math.min(255, Math.max(0, r)); g = Math.min(255, Math.max(0, g)); b = Math.min(255, Math.max(0, b)); const shaded = (1 << 24) + (r << 16) + (g << 8) + b; return `#${shaded.toString(16).slice(1)}`; } export { shadeColor };