refactor admin UX and stabilize shell
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m20s

This commit is contained in:
2026-07-09 00:03:33 +09:00
parent a2f94e2b5e
commit 89fa51efe2
91 changed files with 1633 additions and 1030 deletions
@@ -43,4 +43,51 @@ public static class AdminNavigationCatalog
new("공통관리", "/admin/common-codes", Icons.Material.Filled.Apps, AllowedRoles: ["Admin"]),
]),
];
public static bool IsActive(AdminNavigationItem item, string currentPath)
{
if (string.IsNullOrWhiteSpace(currentPath))
return false;
var normalizedPath = NormalizePath(currentPath);
var normalizedHref = NormalizePath(item.Href);
return item.IsExact
? string.Equals(normalizedPath, normalizedHref, StringComparison.OrdinalIgnoreCase)
: normalizedPath.StartsWith(normalizedHref, StringComparison.OrdinalIgnoreCase);
}
public static string GetLabel(string currentPath)
{
var path = NormalizePath(currentPath);
return path switch
{
"/" or "/admin" or "/admin/dashboard" or "/dashboard" => "대시보드",
"/admin/inquiries" => "문의 관리",
"/admin/clients" => "고객 관리",
"/admin/blog" => "블로그 관리",
"/admin/faqs" => "FAQ 관리",
"/admin/announcements" => "공지사항",
"/admin/tax-profiles" => "세무 프로필",
"/admin/tax-filing-schedules" => "신고 일정",
"/admin/contracts" => "계약 관리",
"/admin/consulting-activities" => "상담 활동",
"/admin/revenue-trackings" => "수익 추적",
"/admin/common-codes" => "공통관리",
"/admin/settings" => "설정",
_ => "운영 화면"
};
}
private static string NormalizePath(string path)
{
if (string.IsNullOrWhiteSpace(path))
return "/";
var normalized = path.Trim();
if (!normalized.StartsWith('/'))
normalized = "/" + normalized;
return normalized.TrimEnd('/') is "" ? "/" : normalized.TrimEnd('/');
}
}