The vendor detail page and layout called api.vendors.getById without a
try/catch. The API client throws ApiError on any non-2xx, so a 404 (missing
vendor), 401, or 5xx during SSR threw out of the server component and
white-screened the whole route with a generic "server-side exception" —
the existing `if (!vendor)` fallback was never reached.
Guard both fetches: log the error and degrade gracefully (page shows
"Vendor not found", layout renders chrome with a fallback title).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: integrate dialog close context in vendor select field and CRUD dialog components
feat: enhance vendor general info to format status using utility function
feat: implement form dialog context for managing dialog close actions
feat: add async select field dialog close context for better form handling
fix: update form mutation hook to close dialog on successful submission
feat: extend document print types to include expense and credit note
feat: add settings update payload type to include logo and other fields
feat: create employee attendance and work history pages with resource management
feat: implement payment made and received detail pages with actions
feat: add quick shortcuts component for easy navigation in the dashboard
feat: create actions for payment made and received with print and delete options
feat: implement dialog close context for better dialog management
feat: add error parsing utility for improved error handling in API responses
- Implemented TemplateCheckpointEditDialog for creating and editing inspection checkpoints.
- Added VendorActions component for managing vendor actions including edit, activate/deactivate, and delete.
- Created VendorContext for managing vendor state across components.
- Developed VendorGeneralInfo component to display detailed vendor information.
- Introduced AedSymbol and Money components for consistent currency representation.
- Added PromptDialog for user input prompts throughout the application.
- Implemented RelationLink component for unified related-data display in CRUD tables.
- Created InspectionTemplatesClient for API interactions related to inspection templates.
- Introduced ShareDocumentButton component for sharing documents.
- Added ShareDocumentDialog for email and WhatsApp sharing options.
- Integrated document sharing in estimates, invoices, inspections, job cards, bills, and purchase orders.
- Implemented useDocumentShare hook for handling share logic.
- Created DocumentShareClient for API interactions related to document sharing.
- Updated layouts and actions to include sharing options for relevant entities.