|
14 | 14 | if (raw.StartsWith("[alias]", StringComparison.Ordinal)) return ("alias", raw[7..]); |
15 | 15 | return (null, raw); |
16 | 16 | } |
17 | | - |
18 | | - // Inline styles to avoid Tailwind purge — very muted tints, subtle border for definition |
19 | | - const string NsStyle = "background:#f5f3ff;color:#7c3aed;border:1px solid #ddd6fe;"; |
20 | | - const string CmdStyle = "background:#fffbeb;color:#b45309;border:1px solid #fde68a;"; |
21 | | - const string AliasStyle = "background:#f0f9ff;color:#0369a1;border:1px solid #bae6fd;"; |
22 | | - |
23 | | - static string BadgeStyle(string? badge) => badge switch { "ns" => NsStyle, "cmd" => CmdStyle, "alias" => AliasStyle, _ => "" }; |
24 | 17 | } |
25 | 18 | @if (isTopLevel && !Model.IsGlobalAssemblyBuild && !Model.IsPrimaryNavEnabled && !Model.SubTree.Index.Hidden) |
26 | 19 | { |
27 | 20 | var idx = Model.SubTree.Index; |
28 | 21 | <li class="flex group/li pr-8 mt-6"> |
29 | | - <a |
30 | | - href="@idx.Url" |
31 | | - @Model.Htmx.GetNavHxAttributes(true) |
32 | | - class="sidebar-link grow group-[.current]/li:text-blue-elastic!" |
33 | | - > |
34 | | - @idx.NavigationTitle |
35 | | - </a> |
| 22 | + <a href="@idx.Url" class="sidebar-link nav-link">@idx.NavigationTitle</a> |
36 | 23 | </li> |
37 | 24 | } |
38 | 25 | @foreach (var item in Model.SubTree.NavigationItems) |
|
50 | 37 | { |
51 | 38 | var (groupBadge, groupLabel) = ParseNavTitle(group.NavigationTitle); |
52 | 39 | <li class="flex group/li pr-8 @(isTopLevel ? "font-semibold mt-6" : "mt-4")"> |
53 | | - <a |
54 | | - href="@group.Url" |
55 | | - @Model.Htmx.GetNavHxAttributes(true) |
56 | | - class="sidebar-link group-[.current]/li:text-blue-elastic! flex items-center w-full" |
57 | | - > |
| 40 | + <a href="@group.Url" class="sidebar-link nav-link"> |
58 | 41 | <span>@groupLabel</span> |
59 | | - @if (groupBadge == "ns") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@NsStyle">ns</span> } |
60 | | - else if (groupBadge == "cmd") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@CmdStyle">cmd</span> } |
61 | | - else if (groupBadge == "alias") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@AliasStyle">alias</span> } |
| 42 | + @if (groupBadge == "ns") { <span class="nav-badge nav-badge-ns">ns</span> } |
| 43 | + else if (groupBadge == "cmd") { <span class="nav-badge nav-badge-cmd">cmd</span> } |
| 44 | + else if (groupBadge == "alias") { <span class="nav-badge nav-badge-alias">alias</span> } |
62 | 45 | </a> |
63 | 46 | </li> |
64 | 47 | } |
|
67 | 50 | var g = folder; |
68 | 51 | var allHidden = folder.NavigationItems.All(n => n.Hidden); |
69 | 52 | var (folderBadge, folderLabel) = ParseNavTitle(g.NavigationTitle); |
70 | | - <li class="flex flex-wrap group-navigation @(isTopLevel ? "mt-6" : "mt-4") relative"> |
| 53 | + <li class="nav-folder @(isTopLevel ? "mt-6" : "mt-4")"> |
71 | 54 | <div class="peer grid grid-cols-[1fr_auto] w-full"> |
72 | | - <a |
73 | | - href="@(g.Url)" |
74 | | - @Model.Htmx.GetNavHxAttributes(true) |
75 | | - class="sidebar-link pr-2 content-center @(isTopLevel ? "font-semibold" : "") group-[.current]/li:text-blue-elastic! flex items-center gap-1"> |
| 55 | + <a href="@(g.Url)" class="sidebar-link nav-folder-link@(isTopLevel ? " font-semibold" : "")"> |
76 | 56 | <span>@folderLabel</span> |
77 | | - @if (folderBadge == "ns") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@NsStyle">ns</span> } |
78 | | - else if (folderBadge == "cmd") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@CmdStyle">cmd</span> } |
79 | | - else if (folderBadge == "alias") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@AliasStyle">alias</span> } |
| 57 | + @if (folderBadge == "ns") { <span class="nav-badge nav-badge-ns">ns</span> } |
| 58 | + else if (folderBadge == "cmd") { <span class="nav-badge nav-badge-cmd">cmd</span> } |
| 59 | + else if (folderBadge == "alias") { <span class="nav-badge nav-badge-alias">alias</span> } |
80 | 60 | </a> |
81 | 61 | @if (!allHidden) |
82 | 62 | { |
83 | 63 | <label for="@folder.Id" class="group/label flex mr-2 items-start"> |
84 | | - <div class="hover:bg-grey-20 rounded-sm p-1 cursor-pointer"> |
85 | | - <svg |
86 | | - xmlns="http://www.w3.org/2000/svg" |
87 | | - fill="none" |
88 | | - viewBox="0 0 24 24" |
89 | | - stroke-width="1.5" |
90 | | - stroke="currentColor" |
91 | | - class="shrink-0 -rotate-90 group-has-checked/label:rotate-0 w-3.5"> |
92 | | - <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/> |
93 | | - </svg> |
| 64 | + <div class="nav-toggle-btn"> |
| 65 | + <svg class="nav-chevron" viewBox="0 0 24 24"><use href="#icon-chevron-down"/></svg> |
94 | 66 | </div> |
95 | 67 | <input |
96 | 68 | id="@folder.Id" |
|
102 | 74 | </div> |
103 | 75 | @if (g.NavigationItems.Count > 0) |
104 | 76 | { |
105 | | - <ul class="w-full hidden peer-has-checked:block ml-4 relative before:content-[''] before:absolute before:-left-[calc(var(--spacing)*4-1px)] before:top-0 before:bottom-0 before:w-px before:bg-grey-20 before:peer-has-checked:block peer-has-[.current]:before:bg-grey-40 has-[.current]:before:bg-grey-40"> |
| 77 | + <ul class="nav-subtree"> |
106 | 78 | @await RenderPartialAsync(_TocTreeNav.Create(new NavigationTreeItem |
107 | 79 | { |
108 | 80 | IsPrimaryNavEnabled = Model.IsPrimaryNavEnabled, |
|
118 | 90 | } |
119 | 91 | else if (item is ILeafNavigationItem<INavigationModel> leaf) |
120 | 92 | { |
121 | | - var hasSameTopLevelGroup = true; |
122 | 93 | var (leafBadge, leafLabel) = ParseNavTitle(leaf.NavigationTitle); |
123 | 94 | <li class="flex group/li pr-8 @(isTopLevel ? "font-semibold mt-6" : "mt-4")"> |
124 | | - <a |
125 | | - href="@leaf.Url" |
126 | | - @Model.Htmx.GetNavHxAttributes(hasSameTopLevelGroup) |
127 | | - class="sidebar-link grow group-[.current]/li:text-blue-elastic! flex items-center w-full" |
128 | | - > |
| 95 | + <a href="@leaf.Url" class="sidebar-link nav-link"> |
129 | 96 | <span>@leafLabel</span> |
130 | | - @if (leafBadge == "ns") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@NsStyle">ns</span> } |
131 | | - else if (leafBadge == "cmd") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@CmdStyle">cmd</span> } |
132 | | - else if (leafBadge == "alias") { <span class="ml-auto inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-bold shrink-0" style="@AliasStyle">alias</span> } |
| 97 | + @if (leafBadge == "ns") { <span class="nav-badge nav-badge-ns">ns</span> } |
| 98 | + else if (leafBadge == "cmd") { <span class="nav-badge nav-badge-cmd">cmd</span> } |
| 99 | + else if (leafBadge == "alias") { <span class="nav-badge nav-badge-alias">alias</span> } |
133 | 100 | </a> |
134 | 101 | </li> |
135 | 102 | } |
|
0 commit comments