1+ ---
2+ import MobileMenuToggle from ' virtual:starlight/components/MobileMenuToggle' ;
3+
4+ const { hasSidebar } = Astro .locals .starlightRoute ;
5+ const isHome = Astro .url .pathname === " /" ;
6+ ---
7+
8+ <div class =" page sl-flex" >
9+ <header class ={ isHome ? " home-header header" : " header" } data-vtbot-replace =" header" >
10+ <slot name =" header" />
11+ </header >
12+ {
13+ hasSidebar && (
14+ <nav class = " sidebar print:hidden" aria-label = { Astro .locals .t (' sidebarNav.accessibleLabel' )} >
15+ <MobileMenuToggle />
16+ <div id = " starlight__sidebar" class = " sidebar-pane" >
17+ <div class = " sidebar-content sl-flex" >
18+ <slot name = " sidebar" />
19+ </div >
20+ </div >
21+ </nav >
22+ )
23+ }
24+ <div class =" main-frame" ><slot /></div >
25+ </div >
26+
27+ <style >
28+ @layer starlight.core {
29+ .page {
30+ flex-direction: column;
31+ min-height: 100vh;
32+ }
33+
34+ .header {
35+ z-index: var(--sl-z-index-navbar);
36+ position: fixed;
37+ inset-inline-start: 0;
38+ inset-block-start: 0;
39+ width: 100%;
40+ height: var(--sl-nav-height);
41+ border-bottom: 1px solid var(--sl-color-hairline-shade);
42+ padding: var(--sl-nav-pad-y) var(--sl-nav-pad-x);
43+ padding-inline-end: var(--sl-nav-pad-x);
44+ background-color: var(--sl-color-bg-nav);
45+ }
46+
47+ :global([data-has-sidebar]) .header {
48+ padding-inline-end: calc(
49+ var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size)
50+ );
51+ }
52+
53+ .sidebar-pane {
54+ visibility: var(--sl-sidebar-visibility, hidden);
55+ position: fixed;
56+ z-index: var(--sl-z-index-menu);
57+ inset-block: var(--sl-nav-height) 0;
58+ inset-inline-start: 0;
59+ width: 100%;
60+ background-color: var(--sl-color-black);
61+ overflow-y: auto;
62+ }
63+
64+ :global([aria-expanded='true']) ~ .sidebar-pane {
65+ --sl-sidebar-visibility: visible;
66+ }
67+
68+ .sidebar-content {
69+ height: 100%;
70+ min-height: max-content;
71+ padding: 1rem var(--sl-sidebar-pad-x) 0;
72+ flex-direction: column;
73+ gap: 1rem;
74+ }
75+
76+ @media (min-width: 50rem) {
77+ .sidebar-content::after {
78+ content: '';
79+ padding-bottom: 1px;
80+ }
81+ }
82+
83+ .main-frame {
84+ padding-top: calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));
85+ padding-inline-start: var(--sl-content-inline-start);
86+ }
87+
88+ @media (min-width: 50rem) {
89+ :global([data-has-sidebar]) .header {
90+ padding-inline-end: var(--sl-nav-pad-x);
91+ }
92+ .sidebar-pane {
93+ --sl-sidebar-visibility: visible;
94+ width: var(--sl-sidebar-width);
95+ background-color: var(--sl-color-bg-sidebar);
96+ border-inline-end: 1px solid var(--sl-color-hairline-shade);
97+ }
98+ }
99+ }
100+ </style >
0 commit comments