diff --git a/archon-ui-main/src/components/layout/MainLayout.tsx b/archon-ui-main/src/components/layout/MainLayout.tsx index 73fcc1de..ffa31792 100644 --- a/archon-ui-main/src/components/layout/MainLayout.tsx +++ b/archon-ui-main/src/components/layout/MainLayout.tsx @@ -129,11 +129,12 @@ export function MainLayout({ children, className }: MainLayoutProps) { }, [isBackendError, backendError, showToast]); return ( -
+
{/* TEMPORARY: Show backend startup error using old component */} {backendStartupFailed && } - {/* Fixed full-page background grid that doesn't scroll */} + {/* Fixed full-page background - grid pattern on dark background */} +
{/* Floating Navigation */} @@ -143,7 +144,7 @@ export function MainLayout({ children, className }: MainLayoutProps) {
{/* Main Content Area - matches old layout exactly */} -
+
{children}
diff --git a/archon-ui-main/src/features/projects/documents/DocsTab.tsx b/archon-ui-main/src/features/projects/documents/DocsTab.tsx index 0c353fb8..e2d54b7d 100644 --- a/archon-ui-main/src/features/projects/documents/DocsTab.tsx +++ b/archon-ui-main/src/features/projects/documents/DocsTab.tsx @@ -84,6 +84,12 @@ export const DocsTab = ({ project }: DocsTabProps) => { setDocumentToDelete(null); }; + // Reset state when project changes + useEffect(() => { + setSelectedDocument(null); + setSearchQuery(""); + }, [projectId]); + // Auto-select first document when documents load useEffect(() => { if (documents.length > 0 && !selectedDocument) { diff --git a/archon-ui-main/src/features/projects/documents/components/AddDocumentModal.tsx b/archon-ui-main/src/features/projects/documents/components/AddDocumentModal.tsx index ce2cde4a..f29210c5 100644 --- a/archon-ui-main/src/features/projects/documents/components/AddDocumentModal.tsx +++ b/archon-ui-main/src/features/projects/documents/components/AddDocumentModal.tsx @@ -9,8 +9,12 @@ import { DialogHeader, DialogTitle, Input, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, } from "../../../ui/primitives"; -import { cn } from "../../../ui/primitives/styles"; interface AddDocumentModalProps { open: boolean; @@ -48,7 +52,13 @@ export const AddDocumentModal = ({ open, onOpenChange, onAdd }: AddDocumentModal setError(null); onOpenChange(false); } catch (err) { - setError(err instanceof Error ? err.message : "Failed to create document"); + setError( + typeof err === "string" + ? err + : err instanceof Error + ? err.message + : "Failed to create document" + ); } finally { setIsAdding(false); } @@ -89,25 +99,18 @@ export const AddDocumentModal = ({ open, onOpenChange, onAdd }: AddDocumentModal - +
diff --git a/archon-ui-main/src/features/projects/documents/components/DocumentCard.tsx b/archon-ui-main/src/features/projects/documents/components/DocumentCard.tsx index 01a7abff..df2cf0f3 100644 --- a/archon-ui-main/src/features/projects/documents/components/DocumentCard.tsx +++ b/archon-ui-main/src/features/projects/documents/components/DocumentCard.tsx @@ -102,7 +102,13 @@ export const DocumentCard = memo(({ document, isActive, onSelect, onDelete }: Do }; return ( -
setShowDelete(true)} onMouseLeave={() => setShowDelete(false)} aria-label={`${isActive ? "Selected: " : ""}${document.title}`} - className="w-full" + className={cn("relative w-full cursor-pointer transition-all duration-300 group", isActive && "scale-[1.02]")} > -
{/* Document Type Badge */}
)}
- -
+
); }); diff --git a/archon-ui-main/src/features/projects/documents/components/DocumentViewer.tsx b/archon-ui-main/src/features/projects/documents/components/DocumentViewer.tsx index 4bdb6b58..b143982a 100644 --- a/archon-ui-main/src/features/projects/documents/components/DocumentViewer.tsx +++ b/archon-ui-main/src/features/projects/documents/components/DocumentViewer.tsx @@ -72,13 +72,9 @@ export const DocumentViewer = ({ document, onSave }: DocumentViewerProps) => { // Extract content for display const renderContent = () => { if (!document.content) { - console.log("DocumentViewer - No content field found"); return

No content available

; } - console.log("DocumentViewer - Content type:", typeof document.content); - console.log("DocumentViewer - Content keys:", Object.keys(document.content)); - // Handle string content if (typeof document.content === "string") { return ( diff --git a/archon-ui-main/src/features/projects/tasks/components/KanbanColumn.tsx b/archon-ui-main/src/features/projects/tasks/components/KanbanColumn.tsx index 7757ae0c..1c1e2e30 100644 --- a/archon-ui-main/src/features/projects/tasks/components/KanbanColumn.tsx +++ b/archon-ui-main/src/features/projects/tasks/components/KanbanColumn.tsx @@ -1,3 +1,4 @@ +import { Activity, CheckCircle2, Eye, ListTodo } from "lucide-react"; import { useRef } from "react"; import { useDrop } from "react-dnd"; import { cn } from "../../../ui/primitives/styles"; @@ -43,12 +44,60 @@ export const KanbanColumn = ({ drop(ref); + // Get icon and label based on status + const getStatusInfo = () => { + switch (status) { + case "todo": + return { + icon: , + label: "Todo", + color: "bg-pink-500/10 text-pink-600 dark:text-pink-400 border-pink-500/30", + }; + case "doing": + return { + icon: , + label: "Doing", + color: "bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/30", + }; + case "review": + return { + icon: , + label: "Review", + color: "bg-purple-500/10 text-purple-600 dark:text-purple-400 border-purple-500/30", + }; + case "done": + return { + icon: , + label: "Done", + color: "bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/30", + }; + default: + return { + icon: , + label: "Todo", + color: "bg-gray-500/10 text-gray-600 dark:text-gray-400 border-gray-500/30", + }; + } + }; + + const statusInfo = getStatusInfo(); + return (
- {/* Column Header - transparent with colored underline */} + {/* Column Header - pill badge only */}
-

