feat: Phase 4-5 — demo mode, polish, deploy, and bug fixes
Add demo mode with mock data provider, Docker deployment, Playwright tests, PostHog analytics, error boundaries, and SEO metadata. Fix residences API response unwrapping, kanban drag-and-drop with optimistic updates, trailing slash proxy redirects, and column name mismatches with Go API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import Link from "next/link";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Calendar, DollarSign } from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useDataProvider } from "@/lib/demo/data-provider-context";
|
||||
import type { TaskResponse } from "@/lib/api/tasks";
|
||||
|
||||
interface TaskCardProps {
|
||||
@@ -12,8 +13,9 @@ interface TaskCardProps {
|
||||
}
|
||||
|
||||
export function TaskCard({ task, isDragging }: TaskCardProps) {
|
||||
const { basePath } = useDataProvider();
|
||||
return (
|
||||
<Link href={`/app/tasks/${task.id}`}>
|
||||
<Link href={`${basePath}/tasks/${task.id}`}>
|
||||
<div
|
||||
className={cn(
|
||||
"rounded-lg border bg-card p-3 space-y-2 transition-shadow hover:shadow-md cursor-grab",
|
||||
@@ -52,13 +54,15 @@ export function TaskCard({ task, isDragging }: TaskCardProps) {
|
||||
<div className="flex items-center gap-3 text-xs text-muted-foreground">
|
||||
{task.due_date && (
|
||||
<span className="flex items-center gap-1">
|
||||
<Calendar className="size-3" />
|
||||
<Calendar className="size-3" aria-hidden="true" />
|
||||
<span className="sr-only">Due date:</span>
|
||||
{new Date(task.due_date).toLocaleDateString()}
|
||||
</span>
|
||||
)}
|
||||
{task.estimated_cost != null && task.estimated_cost > 0 && (
|
||||
<span className="flex items-center gap-1">
|
||||
<DollarSign className="size-3" />
|
||||
<DollarSign className="size-3" aria-hidden="true" />
|
||||
<span className="sr-only">Estimated cost:</span>
|
||||
{task.estimated_cost.toFixed(2)}
|
||||
</span>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user