From e09e7badbc722f580a9d7674c46d6ff3cc320b26 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 15 Jul 2026 06:19:05 -0400 Subject: feat(admin): color picker shows color cube correctly --- internal/admin/static/colorpicker.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'internal/admin/static/colorpicker.js') diff --git a/internal/admin/static/colorpicker.js b/internal/admin/static/colorpicker.js index bba438e..f93b261 100644 --- a/internal/admin/static/colorpicker.js +++ b/internal/admin/static/colorpicker.js @@ -68,7 +68,7 @@ window.cssToXtermIdx = function(css) { if (pickerEl) return; pickerEl = document.createElement('div'); pickerEl.id = '__cp_popover'; - pickerEl.style.cssText = 'display:none;position:fixed;z-index:200;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:8px;box-shadow:0 4px 20px rgba(0,0,0,.5);min-width:280px'; + pickerEl.style.cssText = 'display:none;position:fixed;z-index:200;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:8px;box-shadow:0 4px 20px rgba(0,0,0,.5);min-width:208px'; pickerEl.innerHTML = buildPickerHTML(); document.body.appendChild(pickerEl); @@ -91,12 +91,41 @@ window.cssToXtermIdx = function(css) { h += ''; h += ''; h += ''; - h += '
'; - for (var i = 0; i < 256; i++) { + + // ANSI colors 0-15 (2 rows of 8) + h += '
ANSI
'; + h += '
'; + for (var i = 0; i < 16; i++) { var css = xtermToCss(i); h += '
'; } h += '
'; + + // Color cube 16-231: six 6x6 slices (G=rows, B=cols, each slice is one R level) + h += '
Color Cube
'; + h += '
'; + for (var r = 0; r < 6; r++) { + h += '
'; + for (var g = 0; g < 6; g++) { + for (var b = 0; b < 6; b++) { + var idx = 16 + 36*r + 6*g + b; + var css = xtermToCss(idx); + h += '
'; + } + } + h += '
'; + } + h += '
'; + + // Grayscale 232-255 (2 rows of 12) + h += '
Grayscale
'; + h += '
'; + for (var i = 232; i < 256; i++) { + var css = xtermToCss(i); + h += '
'; + } + h += '
'; + return h; } -- cgit v1.2.3