Skip to content

Commit 2bb176a

Browse files
committed
Add cloudflare qualifiers to astro
1 parent d510c35 commit 2bb176a

4 files changed

Lines changed: 33 additions & 36 deletions

File tree

ui/src/components/Sidebar.astro

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,6 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
3333
<span class="arrow-right"><ChevronRight size={16} /></span>
3434
</button>
3535

36-
<script is:inline>
37-
// Run this immediately to prevent layout shift/flash
38-
(function() {
39-
const stored = localStorage.getItem('sidebar-collapsed');
40-
const isMobile = window.innerWidth < 900;
41-
const isCollapsed = isMobile || stored === 'true';
42-
if (isCollapsed) {
43-
const container = document.querySelector('.app-container');
44-
if (container) {
45-
container.classList.add('sidebar-collapsed');
46-
}
47-
}
48-
})();
49-
</script>
5036

5137
<div class="sidebar-header">
5238
<div class="header-top">
@@ -125,7 +111,7 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
125111
position: relative;
126112
}
127113

128-
:global(.app-container.sidebar-transitioning) .sidebar {
114+
:global(html.sidebar-transitioning) .sidebar {
129115
transition: margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
130116
}
131117

@@ -151,7 +137,7 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
151137
font-weight: bold;
152138
}
153139

154-
:global(.app-container.sidebar-transitioning) .sidebar-toggle-btn {
140+
:global(html.sidebar-transitioning) .sidebar-toggle-btn {
155141
transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1), background-color var(--transition-speed), transform var(--transition-speed);
156142
}
157143

@@ -165,11 +151,11 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
165151
display: none;
166152
}
167153

