Override some Starlight components
This commit is contained in:
parent
4b60ff664a
commit
b8eb4420f4
3 changed files with 145 additions and 0 deletions
105
src/components/PageFrame.astro
Normal file
105
src/components/PageFrame.astro
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
---
|
||||||
|
import MobileMenuToggle from 'virtual:starlight/components/MobileMenuToggle'
|
||||||
|
import type { Props } from '@astrojs/starlight/props'
|
||||||
|
|
||||||
|
const { hasSidebar, labels } = Astro.props;
|
||||||
|
import { fade, ViewTransitions } from 'astro:transitions'
|
||||||
|
import Search from '@astrojs/starlight/components/Search.astro'
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="page sl-flex">
|
||||||
|
<ViewTransitions/>
|
||||||
|
<header class="header"><slot name="header" /></header>
|
||||||
|
<div class="main-frame">
|
||||||
|
{
|
||||||
|
hasSidebar && (
|
||||||
|
<nav class="sidebar" aria-label={labels['sidebarNav.accessibleLabel']}>
|
||||||
|
<MobileMenuToggle {...Astro.props} />
|
||||||
|
|
||||||
|
<div class="support-center-search-sidebar">
|
||||||
|
<Search {...Astro.props}><slot /></Search>
|
||||||
|
</div>
|
||||||
|
<div id="starlight__sidebar" class="sidebar-pane">
|
||||||
|
<div class="sidebar-content sl-flex">
|
||||||
|
<slot name="sidebar" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
<div class="sl-content">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.page {
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
z-index: var(--sl-z-index-navbar);
|
||||||
|
position: fixed;
|
||||||
|
inset-inline-start: 0;
|
||||||
|
inset-block-start: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: var(--sl-nav-height);
|
||||||
|
border-bottom: 1px solid var(--sl-color-hairline-shade);
|
||||||
|
padding: var(--sl-nav-pad-y) var(--sl-nav-pad-x);
|
||||||
|
padding-inline-end: var(--sl-nav-pad-x);
|
||||||
|
background-color: var(--sl-color-bg-nav);
|
||||||
|
}
|
||||||
|
|
||||||
|
:global([data-has-sidebar]) .header {
|
||||||
|
padding-inline-end: calc(var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-pane {
|
||||||
|
visibility: var(--sl-sidebar-visibility, hidden);
|
||||||
|
position: fixed;
|
||||||
|
z-index: var(--sl-z-index-menu);
|
||||||
|
inset-block: var(--sl-nav-height) 0;
|
||||||
|
inset-inline-start: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--sl-color-black);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global([aria-expanded='true']) ~ .sidebar-pane {
|
||||||
|
--sl-sidebar-visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-content {
|
||||||
|
height: 100%;
|
||||||
|
min-height: max-content;
|
||||||
|
padding: 1rem var(--sl-sidebar-pad-x) 0;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 50rem) {
|
||||||
|
.sidebar-content::after {
|
||||||
|
content: '';
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-frame {
|
||||||
|
padding-top: calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));
|
||||||
|
padding-inline-start: var(--sl-content-inline-start);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 50rem) {
|
||||||
|
:global([data-has-sidebar]) .header {
|
||||||
|
padding-inline-end: var(--sl-nav-pad-x);
|
||||||
|
}
|
||||||
|
.sidebar-pane {
|
||||||
|
--sl-sidebar-visibility: visible;
|
||||||
|
width: var(--sl-sidebar-width);
|
||||||
|
background-color: var(--sl-color-bg-sidebar);
|
||||||
|
border-inline-end: 1px solid var(--sl-color-hairline-shade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
23
src/components/global/Head-Starlight.astro
Normal file
23
src/components/global/Head-Starlight.astro
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
const { Title, Description } = Astro.props
|
||||||
|
---
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Metadata -->
|
||||||
|
<title>{Title}</title>
|
||||||
|
<meta name="description" content={Description}>
|
||||||
|
|
||||||
|
<!-- Options -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="theme-color" content="#2970cc">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no, viewport-fit=cover">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="256x256" href="/assets/images/favicon/256x256.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="32x32" href="/assets/images/favicon/32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="256x256" href="/assets/images/favicon/256x256.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon/32x32.png">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/@shoelace-style/shoelace/cdn/themes/dark.css" onload="document.documentElement.classList.add('sl-theme-dark');"/>
|
||||||
|
<script type="module" src="/@shoelace-style/shoelace/cdn/shoelace.js"></script>
|
||||||
|
</head>
|
17
src/components/starlight/Pagination.astro
Normal file
17
src/components/starlight/Pagination.astro
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
import "astro-feelback/styles/feelback.css"
|
||||||
|
import FeelbackYesNo from "astro-feelback/components/FeelbackYesNo.astro"
|
||||||
|
|
||||||
|
// Check if user is on Support Center
|
||||||
|
if (Astro.url.pathname.startsWith("/support")) {
|
||||||
|
var IsOnSupport = true
|
||||||
|
} else {
|
||||||
|
var IsOnSupport = false
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
{IsOnSupport ?
|
||||||
|
<div class="container"><FeelbackYesNo contentSetId="98b1b74f-cd4d-4808-bfd4-0498f52ee448" preset="check" showCount/></div>
|
||||||
|
:
|
||||||
|
null
|
||||||
|
}
|
Reference in a new issue