Skip to content

Commit bc2ff02

Browse files
committed
Fix right sidebar inconsistencies
Between viewport widths of 1400px and 1560px, the right sidebar would not show. This change fixes that, so the graph is always shown either in the sidebar or at the bottom for mobile.
1 parent e3ac117 commit bc2ff02

1 file changed

Lines changed: 19 additions & 33 deletions

File tree

src/site/styles/digital-garden-base.scss

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,16 @@ img {
145145

146146
.content {
147147
max-width: var(--dg-content-max-width);
148-
// Dynamic left margin: larger of centering margin OR filetree clearance
149-
// This ensures content never overlaps with filetree regardless of content width
148+
// Dynamic left margin with three constraints:
149+
// 1. Never overlap filetree (minimum)
150+
// 2. Try to center in viewport
151+
// 3. But shift left if needed to leave room for sidebar
150152
margin-left: max(
151-
calc((100vw - var(--dg-content-max-width)) / 2),
152-
calc(var(--dg-filetree-min-width) + var(--dg-filetree-gap))
153+
calc(var(--dg-filetree-min-width) + var(--dg-filetree-gap)),
154+
min(
155+
calc((100vw - var(--dg-content-max-width)) / 2),
156+
calc(100vw - var(--dg-content-max-width) - var(--dg-sidebar-max-width) - var(--dg-sidebar-gap) - 20px)
157+
)
153158
);
154159
margin-right: auto;
155160
font-size: var(--dg-content-font-size);
@@ -201,23 +206,17 @@ ul.task-list {
201206
.sidebar {
202207
position: fixed !important;
203208
top: var(--dg-sidebar-top);
204-
// Position after content: tracks content's right edge + gap
205-
// Uses same max() logic as content margin-left
206-
--sidebar-left: calc(
209+
210+
// Position after content: follows content's right edge + gap
211+
// Content margin-left already accounts for sidebar, so this won't overlap
212+
left: calc(
207213
max(
208-
calc((100vw + var(--dg-content-max-width)) / 2),
209-
calc(var(--dg-filetree-min-width) + var(--dg-filetree-gap) + var(--dg-content-max-width))
210-
) + var(--dg-sidebar-gap)
211-
);
212-
left: var(--sidebar-left);
213-
214-
// Calculate overflow: how much sidebar extends past viewport
215-
// If positive (overflow), clamp multiplies to 100vw pushing it off-screen
216-
// If negative (fits), clamp results in 0px
217-
// Users can adjust --dg-sidebar-max-width to control when sidebar appears
218-
--sidebar-overflow: calc(var(--sidebar-left) + var(--dg-sidebar-max-width) - 100vw);
219-
transform: translateX(
220-
clamp(0px, calc(var(--sidebar-overflow) * 9999), 100vw)
214+
calc(var(--dg-filetree-min-width) + var(--dg-filetree-gap)),
215+
min(
216+
calc((100vw - var(--dg-content-max-width)) / 2),
217+
calc(100vw - var(--dg-content-max-width) - var(--dg-sidebar-max-width) - var(--dg-sidebar-gap) - 20px)
218+
)
219+
) + var(--dg-content-max-width) + var(--dg-sidebar-gap)
221220
);
222221

223222
height: 100%;
@@ -226,19 +225,6 @@ ul.task-list {
226225
z-index: 3;
227226
max-width: var(--dg-sidebar-max-width);
228227

229-
@media (max-width: 1400px) {
230-
// At this breakpoint, also check if sidebar would overlap with content
231-
// Content ends at: 100vw - 50px (from max-width calc)
232-
// Sidebar starts at: 100vw - 17px - sidebar-width
233-
// Hide if content is too wide
234-
--sidebar-overflow-1400: calc(var(--dg-content-max-width) + var(--dg-filetree-width) + 20px + var(--dg-sidebar-max-width) + 17px - 100vw);
235-
left: auto;
236-
right: 17px;
237-
transform: translateX(
238-
clamp(0px, calc(var(--sidebar-overflow-1400) * 9999), 100vw)
239-
);
240-
}
241-
242228
.graph {
243229
width: var(--dg-graph-width);
244230
min-height: var(--dg-graph-height);

0 commit comments

Comments
 (0)