@inherits LayoutComponentBase

<MudPaper Height="calc(100vh);" Elevation="0">
    <MudLayout>
        @if (!this.performingUpdate)
        {
            <MudDrawerContainer Class="mud-height-full absolute">
                <MudDrawer Elevation="0" Variant="@DrawerVariant.Mini" OpenMiniOnHover="@true" Color="Color.Default">
                    <MudNavMenu>
                        <MudTooltip Text="Home" Placement="Placement.Right">
                            <MudNavLink Href="/" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Home">Home</MudNavLink>
                        </MudTooltip>
                        <MudTooltip Text="Chats" Placement="Placement.Right">
                            <MudNavLink Href="/chat" Icon="@Icons.Material.Filled.Chat">Chats</MudNavLink>
                        </MudTooltip>
                        <MudTooltip Text="Supporters" Placement="Placement.Right">
                            <MudNavLink Href="/supporters" Icon="@Icons.Material.Filled.Favorite" IconColor="Color.Error">Supporters</MudNavLink>
                        </MudTooltip>
                        <MudTooltip Text="About" Placement="Placement.Right">
                            <MudNavLink Href="/about" Icon="@Icons.Material.Filled.Info">About</MudNavLink>
                        </MudTooltip>
                        <MudTooltip Text="Settings" Placement="Placement.Right">
                            <MudNavLink Href="/settings" Icon="@Icons.Material.Filled.Settings">Settings</MudNavLink>
                        </MudTooltip>
                    </MudNavMenu>
                </MudDrawer>
            </MudDrawerContainer>
        }

        <MudMainContent Class="mud-height-full pt-1">
            <MudContainer Fixed="@true" Class="mud-height-full" Style="margin-left: 5em; width: calc(100% - 5em);">
                @if (!this.performingUpdate && this.IsUpdateAlertVisible)
                {
                    <MudAlert NoIcon="@true" Severity="Severity.Info" Variant="Variant.Filled" ShowCloseIcon="@true" Dense="@true" CloseIconClicked="() => this.DismissUpdate()" Class="mt-2 mb-2">
                        <div class="d-inline-flex align-center">
                            <MudIcon Icon="@Icons.Material.Filled.Update" Size="Size.Medium" Class="mr-3"/>
                            An update to version @this.updateToVersion is available.
                            <MudButton Variant="Variant.Filled" Color="Color.Dark" Size="Size.Small" Class="ml-3" OnClick="() => this.ShowUpdateDialog()">
                                Show details
                            </MudButton>
                        </div>
                    </MudAlert>
                }

                @if (!this.performingUpdate)
                {
                    <CascadingValue Value="@this" IsFixed="true">
                        @this.Body
                    </CascadingValue>
                }

                <MudOverlay Visible="@this.performingUpdate" DarkBackground="@true" LockScroll="@true">
                    <MudText Typo="Typo.h3">Please wait for the update to complete...</MudText>
                    <MudProgressLinear Color="Color.Primary" Indeterminate="@true" Size="Size.Large" Rounded="@true"/>
                </MudOverlay>
            </MudContainer>
        </MudMainContent>
    </MudLayout>
</MudPaper>