168-
:global(.app-container.sidebar-collapsed) .arrow-left {
154+
:global(html.sidebar-collapsed) .arrow-left {
169155
display: none;
170156
}
171157

172-
:global(.app-container.sidebar-collapsed) .arrow-right {
158+
:global(html.sidebar-collapsed) .arrow-right {
173159
display: flex;
174160
}
175161

@@ -178,11 +164,11 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
178164
transform: scale(1.05);
179165
}
180166

181-
:global(.app-container.sidebar-collapsed) .sidebar {
167+
:global(html.sidebar-collapsed) .sidebar {
182168
margin-left: calc(-1 * var(--sidebar-width));
183169
}
184170

185-
:global(.app-container.sidebar-collapsed) .sidebar-toggle-btn {
171+
:global(html.sidebar-collapsed) .sidebar-toggle-btn {
186172
right: -45px;
187173
}
188174

@@ -371,7 +357,7 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
371357

372358

373359

374-
:global(.app-container:not(.sidebar-collapsed)) .sidebar-backdrop {
360+
:global(html:not(.sidebar-collapsed)) .sidebar-backdrop {
375361
display: block;
376362
position: fixed;
377363
top: 0;
@@ -465,30 +451,29 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
465451
// Handle sidebar toggle collapsing/expanding
466452
function setupSidebarToggle() {
467453
const toggleBtn = document.getElementById('sidebar-toggle');
468-
const container = document.querySelector('.app-container');
469454
const backdrop = document.getElementById('sidebar-backdrop');
470-
if (!toggleBtn || !container || toggleBtn.dataset.toggleInitialized) return;
455+
if (!toggleBtn || toggleBtn.dataset.toggleInitialized) return;
471456
toggleBtn.dataset.toggleInitialized = 'true';
472457

473458
// Load initial state
474459
const stored = localStorage.getItem('sidebar-collapsed');
475460
const isMobile = window.innerWidth < 900;
476461
const isCollapsed = isMobile || stored === 'true';
477462
if (isCollapsed) {
478-
container.classList.add('sidebar-collapsed');
463+
document.documentElement.classList.add('sidebar-collapsed');
479464
} else {
480-
container.classList.remove('sidebar-collapsed');
465+
document.documentElement.classList.remove('sidebar-collapsed');
481466
}
482467

483468
const closeSidebar = () => {
484-
container.classList.add('sidebar-transitioning');
485-
container.classList.add('sidebar-collapsed');
469+
document.documentElement.classList.add('sidebar-transitioning');
470+
document.documentElement.classList.add('sidebar-collapsed');
486471
localStorage.setItem('sidebar-collapsed', 'true');
487472
};
488473

489474
toggleBtn.addEventListener('click', () => {
490-
container.classList.add('sidebar-transitioning');
491-
const collapsed = container.classList.toggle('sidebar-collapsed');
475+
document.documentElement.classList.add('sidebar-transitioning');
476+
const collapsed = document.documentElement.classList.toggle('sidebar-collapsed');
492477
localStorage.setItem('sidebar-collapsed', String(collapsed));
493478
});
494479

@@ -500,7 +485,7 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
500485
const sidebar = document.querySelector('.sidebar');
501486
if (sidebar) {
502487
const clearTransition = () => {
503-
container.classList.remove('sidebar-transitioning');
488+
document.documentElement.classList.remove('sidebar-transitioning');
504489
};
505490
sidebar.addEventListener('transitionend', clearTransition);
506491
sidebar.addEventListener('transitioncancel', clearTransition);
@@ -514,10 +499,10 @@ const categoryOrder = ["syntax", "data_structures", "classes", "advanced"];
514499
const isMobile = currentWidth < 900;
515500

516501
if (wasDesktop && isMobile) {
517-
container.classList.add('sidebar-collapsed');
502+
document.documentElement.classList.add('sidebar-collapsed');
518503
} else if (!wasDesktop && !isMobile) {
519504
// Always expand the sidebar on desktop width and save state
520-
container.classList.remove('sidebar-collapsed');
505+
document.documentElement.classList.remove('sidebar-collapsed');
521506
localStorage.setItem('sidebar-collapsed', 'false');
522507
}
523508
lastWidth = currentWidth;

ui/src/layouts/Layout.astro

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ const lang = getLangFromUrl(Astro.url);
2828
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500&family=Inter:wght@400;500;600&family=Lora:ital,wght@0,400;0,600;0,700;1,400&display=swap" rel="stylesheet" />
2929

3030
<ClientRouter />
31+
<script is:inline data-cfasync="false">
32+
(function() {
33+
try {
34+
const stored = localStorage.getItem('sidebar-collapsed');
35+
const isMobile = window.innerWidth < 900;
36+
const isCollapsed = isMobile || stored === 'true';
37+
if (isCollapsed) {
38+
document.documentElement.classList.add('sidebar-collapsed');
39+
}
40+
} catch (e) {}
41+
})();
42+
</script>
3143
</head>
3244
<body>
3345
<slot />

ui/src/pages/[lang]/[...path].astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ const { lesson } = Astro.props;
8282
flex-shrink: 0;
8383
}
8484

85-
:global(.app-container.sidebar-transitioning) .pane-header {
85+
:global(html.sidebar-transitioning) .pane-header {
8686
transition: padding-left var(--transition-speed);
8787
}
8888

89-
:global(.app-container.sidebar-collapsed) .pane-header {
89+
:global(html.sidebar-collapsed) .pane-header {
9090
padding-left: 3.5rem;
9191
}
9292

ui/src/pages/[lang]/index.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,11 +242,11 @@ const totalLessons = lessons.length;
242242
padding: 3rem 1.25rem;
243243
}
244244

245-
:global(.app-container.sidebar-transitioning) .welcome-container {
245+
:global(html.sidebar-transitioning) .welcome-container {
246246
transition: padding-left var(--transition-speed);
247247
}
248248

249-
:global(.app-container.sidebar-collapsed) .welcome-container {
249+
:global(html.sidebar-collapsed) .welcome-container {
250250
padding-left: 3.5rem;
251251
}
252252

0 commit comments

Comments
 (0)