{title}

-
{tasks.length}
+
+
+ {statusInfo.icon} + {statusInfo.label} + {tasks.length} +
+
{/* Colored underline */}
diff --git a/archon-ui-main/src/features/projects/tasks/components/TaskCard.tsx b/archon-ui-main/src/features/projects/tasks/components/TaskCard.tsx index 4307b8e6..3772de0c 100644 --- a/archon-ui-main/src/features/projects/tasks/components/TaskCard.tsx +++ b/archon-ui-main/src/features/projects/tasks/components/TaskCard.tsx @@ -3,8 +3,9 @@ import type React from "react"; import { useCallback } from "react"; import { useDrag, useDrop } from "react-dnd"; import { isOptimistic } from "@/features/shared/utils/optimistic"; +import { Card } from "../../../ui/primitives"; import { OptimisticIndicator } from "../../../ui/primitives/OptimisticIndicator"; -import { cn, glassmorphism } from "../../../ui/primitives/styles"; +import { cn } from "../../../ui/primitives/styles"; import { useTaskActions } from "../hooks"; import type { Assignee, Task, TaskPriority } from "../types"; import { getOrderColor, getOrderGlow, ItemTypes } from "../utils/task-styles"; @@ -125,8 +126,7 @@ export const TaskCard: React.FC = ({ // biome-ignore lint/a11y/useSemanticElements: Drag-and-drop card with react-dnd - requires div for drag handle
drag(drop(node))} - role="button" - tabIndex={0} + role="group" className={cn( "w-full min-h-[140px] cursor-move relative group", "transition-all duration-200 ease-in-out", @@ -135,24 +135,16 @@ export const TaskCard: React.FC = ({ onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} onClick={handleTaskClick} - onKeyDown={(e) => { - if (e.key === "Enter" || e.key === " ") { - e.preventDefault(); - if (onEdit) { - onEdit(task); - } - } - }} > -
= ({ />
-
+
); };