From 0ef77bc47068bd6fd75a0d415d7d847b5b8d0c18 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 15 Feb 2026 20:29:18 +0200 Subject: [PATCH] feat: add column color picker submenu with 10 preset colors --- src/components/board/ColumnHeader.tsx | 49 ++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/components/board/ColumnHeader.tsx b/src/components/board/ColumnHeader.tsx index c935709..f79c660 100644 --- a/src/components/board/ColumnHeader.tsx +++ b/src/components/board/ColumnHeader.tsx @@ -20,6 +20,19 @@ interface ColumnHeaderProps { boardColor?: string; } +const COLOR_PRESETS = [ + { hue: "160", label: "Teal" }, + { hue: "240", label: "Blue" }, + { hue: "300", label: "Purple" }, + { hue: "350", label: "Pink" }, + { hue: "25", label: "Red" }, + { hue: "55", label: "Orange" }, + { hue: "85", label: "Yellow" }, + { hue: "130", label: "Lime" }, + { hue: "200", label: "Cyan" }, + { hue: "0", label: "Slate" }, +]; + export function ColumnHeader({ column, cardCount, boardColor }: ColumnHeaderProps) { const [editing, setEditing] = useState(false); const [editValue, setEditValue] = useState(column.title); @@ -28,6 +41,7 @@ export function ColumnHeader({ column, cardCount, boardColor }: ColumnHeaderProp const updateColumnTitle = useBoardStore((s) => s.updateColumnTitle); const deleteColumn = useBoardStore((s) => s.deleteColumn); const setColumnWidth = useBoardStore((s) => s.setColumnWidth); + const setColumnColor = useBoardStore((s) => s.setColumnColor); useEffect(() => { if (editing && inputRef.current) { @@ -60,7 +74,13 @@ export function ColumnHeader({ column, cardCount, boardColor }: ColumnHeaderProp } return ( -
+
{editing ? ( + + Color + + setColumnColor(column.id, null)}> + None + {column.color == null && ( + * + )} + + +
+ {COLOR_PRESETS.map(({ hue, label }) => ( +
+
+