Compare commits

...

2 commits

Author SHA1 Message Date
Hermes Agent
a82fc4af2e docs[agent]: finalize bid-status implementation plan 2026-06-10 22:27:31 +00:00
Hermes Agent
c29b92404d docs[agent]: add detailed implementation plan for bid-status visual indicators 2026-06-10 22:27:31 +00:00
2 changed files with 120 additions and 0 deletions

View file

@ -4,6 +4,7 @@
| Task | Owner | Status | Created | Completed | Notes |
|---|---|---|---|---|---|
| Init ledger and snapshot backup | hermes | done | 2026-06-10 | 2026-06-10 | Snapshot created, secrets excluded |
| Add bid-status visual indicators (pending/accepted/rejected/counter_offer) | hermes | in-progress | 2026-06-10 | | Use Tailwind colors, integrate with freight-bidding-system skill |
## Decisions
- Use `AGENT_NOTES.md` as the single source of truth for active work and handoffs.

View file

@ -0,0 +1,119 @@
# Implementation Plan: Bid-Status Visual Indicators
**Task ID**: `bid-status-indicators`
**Status**: `in-progress`
**Owner**: hermes
**Created**: 2026-06-10
**Skill Reference**: `freight-bidding-system`
---
## Objective
Implement visual indicators (color-coded badges/labels) for bid statuses in the freight bidding UI.
## Status Types
| Status | Description | UI Color |
|--------|-------------|----------|
| `pending` | Bid submitted, awaiting acceptance | `bg-amber-100 text-amber-800` |
| `accepted` | Shipper accepted bid | `bg-green-100 text-green-800` |
| `rejected` | Shipper rejected bid | `bg-red-100 text-red-800` |
| `counter_offer` | Bid counter-proposed | `bg-blue-100 text-blue-800` |
---
## Implementation Steps
### 1. Create Status Badge Component
**File**: `freight-app/components/bids/BidStatusBadge.tsx`
```tsx
import { BidStatus } from '@/types/bid'
const statusConfig = {
pending: 'bg-amber-100 text-amber-800',
accepted: 'bg-green-100 text-green-800',
rejected: 'bg-red-100 text-red-800',
counter_offer: 'bg-blue-100 text-blue-800',
} as const
interface BidStatusBadgeProps {
status: BidStatus
}
export default function BidStatusBadge({ status }: BidStatusBadgeProps) {
const classes = statusConfig[status] ?? 'bg-gray-100 text-gray-800'
return (
<span className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${classes}`}>
{status.replace('_', ' ')}
</span>
)
}
```
### 2. Integrate into Bid Feed
**File**: `freight-app/components/bids/BidFeed.tsx`
```tsx
import BidStatusBadge from './BidStatusBadge'
// Inside bid list mapping:
{bids.map(bid => (
<div key={bid.id} className="border rounded-lg p-4">
<div className="flex justify-between items-start">
<div>
<h4 className="font-semibold">{bid.amount} {bid.currency}</h4>
<p className="text-sm text-gray-600">{bid.carrier_name}</p>
</div>
<BidStatusBadge status={bid.status} />
</div>
</div>
))}
```
### 3. Update Bid Type Definition
**File**: `freight-app/types/bid.ts`
```ts
export type BidStatus = 'pending' | 'accepted' | 'rejected' | 'counter_offer'
export interface Bid {
id: string
amount: number
currency: string
carrier_name: string
status: BidStatus
// ... other fields
}
```
### 4. Add Tailwind Colors (if missing)
**File**: `freight-app/tailwind.config.js`
```js
module.exports = {
theme: {
extend: {
colors: {
// Amber, green, red, blue shades are included in Tailwind v3
}
}
}
}
```
---
## Verification
- [ ] Component renders correctly for all 4 status types
- [ ] Colors match the Tailwind config
- [ ] Badge text transforms `counter_offer` to `counter offer`
- [ ] No TypeScript errors
---
## Next Agent Handoff
If work is paused:
1. Review current state in `AGENT_NOTES.md`
2. Check if any status types were added/removed
3. Update `BidStatus` type if needed
4. Resume at the next unchecked item