feat: Phase 3 - filter bar, keyboard navigation, notifications, comments

- FilterBar component with text search, label chips, due date and priority dropdowns
- "/" keyboard shortcut and toolbar button to toggle filter bar
- Keyboard card navigation with J/K/H/L keys, Enter to open, Escape to clear
- Focus ring on keyboard-selected cards with auto-scroll
- Desktop notifications for due/overdue cards via tauri-plugin-notification
- CommentsSection component with add/delete and relative timestamps
- Filtered card count display in column headers
This commit is contained in:
Your Name
2026-02-16 14:52:08 +02:00
parent a17c8b6b62
commit fc4310a30f
17 changed files with 791 additions and 140 deletions

View File

@@ -20,6 +20,7 @@ import type { Column, ColumnWidth } from "@/types/board";
interface ColumnHeaderProps {
column: Column;
cardCount: number;
filteredCount?: number;
}
const COLOR_PRESETS = [
@@ -35,7 +36,7 @@ const COLOR_PRESETS = [
{ hue: "0", label: "Slate" },
];
export function ColumnHeader({ column, cardCount }: ColumnHeaderProps) {
export function ColumnHeader({ column, cardCount, filteredCount }: ColumnHeaderProps) {
const [editing, setEditing] = useState(false);
const [editValue, setEditValue] = useState(column.title);
const inputRef = useRef<HTMLInputElement>(null);
@@ -107,7 +108,7 @@ export function ColumnHeader({ column, cardCount }: ColumnHeaderProps) {
? "text-[oklch(65%_0.15_70)]"
: "text-pylon-text-secondary"
}`}>
{cardCount}{column.wipLimit != null ? `/${column.wipLimit}` : ""}
{filteredCount != null ? `${filteredCount} of ` : ""}{cardCount}{column.wipLimit != null ? `/${column.wipLimit}` : ""}
</span>
</div>