40 lines
935 B
TypeScript
40 lines
935 B
TypeScript
export const TEXT_EDIT_COLOR_SWATCHES = [
|
|
"#111827",
|
|
"#ffffff",
|
|
"#ef4444",
|
|
"#f97316",
|
|
"#f59e0b",
|
|
"#84cc16",
|
|
"#22c55e",
|
|
"#14b8a6",
|
|
"#06b6d4",
|
|
"#3b82f6",
|
|
"#6366f1",
|
|
"#8b5cf6",
|
|
"#d946ef",
|
|
"#ec4899",
|
|
] as const;
|
|
|
|
export function normalizeOptionalHexColor(value: unknown): string | undefined {
|
|
const normalized = String(value || "").trim().toLowerCase();
|
|
if (!normalized) return undefined;
|
|
|
|
if (/^[0-9a-f]{6}$/i.test(normalized)) {
|
|
return `#${normalized}`;
|
|
}
|
|
|
|
if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/.test(normalized)) {
|
|
if (normalized.length === 4) {
|
|
return `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`;
|
|
}
|
|
return normalized;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
export function formatHexColor(value: string | undefined | null) {
|
|
const normalized = normalizeOptionalHexColor(value);
|
|
return normalized ? normalized.toUpperCase() : "";
|
|
}
|