fix: issue with color format handling, resolves #3104

This commit is contained in:
Amruth Pillai
2026-05-26 09:59:23 +02:00
parent 17cddbad65
commit 273e17c0d3
2 changed files with 12 additions and 0 deletions
+5
View File
@@ -21,6 +21,11 @@ describe("rgbaStringToHex", () => {
it("converts arbitrary mid-range color", () => {
expect(rgbaStringToHex("rgb(128, 64, 200)")).toBe("#8040c8");
});
it("preserves 6-digit hex colors", () => {
expect(rgbaStringToHex("#F1F5F9")).toBe("#f1f5f9");
expect(rgbaStringToHex("#0F172A")).toBe("#0f172a");
});
});
describe("parseColorString", () => {
+7
View File
@@ -2,10 +2,17 @@ import type { ColorResult } from "@uiw/color-convert";
import { hsvaToHex, rgbaStringToHsva } from "@uiw/color-convert";
export function rgbaStringToHex(rgba: string): string {
const color = parseColorString(rgba);
if (color) return `#${toHexComponent(color.r)}${toHexComponent(color.g)}${toHexComponent(color.b)}`;
const hsva = rgbaStringToHsva(rgba);
return hsvaToHex(hsva);
}
function toHexComponent(value: number): string {
return Math.max(0, Math.min(255, value)).toString(16).padStart(2, "0");
}
export function parseColorString(value: string): ColorResult["rgba"] | null {
const trimmed = value.trim();