Files
ai-wave-02/apps/web/src/orders/order-detail-page.tsx
T
derrick 698a49ae82
Runner Test / test (push) Successful in 17s
Runner Test / test (pull_request) Successful in 16s
add:order notes ui component
2026-09-24 22:35:55 +09:00

40 lines
1.3 KiB
TypeScript

import type { Address, AuditEvent, OrderDetail } from "@orderops/shared";
import { AuditTimeline } from "./audit-timeline";
import { OrderItemsPanel } from "./order-items-panel";
import { OrderNotes } from "./order-notes";
import { OrderSummaryPanel } from "./order-summary";
import { ShippingAddressForm } from "./shipping-address-form";
interface OrderDetailPageProps {
order: OrderDetail;
auditEvents: AuditEvent[];
onUpdateQuantity: (itemId: string, quantity: number) => Promise<void>;
onSaveAddress: (address: Address) => Promise<void>;
onSaveNotes: (notes: string) => Promise<void>;
onCancel: () => Promise<void>;
}
export function OrderDetailPage({
order,
auditEvents,
onUpdateQuantity,
onSaveAddress,
onSaveNotes,
onCancel
}: OrderDetailPageProps) {
return (
<div className="space-y-4">
<OrderSummaryPanel order={order} />
<div className="flex justify-end">
<button className="rounded-md bg-red-600 px-4 py-2 text-sm font-medium text-white" onClick={() => void onCancel()} type="button">
Cancel order
</button>
</div>
<OrderItemsPanel order={order} onUpdateQuantity={onUpdateQuantity} />
<ShippingAddressForm order={order} onSave={onSaveAddress} />
<OrderNotes order={order} onSave={onSaveNotes} />
<AuditTimeline events={auditEvents} />
</div>
);
}