Skip to content

Commit 5078729

Browse files
TGlidegrmbyrn
authored andcommitted
Applied changes from TGlide's PR consistently across the website
1 parent 59a10b8 commit 5078729

File tree

11 files changed

+1133
-1104
lines changed

11 files changed

+1133
-1104
lines changed

package-lock.json

Lines changed: 8 additions & 62 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"dependencies": {
5555
"@fontsource-variable/roboto-mono": "^5.0.19",
5656
"@fontsource-variable/roboto-slab": "^5.0.20",
57+
"@sveltejs/vite-plugin-svelte": "^3.1.2",
5758
"@tailwindcss/typography": "^0.5.15",
5859
"autoprefixer": "^10.4.20",
5960
"feather-icons": "^4.29.2",

src/lib/components/atoms/PagesWrapper.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
3737
@include for-desktop-up {
3838
.layout {
39+
height: 100%;
3940
flex-direction: row;
4041
gap: 4rem;
4142
}

src/lib/components/atoms/Toc.svelte

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,41 @@
11
<script lang="ts">
2-
import { onMount } from 'svelte'; // ✨ Import Svelte onMount
32
import Tree from './Tree.svelte';
43
import { createTableOfContents } from '@melt-ui/svelte';
54
import { pushState } from '$app/navigation';
65
7-
let isMobileScreen = false;
8-
9-
onMount(() => {
10-
isMobileScreen = window.innerWidth <= 1200;
11-
12-
const handleResize = () => {
13-
isMobileScreen = window.innerWidth <= 1024;
14-
};
15-
window.addEventListener('resize', handleResize);
16-
return () => window.removeEventListener('resize', handleResize); // ✨ Clean up
17-
});
6+
let classes: string;
7+
export { classes as class };
8+
export let selector = '#toc-contents';
189
1910
const {
2011
elements: { item },
2112
states: { activeHeadingIdxs, headingsTree }
2213
} = createTableOfContents({
23-
selector: '#toc-builder-preview',
14+
selector,
2415
exclude: [],
2516
activeType: 'highest',
2617
pushStateFn: pushState,
2718
headingFilterFn: (heading) => !heading.hasAttribute('data-toc-ignore'),
2819
2920
scrollFn: (id) => {
30-
const container = document.getElementById('toc-builder-preview');
3121
const element = document.getElementById(id);
3222
33-
if (container && element) {
34-
const containerTopOffset = container.offsetTop;
35-
const elementTopOffset = element.offsetTop;
36-
37-
if (isMobileScreen) {
38-
element.scrollIntoView({
39-
behavior: 'smooth',
40-
block: 'start'
41-
});
42-
} else {
43-
container.scrollTo({
44-
top: elementTopOffset - containerTopOffset,
45-
behavior: 'smooth'
46-
});
47-
}
48-
}
23+
if (!element) return;
24+
const prevScrollMargin = element.style.scrollMarginTop;
25+
element.style.scrollMarginTop = '16px';
26+
27+
// trigger reflow
28+
getComputedStyle(element);
29+
element?.scrollIntoView({
30+
behavior: 'smooth',
31+
block: 'start'
32+
});
33+
element.style.scrollMarginTop = prevScrollMargin;
4934
}
5035
});
5136
</script>
5237

53-
<div>
38+
<div class="lg:overflow-y-auto rounded-lg text-white {classes}">
5439
<nav>
5540
{#key $headingsTree}
5641
<Tree tree={$headingsTree} activeHeadingIdxs={$activeHeadingIdxs} {item} />

0 commit comments

Comments
 (0)