V
Vance McMillan

Marine Insurance Quote Website

A Blazor Quotes Dashboard that lists marine insurance quotes using a Bootstrap table with search, status filter and nav-tabs. Uses EventCallback for row actions and NavigationManager for routing.

LIVE DEMO
Generated using Instruct UI - An AI for Blazor UI Generation
## What's implemented - Quote listing page with tabbed filters (Quoted, My Quotes, Bound, Under Review, Expired). - Responsive Bootstrap table with striped rows, status badges and action buttons (view, edit, report). - Client-side search and status dropdown filter. - Simple paging cap via PagedQuotes.Take(200) and demo data generator. ## Key components - QuoteTable razor component (Bootstrap table markup). - QuoteModel POCO for the quote record. - QuotesDashboard and MyQuotes pages with nav-tabs and filter UI. - EventCallback<QuoteModel> for View/Edit/Report actions. - NavigationManager for client-side navigation. ## How it works - QuotesDashboard and MyQuotes generate demo data in OnInitialized and expose IEnumerable<QuoteModel> to QuoteTable. - Search and status filter set local fields (searchText, statusFilter) and recompute FilteredQuotes via LINQ. - Tab selection changes activeTab and affects the filter set in GetFilteredQuotes(). - Row actions call EventCallback callbacks wired to methods that use NavigationManager.NavigateTo with route parameters. - Status badges use a switch (GetStatusBadge) to map status text to Bootstrap badge classes. ## Styling - Uses Bootstrap utility and component classes: container-fluid, card, nav-tabs, table, table-striped, btn, form-control, form-select, badge, table-responsive. - FontAwesome icons are referenced for actions and headings (assumes FA CSS is available). - Layout relies on Bootstrap responsive helpers (table-responsive, flex utilities); table width and a simple Take(200) cap handle large lists in the demo. ## Reuse steps 1. Add QuoteModel and include the QuoteTable, QuotesDashboard and MyQuotes components in the project. 2. Ensure Bootstrap CSS and FontAwesome are included (wwwroot or layout). 3. Add routing entries for pages (/quotes, /my-quotes) and the assumed detail/edit/report routes. 4. Replace GenerateSampleQuotes with a data service (inject via DI) and implement server-side paging/filtering. 5. Wire authentication to supply the current agent identity instead of the hard-coded currentAgent string. 6. Optionally add server-side endpoints for report generation and CSV/PDF export. ## Limitations & next steps - Demo uses in-memory sample data created on OnInitialized; no persistence or API integration is included. - Filtering and paging are client-side and limited (Take(200)); add server-side paging/sorting for large datasets. - No form validation or EditForm is present for creating/updating quotes; navigation assumes existing routes. - Recommended next steps: connect to an API/EF Core repository, add authentication/authorization, implement server-side paging and report generation.