diff --git a/src/ShellDocs.Components/Chrome/BrandLogo.razor b/src/ShellDocs.Components/Chrome/BrandLogo.razor new file mode 100644 index 0000000..88e3cc2 --- /dev/null +++ b/src/ShellDocs.Components/Chrome/BrandLogo.razor @@ -0,0 +1,30 @@ +@namespace ShellDocs.Components.Chrome +@inject ShellDocsOptions Options + +@if (!string.IsNullOrWhiteSpace(Options.LogoSvg)) +{ + + @((MarkupString)Options.LogoSvg) + +} +else if (HasUrlLogo) +{ + var light = Options.LogoLight ?? Options.LogoDark!; + var dark = Options.LogoDark ?? Options.LogoLight!; + + + @if (!string.Equals(light, dark, StringComparison.Ordinal)) + { + + } +} +else +{ + +} + +@code { + private bool HasUrlLogo => !string.IsNullOrEmpty(Options.LogoLight) || !string.IsNullOrEmpty(Options.LogoDark); + private string Alt => Options.LogoAlt ?? Options.SiteName ?? ""; + private string Height => Options.LogoHeight.ToString(System.Globalization.CultureInfo.InvariantCulture) + "rem"; +} diff --git a/src/ShellDocs.Components/Chrome/BrandLogo.razor.css b/src/ShellDocs.Components/Chrome/BrandLogo.razor.css new file mode 100644 index 0000000..2e13767 --- /dev/null +++ b/src/ShellDocs.Components/Chrome/BrandLogo.razor.css @@ -0,0 +1,30 @@ +.brand-logo { + display: inline-block; + width: auto; + flex-shrink: 0; + object-fit: contain; +} + +.brand-logo-dark { display: none; } +:root.dark .brand-logo-light { display: none; } +:root.dark .brand-logo-dark { display: inline-block; } + +.brand-logo-svg { + display: inline-flex; + align-items: center; + flex-shrink: 0; + color: var(--foreground); +} +::deep .brand-logo-svg > svg { + height: 100%; + width: auto; + display: block; +} + +.brand-logo-dot { + width: 1.125rem; + height: 1.125rem; + border-radius: 4px; + background: var(--foreground); + flex-shrink: 0; +} diff --git a/src/ShellDocs.Components/Chrome/DocsFooter.razor b/src/ShellDocs.Components/Chrome/DocsFooter.razor index 41192dd..54f4fc9 100644 --- a/src/ShellDocs.Components/Chrome/DocsFooter.razor +++ b/src/ShellDocs.Components/Chrome/DocsFooter.razor @@ -4,7 +4,7 @@