From aa36671e95fcbbc504ce209cbcebbe095f56f8e1 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Fri, 29 May 2026 06:39:15 -0700 Subject: [PATCH] feat(tracker-web): migrate board + item detail to primitives (UX-2.3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Board: type/priority pills → StatusDot/StatusBadge tones, count pill → Badge, quick status-move buttons → Button, load errors → AlertBanner (keeping the existing TooltipProvider + column accents). Item detail: title/description editor → Input/Textarea/Button, the status/priority/visibility selects → shared Select, the vote control → Button, comment composer → Textarea/Button, errors → AlertBanner. ActionMenu + Timeline (UX-12.2) are untouched. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../src/app/dashboard/board/page.tsx | 53 +++++---- .../src/app/dashboard/items/[id]/page.tsx | 104 ++++++++---------- 2 files changed, 76 insertions(+), 81 deletions(-) diff --git a/dashboards/tracker-web/src/app/dashboard/board/page.tsx b/dashboards/tracker-web/src/app/dashboard/board/page.tsx index 44552f12..e390bdca 100644 --- a/dashboards/tracker-web/src/app/dashboard/board/page.tsx +++ b/dashboards/tracker-web/src/app/dashboard/board/page.tsx @@ -4,10 +4,16 @@ import { useEffect, useState, useCallback } from 'react'; import Link from 'next/link'; import { PageHeader } from '@bytelyst/dashboard-components'; import { + Button, + Badge, + StatusBadge, + StatusDot, + AlertBanner, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, + type StatusTone, } from '@/components/ui/Primitives'; import { useAuth } from '@/lib/auth-context'; import { listItems, updateItemStatus, type TrackerItem } from '@/lib/tracker-client'; @@ -19,17 +25,17 @@ const COLUMNS: { key: string; label: string; color: string }[] = [ { key: 'closed', label: 'Closed', color: 'border-t-gray-500' }, ]; -const TYPE_DOT: Record = { - bug: 'bg-red-500', - feature: 'bg-blue-500', - task: 'bg-amber-500', +const TYPE_TONE: Record = { + bug: 'danger', + feature: 'info', + task: 'warning', }; -const PRIORITY_LABEL: Record = { - critical: 'text-red-600 dark:text-red-400', - high: 'text-orange-600 dark:text-orange-400', - medium: 'text-yellow-600 dark:text-yellow-400', - low: 'text-green-600 dark:text-green-400', +const PRIORITY_TONE: Record = { + critical: 'danger', + high: 'warning', + medium: 'neutral', + low: 'success', }; export default function BoardPage() { @@ -71,9 +77,9 @@ export default function BoardPage() {

Kanban view of all items

{error && ( -
+ {error} -
+ )}
@@ -86,9 +92,7 @@ export default function BoardPage() { >

{col.label}

- - {colItems.length} - + {colItems.length}
@@ -98,15 +102,14 @@ export default function BoardPage() { className="rounded-lg border border-border bg-background p-3 shadow-sm transition-shadow hover:shadow-md" >
- + {item.type} - {item.priority} - +
@@ -127,16 +130,18 @@ export default function BoardPage() {
{/* Quick status move */} -
+
{COLUMNS.filter(c => c.key !== item.status).map(c => ( - + ))}
diff --git a/dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx b/dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx index 5bce47da..b00029c5 100644 --- a/dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx +++ b/dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx @@ -3,7 +3,15 @@ import { useEffect, useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { PageHeader, LoadingSpinner } from '@bytelyst/dashboard-components'; -import { ActionMenu, Timeline } from '@/components/ui/Primitives'; +import { + ActionMenu, + Timeline, + Button, + Input, + Textarea, + Select, + AlertBanner, +} from '@/components/ui/Primitives'; import { useAuth } from '@/lib/auth-context'; import { getItem, @@ -158,40 +166,35 @@ export default function ItemDetailPage() { /> {error && ( -
+ {error} -
+ )} {/* Title/description editor */}
{editing ? (
- setEditTitle(e.target.value)} - className="w-full rounded-md border border-input bg-background px-3 py-2 text-lg font-bold outline-none ring-ring focus:ring-2" + className="text-lg font-bold" /> -