Design consistency audit fixes: alerts, cards, dark mode, utilities
Alert sweep (113 alerts, 79 files):
All persistent static banners now carry alert-permanent so the
layout's 5-second auto-dismiss cannot swallow guidance, warnings,
or validation errors. Transient dismissible toasts left untouched.
CSS fixes (site.css):
.card.shadow-sm — strips rogue border from ~40 drifted cards
.card-header.bg-white — rebinds to var(--bs-body-bg) so card
headers follow dark/light theme correctly
Typography utilities — .text-2xs (.68rem), .text-xs (.73rem)
Token color classes — .text-ember, .text-ok, .text-bad,
.text-warn, .text-cool, .bg-paper-2
Layout utilities — .mw-xs/sm/md/lg replace inline max-width
Comment — documents text-ember vs text-primary intent
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@model CreatePurchaseOrderDto
|
||||
|
||||
@{
|
||||
@@ -25,7 +25,7 @@
|
||||
<h4 class="mb-0">
|
||||
@if (fromLowStock)
|
||||
{
|
||||
<span><i class="bi bi-lightning-charge text-warning me-1"></i> New PO — From Low Stock</span>
|
||||
<span><i class="bi bi-lightning-charge text-warning me-1"></i> New PO — From Low Stock</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -35,7 +35,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="New Purchase Order"
|
||||
data-bs-content="POs are saved as Draft and can be edited before submitting. Add line items from your inventory catalog or enter a custom description for items not in the system. Once submitted you can receive goods against the PO — receiving automatically updates inventory quantities. After receiving, use Create Bill to convert the PO into a payable bill.">
|
||||
data-bs-content="POs are saved as Draft and can be edited before submitting. Add line items from your inventory catalog or enter a custom description for items not in the system. Once submitted you can receive goods against the PO — receiving automatically updates inventory quantities. After receiving, use Create Bill to convert the PO into a payable bill.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
@if (!ViewData.ModelState.IsValid)
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<div class="alert alert-danger alert-permanent">
|
||||
<ul class="mb-0">
|
||||
@foreach (var error in ViewData.ModelState.Values.SelectMany(v => v.Errors))
|
||||
{
|
||||
@@ -70,7 +70,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Order Details"
|
||||
data-bs-content="Select the vendor you're ordering from. Order Date defaults to today — adjust if you're entering a past order. Expected Delivery is used to flag the PO as Overdue on the list view if goods haven't arrived by that date.">
|
||||
data-bs-content="Select the vendor you're ordering from. Order Date defaults to today — adjust if you're entering a past order. Expected Delivery is used to flag the PO as Overdue on the list view if goods haven't arrived by that date.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
@@ -80,7 +80,7 @@
|
||||
<label asp-for="VendorId" class="form-label fw-semibold">Vendor <span class="text-danger">*</span></label>
|
||||
<select asp-for="VendorId" asp-items="@ViewBag.Vendors" class="form-select"
|
||||
data-quick-add-url="/Vendors/Create" data-quick-add-title="Add New Vendor">
|
||||
<option value="__new__">+ Add New Vendor…</option>
|
||||
<option value="__new__">+ Add New Vendor…</option>
|
||||
</select>
|
||||
<span asp-validation-for="VendorId" class="text-danger small"></span>
|
||||
</div>
|
||||
@@ -147,12 +147,12 @@
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Notes" class="form-label fw-semibold">Notes</label>
|
||||
<textarea asp-for="Notes" class="form-control" rows="3"
|
||||
placeholder="Visible on PO…"></textarea>
|
||||
placeholder="Visible on PO…"></textarea>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="InternalNotes" class="form-label fw-semibold">Internal Notes</label>
|
||||
<textarea asp-for="InternalNotes" class="form-control" rows="3"
|
||||
placeholder="Internal use only…"></textarea>
|
||||
placeholder="Internal use only…"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@model UpdatePurchaseOrderDto
|
||||
|
||||
@{
|
||||
@@ -27,14 +27,14 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info d-flex align-items-center gap-2 mb-3">
|
||||
<div class="alert alert-info alert-permanent d-flex align-items-center gap-2 mb-3">
|
||||
<i class="bi bi-info-circle-fill"></i>
|
||||
<span>Only <strong>Draft</strong> purchase orders can be edited.</span>
|
||||
</div>
|
||||
|
||||
@if (!ViewData.ModelState.IsValid)
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<div class="alert alert-danger alert-permanent">
|
||||
<ul class="mb-0">
|
||||
@foreach (var error in ViewData.ModelState.Values.SelectMany(v => v.Errors))
|
||||
{
|
||||
@@ -57,7 +57,7 @@
|
||||
<label asp-for="VendorId" class="form-label fw-semibold">Vendor <span class="text-danger">*</span></label>
|
||||
<select asp-for="VendorId" asp-items="@ViewBag.Vendors" class="form-select"
|
||||
data-quick-add-url="/Vendors/Create" data-quick-add-title="Add New Vendor">
|
||||
<option value="__new__">+ Add New Vendor…</option>
|
||||
<option value="__new__">+ Add New Vendor…</option>
|
||||
</select>
|
||||
<span asp-validation-for="VendorId" class="text-danger small"></span>
|
||||
</div>
|
||||
@@ -114,12 +114,12 @@
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Notes" class="form-label fw-semibold">Notes</label>
|
||||
<textarea asp-for="Notes" class="form-control" rows="3"
|
||||
placeholder="Visible on PO…"></textarea>
|
||||
placeholder="Visible on PO…"></textarea>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="InternalNotes" class="form-label fw-semibold">Internal Notes</label>
|
||||
<textarea asp-for="InternalNotes" class="form-control" rows="3"
|
||||
placeholder="Internal use only…"></textarea>
|
||||
placeholder="Internal use only…"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@using PowderCoating.Application.DTOs.PurchaseOrder
|
||||
@model ReceivePurchaseOrderDto
|
||||
|
||||
@{
|
||||
ViewData["Title"] = $"Receive Goods — {ViewBag.PoNumber}";
|
||||
ViewData["Title"] = $"Receive Goods — {ViewBag.PoNumber}";
|
||||
int poId = (int)ViewBag.PoId;
|
||||
}
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Receive Goods"
|
||||
data-bs-content="Enter the quantity actually received for each line item. Use Receive All to fill in the full remaining quantity for every item. You can receive partial quantities — the PO becomes Partially Received and you can come back to record the rest later. Saving automatically adds the received quantities to inventory on hand and records purchase transactions.">
|
||||
data-bs-content="Enter the quantity actually received for each line item. Use Receive All to fill in the full remaining quantity for every item. You can receive partial quantities — the PO becomes Partially Received and you can come back to record the rest later. Saving automatically adds the received quantities to inventory on hand and records purchase transactions.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
<small class="text-muted">@ViewBag.PoNumber · @ViewBag.VendorName · Ordered @((DateTime)ViewBag.OrderDate).ToString("MM/dd/yyyy")</small>
|
||||
<small class="text-muted">@ViewBag.PoNumber · @ViewBag.VendorName · Ordered @((DateTime)ViewBag.OrderDate).ToString("MM/dd/yyyy")</small>
|
||||
</div>
|
||||
<a asp-action="Details" asp-route-id="@poId" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left"></i> Back
|
||||
@@ -40,7 +40,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Items to Receive"
|
||||
data-bs-content="Remaining = Ordered minus Previously Received. Enter how many units arrived in this shipment — you can enter less than Remaining for a partial delivery. Rows already fully received are shown in green and cannot be edited. Only inventory catalog items will have their stock quantities updated on save.">
|
||||
data-bs-content="Remaining = Ordered minus Previously Received. Enter how many units arrived in this shipment — you can enter less than Remaining for a partial delivery. Rows already fully received are shown in green and cannot be edited. Only inventory catalog items will have their stock quantities updated on save.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
@@ -108,7 +108,7 @@
|
||||
else
|
||||
{
|
||||
<input type="hidden" name="Items[@i].QuantityToReceive" value="0" />
|
||||
<span class="text-muted">—</span>
|
||||
<span class="text-muted">—</span>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
@@ -132,12 +132,12 @@
|
||||
<div class="mb-3">
|
||||
<label asp-for="Notes" class="form-label fw-semibold">Notes</label>
|
||||
<textarea asp-for="Notes" class="form-control" rows="3"
|
||||
placeholder="Any notes about this receipt…"></textarea>
|
||||
placeholder="Any notes about this receipt…"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info small">
|
||||
<div class="alert alert-info alert-permanent small">
|
||||
<i class="bi bi-info-circle me-1"></i>
|
||||
Receiving goods will automatically update inventory quantities and record purchase transactions.
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user