No description
Find a file
Hardik 79897c5b06 feat(vendor): multiple contacts, vendor detail page, and table-based items catalog
VendorContact model
- New VendorContact table (name, role, mobile, email, isPrimary) with
  cascade delete from Vendor
- Old single contactName/Mobile/Email fields removed from Vendor model
- Migration: 20260514191638_vendor_contacts

Vendor form
- ContactsEditor: dynamic list of contact rows — add, remove, mark primary
- Each contact row: name, role, mobile, email, primary checkbox
- Serialised as contacts[i].field form fields; existing single-contact
  section removed

Vendor actions
- parseContacts() reads indexed contacts from FormData
- createVendor creates VendorContact rows in a nested write
- updateVendor deletes all contacts then re-creates them in a transaction

Vendor list page
- Contact column shows primary contact name + email; "+N more" badge

Vendor detail page
- Two-column layout: Vendor Details card + Contacts card
- Contacts displayed with avatar initials, role badge, primary badge
- VendorItemsTable client component: inline search (name, code,
  description), tabular layout with links to item detail

Inventory items page (/inventory/items)
- Rebuilt as a searchable table (ItemsTable client component)
- Columns: Item name/description, Code, Vendor count, Lowest price
- Click any row to inline-expand vendor sub-rows for that item
- Vendor sub-rows: vendor name, verified badge, price, distance (if site
  selected), + Cart button with "Added ✓" feedback
- Sort toggle (Distance / Price) shown in toolbar when a row is open

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 00:50:39 +05:30
App/pelagia-portal feat(vendor): multiple contacts, vendor detail page, and table-based items catalog 2026-05-15 00:50:39 +05:30
GstService fix(gst): correct microservice default port and captcha field name 2026-05-14 17:07:31 +05:30
.gitignore chore: initialize Next.js 15 project with Tailwind, TypeScript and tooling config 2026-05-05 23:23:43 +05:30