diff --git a/LittleShop/Areas/Admin/Views/Categories/Index.cshtml b/LittleShop/Areas/Admin/Views/Categories/Index.cshtml index 65f997c..e93a371 100644 --- a/LittleShop/Areas/Admin/Views/Categories/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/Categories/Index.cshtml @@ -23,12 +23,12 @@ - - - - - - + + + + + + @@ -52,15 +52,15 @@ }
NameDescriptionProductsCreatedStatusActionsNameDescriptionProductsCreatedStatusActions
-
- - +
+ + Edit
@Html.AntiForgeryToken() -
diff --git a/LittleShop/Areas/Admin/Views/Orders/Index.cshtml b/LittleShop/Areas/Admin/Views/Orders/Index.cshtml index 3b3a76a..0d180fa 100644 --- a/LittleShop/Areas/Admin/Views/Orders/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/Orders/Index.cshtml @@ -108,13 +108,13 @@ - - - - - - - + + + + + + + diff --git a/LittleShop/Areas/Admin/Views/Products/Index.cshtml b/LittleShop/Areas/Admin/Views/Products/Index.cshtml index ce93c92..78b75b6 100644 --- a/LittleShop/Areas/Admin/Views/Products/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/Products/Index.cshtml @@ -34,15 +34,15 @@
Order IDCustomerItemsTotalStatusTimelineActionsOrder IDCustomerItemsTotalStatusTimelineActions
- - - - - - - - - + + + + + + + + + diff --git a/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml b/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml index 50d1661..389fd29 100644 --- a/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml +++ b/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml @@ -40,6 +40,9 @@ @await RenderSectionAsync("Head", required: false) + + +
@@ -146,7 +149,7 @@
-
+
@RenderBody()
@@ -207,8 +210,8 @@
Menu
-
    diff --git a/LittleShop/Areas/Admin/Views/ShippingRates/Index.cshtml b/LittleShop/Areas/Admin/Views/ShippingRates/Index.cshtml index c5a9882..a78cdf4 100644 --- a/LittleShop/Areas/Admin/Views/ShippingRates/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/ShippingRates/Index.cshtml @@ -23,13 +23,13 @@
ImageNameCategoryPriceVariationsStockWeightStatusActionsImageNameCategoryPriceVariationsStockWeightStatusActions
- - - - - - - + + + + + + + @@ -58,15 +58,15 @@ }
NameCountryWeight Range (g)PriceDelivery DaysStatusActionsNameCountryWeight Range (g)PriceDelivery DaysStatusActions
-
- - +
+ + Edit
@Html.AntiForgeryToken() -
diff --git a/LittleShop/Areas/Admin/Views/Users/Index.cshtml b/LittleShop/Areas/Admin/Views/Users/Index.cshtml index 548ad33..3cd975e 100644 --- a/LittleShop/Areas/Admin/Views/Users/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/Users/Index.cshtml @@ -39,10 +39,10 @@ - - - - + + + + @@ -62,17 +62,17 @@ }
UsernameCreatedStatusActionsUsernameCreatedStatusActions
-
- - +
+ + Edit @if (user.Username != "admin") {
@Html.AntiForgeryToken() -
} diff --git a/LittleShop/Areas/Admin/Views/VariantCollections/Index.cshtml b/LittleShop/Areas/Admin/Views/VariantCollections/Index.cshtml index daaebea..e159f6a 100644 --- a/LittleShop/Areas/Admin/Views/VariantCollections/Index.cshtml +++ b/LittleShop/Areas/Admin/Views/VariantCollections/Index.cshtml @@ -24,12 +24,12 @@ - - - - - - + + + + + + @@ -60,15 +60,15 @@ }
NamePropertiesCreatedUpdatedStatusActionsNamePropertiesCreatedUpdatedStatusActions
-
- - +
+ + Edit
@Html.AntiForgeryToken() -
diff --git a/LittleShop/wwwroot/css/modern-admin.css b/LittleShop/wwwroot/css/modern-admin.css index b1f32cd..f4efb90 100644 --- a/LittleShop/wwwroot/css/modern-admin.css +++ b/LittleShop/wwwroot/css/modern-admin.css @@ -54,6 +54,57 @@ body { line-height: 1.6; } +/* ======================================== + ACCESSIBILITY UTILITIES + ======================================== */ + +/* Screen Reader Only - Hide visually but keep in DOM for screen readers */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +/* Screen Reader Only Focusable - Show on focus (for skip links) */ +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +/* Skip to Main Content Link */ +.skip-link { + position: absolute; + top: -100px; + left: 10px; + z-index: 10000; + padding: 0.75rem 1.5rem; + background: var(--primary-blue); + color: white; + border-radius: var(--radius-md); + font-weight: 600; + text-decoration: none; + box-shadow: var(--shadow-lg); + transition: top 0.3s ease; +} + +.skip-link:focus { + top: 10px; + outline: 3px solid var(--warning-orange); + outline-offset: 2px; + color: white; +} + /* Modern Card Styling */ .card { border: 1px solid var(--grey-200); @@ -349,12 +400,50 @@ h1 { cursor: not-allowed; } -/* Focus States for Accessibility */ +/* ======================================== + ENHANCED FOCUS INDICATORS (WCAG 2.1 AA) + ======================================== */ + +/* All interactive elements get visible focus */ +a:focus, +button:focus, .btn:focus, +input:focus, +select:focus, +textarea:focus, .form-control:focus, -.form-select:focus { - outline: 2px solid var(--primary-blue); +.form-select:focus, +.nav-link:focus, +.dropdown-item:focus, +.list-group-item:focus, +[tabindex]:focus { + outline: 3px solid var(--primary-blue); outline-offset: 2px; + box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.1); +} + +/* Focus visible for keyboard navigation only (not mouse clicks) */ +:focus-visible { + outline: 3px solid var(--primary-blue); + outline-offset: 2px; +} + +/* Remove default browser focus for mouse clicks but keep for keyboard */ +:focus:not(:focus-visible) { + outline: none; +} + +/* Special focus for primary actions */ +.btn-primary:focus, +.btn-success:focus { + outline-color: var(--warning-orange); + box-shadow: 0 0 0 4px rgba(217, 119, 6, 0.2); +} + +/* Focus for navigation items */ +.navbar-nav .nav-link:focus { + background: var(--grey-100); + outline-color: var(--primary-blue); } /* Toast/Alert Improvements */