Skip to content

Commit 6992af5

Browse files
committed
sidebar toggle
1 parent fe8a2f0 commit 6992af5

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

public/style.css

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ main {
6868
}
6969

7070
#observablehq-sidebar {
71-
display: none;
7271
position: fixed;
7372
background: var(--theme-background-alt);
7473
color: var(--theme-foreground);
@@ -78,7 +77,7 @@ main {
7877
z-index: 1;
7978
top: 0;
8079
bottom: 0;
81-
left: 0;
80+
left: calc(-240px - 2rem);
8281
padding: 1rem;
8382
}
8483

@@ -92,6 +91,26 @@ main {
9291
margin: 0;
9392
}
9493

94+
#observablehq-sidebar-toggle {
95+
position: fixed;
96+
top: 0;
97+
bottom: 0;
98+
left: 0;
99+
appearance: none;
100+
display: flex;
101+
align-items: center;
102+
margin: 0;
103+
cursor: pointer;
104+
z-index: 2;
105+
}
106+
107+
#observablehq-sidebar-toggle::before {
108+
content: "≡";
109+
padding: 2px;
110+
color: var(--theme-foreground-faint);
111+
font-size: 20px;
112+
}
113+
95114
.observablehq-link a {
96115
display: block;
97116
padding: 0.5rem 1rem;
@@ -123,11 +142,23 @@ main {
123142
color: var(--theme-foreground-focus);
124143
}
125144

145+
#observablehq-sidebar-toggle:checked + #observablehq-sidebar {
146+
left: 0;
147+
box-shadow: 0 0 8px 8px rgba(0, 0, 0, 0.5);
148+
}
149+
150+
#observablehq-sidebar {
151+
transition: left 150ms ease;
152+
}
153+
126154
@media (min-width: calc(640px + 4rem + 0.5rem + 240px + 2rem)) {
127155
#observablehq-sidebar {
128-
display: initial;
156+
transition: none;
157+
}
158+
#observablehq-sidebar-toggle:checked + #observablehq-sidebar {
159+
box-shadow: none;
129160
}
130-
#observablehq-center.observablehq--sidebar {
161+
#observablehq-sidebar-toggle:checked ~ #observablehq-center {
131162
padding-left: calc(240px + 3rem);
132163
}
133164
pre {

src/render.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ ${JSON.stringify(parseResult.data)}
8585
}
8686
${
8787
showSidebar
88-
? `<nav id="observablehq-sidebar">
88+
? `<input id="observablehq-sidebar-toggle" type="checkbox">
89+
<nav id="observablehq-sidebar">
8990
<ol>${pages
9091
?.map(
9192
(p) => `
@@ -96,9 +97,10 @@ ${
9697
.join("")}
9798
</ol>
9899
</nav>
100+
<script>document.querySelector("#observablehq-sidebar-toggle").checked = matchMedia("(min-width: calc(640px + 4rem + 0.5rem + 240px + 2rem))").matches;</script>
99101
`
100102
: ""
101-
}<div id="observablehq-center"${showSidebar ? ` class="observablehq--sidebar"` : ""}>
103+
}<div id="observablehq-center">
102104
<main class="observablehq">
103105
${parseResult.html}</main>
104106
</div>

0 commit comments

Comments
 (0)