-
-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathNavMenu.razor
More file actions
65 lines (60 loc) · 2.51 KB
/
NavMenu.razor
File metadata and controls
65 lines (60 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
@namespace LumexUI.Docs.Client.Components
<nav class="lg:text-sm lg:leading-6">
<div class="sticky top-0 pointer-events-none">
<div class="h-10 bg-gradient-to-b from-background"></div>
</div>
<ul class="space-y-8">
@foreach( var category in NavigationStore.GetNavigation().Categories )
{
RenderCategory( __builder, category );
}
</ul>
</nav>
@code {
private void RenderCategory( RenderTreeBuilder __builder, NavigationCategory category )
{
<li>
<div class="flex items-center gap-2 mb-3 text-foreground">
<h5 class="text-foreground-900 font-semibold">
@category.Name
</h5>
</div>
<ul class="space-y-2 border-l border-divider">
@foreach( var item in category.Items )
{
RenderItem( __builder, item, category.Name );
}
</ul>
</li>
}
private void RenderItem( RenderTreeBuilder __builder, NavigationItem item, string categoryName )
{
var formattedName = item.Name.Replace( "Lumex", "" ).SplitPascalCase();
if( categoryName is "Components API" )
{
<li>
<LumexLink Href="@($"docs/api/{formattedName.ToKebabCase()}")"
Match="@NavLinkMatch.Prefix"
Class="block border-l pl-4 -ml-px border-transparent text-foreground hover:border-foreground-400 data-[active=true]:text-orange-500 data-[active=true]:border-current">
@item.Name.Replace( "Lumex", "" )
</LumexLink>
</li>
}
else
{
var styles = ElementClass.Default( "flex items-center gap-2" )
.Add( ElementClass.Empty()
.Add( "opacity-disabled" )
.Add( "pointer-events-none" ), when: item.Status.HasValue && item.Status.Value is PageStatus.Soon )
.ToString();
<li class="@styles">
<LumexLink Href="@($"docs/{categoryName.ToKebabCase()}/{formattedName.ToKebabCase()}")"
Match="@NavLinkMatch.Prefix"
Class="block border-l pl-4 -ml-px border-transparent text-foreground hover:border-foreground-400 data-[active=true]:text-orange-500 data-[active=true]:border-current">
@formattedName
</LumexLink>
<NavItemBadge Status="@item.Status" />
</li>
}
}
}