@myst-theme/site 0.5.3 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +11 -11
- package/src/components/DocumentOutline.tsx +3 -3
- package/src/components/Headers.tsx +13 -4
- package/src/components/Navigation/Navigation.tsx +3 -4
- package/src/components/Navigation/TableOfContents.tsx +3 -5
- package/src/pages/Article.tsx +1 -1
- package/src/pages/Root.tsx +5 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myst-theme/site",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.6",
|
|
4
4
|
"main": "./src/index.ts",
|
|
5
5
|
"types": "./src/index.ts",
|
|
6
6
|
"files": [
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@headlessui/react": "^1.7.15",
|
|
18
18
|
"@heroicons/react": "^2.0.18",
|
|
19
|
-
"@myst-theme/diagrams": "^0.5.
|
|
20
|
-
"@myst-theme/frontmatter": "^0.5.
|
|
21
|
-
"@myst-theme/jupyter": "^0.5.
|
|
22
|
-
"@myst-theme/common": "^0.5.
|
|
23
|
-
"@myst-theme/providers": "^0.5.
|
|
19
|
+
"@myst-theme/diagrams": "^0.5.6",
|
|
20
|
+
"@myst-theme/frontmatter": "^0.5.6",
|
|
21
|
+
"@myst-theme/jupyter": "^0.5.6",
|
|
22
|
+
"@myst-theme/common": "^0.5.6",
|
|
23
|
+
"@myst-theme/providers": "^0.5.6",
|
|
24
24
|
"classnames": "^2.3.2",
|
|
25
25
|
"lodash.throttle": "^4.1.1",
|
|
26
|
-
"myst-common": "^1.1.
|
|
27
|
-
"myst-spec-ext": "^1.1.
|
|
28
|
-
"myst-config": "^1.1.
|
|
29
|
-
"myst-demo": "^0.5.
|
|
30
|
-
"myst-to-react": "^0.5.
|
|
26
|
+
"myst-common": "^1.1.4",
|
|
27
|
+
"myst-spec-ext": "^1.1.4",
|
|
28
|
+
"myst-config": "^1.1.4",
|
|
29
|
+
"myst-demo": "^0.5.6",
|
|
30
|
+
"myst-to-react": "^0.5.6",
|
|
31
31
|
"nbtx": "^0.2.3",
|
|
32
32
|
"node-cache": "^5.1.2",
|
|
33
33
|
"node-fetch": "^2.6.11",
|
|
@@ -220,7 +220,7 @@ export function useOutlineHeight<T extends HTMLElement = HTMLElement>(
|
|
|
220
220
|
|
|
221
221
|
export const DocumentOutline = ({
|
|
222
222
|
outlineRef,
|
|
223
|
-
top,
|
|
223
|
+
top = 0,
|
|
224
224
|
className,
|
|
225
225
|
selector = SELECTOR,
|
|
226
226
|
children,
|
|
@@ -246,8 +246,8 @@ export const DocumentOutline = ({
|
|
|
246
246
|
className,
|
|
247
247
|
)}
|
|
248
248
|
style={{
|
|
249
|
-
top: top
|
|
250
|
-
maxHeight: `calc(100vh - ${
|
|
249
|
+
top: top,
|
|
250
|
+
maxHeight: `calc(100vh - ${top + 20}px)`,
|
|
251
251
|
}}
|
|
252
252
|
>
|
|
253
253
|
<div className="mb-4 text-sm leading-6 uppercase text-slate-900 dark:text-slate-100">
|
|
@@ -23,6 +23,14 @@ export function ArticleHeader({
|
|
|
23
23
|
}) {
|
|
24
24
|
const grid = useGridSystemProvider();
|
|
25
25
|
const { subject, venue, biblio, ...rest } = frontmatter ?? {};
|
|
26
|
+
const positionBackground = {
|
|
27
|
+
'col-page-right': grid === 'article-left-grid',
|
|
28
|
+
'col-page': grid === 'article-grid',
|
|
29
|
+
};
|
|
30
|
+
const positionFrontmatter = {
|
|
31
|
+
'col-body': grid === 'article-left-grid',
|
|
32
|
+
'col-page-left': grid === 'article-grid',
|
|
33
|
+
};
|
|
26
34
|
return (
|
|
27
35
|
<header className="relative col-screen">
|
|
28
36
|
{frontmatter?.banner && (
|
|
@@ -39,9 +47,10 @@ export function ArticleHeader({
|
|
|
39
47
|
>
|
|
40
48
|
<div
|
|
41
49
|
className={classNames(
|
|
42
|
-
'absolute border-white shadow-2xl bg-white/80 dark:bg-black/80 backdrop-blur
|
|
50
|
+
'absolute border-white shadow-2xl bg-white/80 dark:bg-black/80 backdrop-blur',
|
|
43
51
|
'w-full',
|
|
44
52
|
'top-[2rem] h-[calc(100%-4rem)] md:top-[4rem] md:h-[calc(100%-8rem)]',
|
|
53
|
+
positionBackground,
|
|
45
54
|
)}
|
|
46
55
|
/>
|
|
47
56
|
</div>
|
|
@@ -60,9 +69,9 @@ export function ArticleHeader({
|
|
|
60
69
|
>
|
|
61
70
|
<div
|
|
62
71
|
className={classNames('flex w-full align-middle py-2 mb-[1rem] text-sm', {
|
|
63
|
-
'
|
|
72
|
+
'px-4 w-full': frontmatter?.banner,
|
|
64
73
|
'bg-white/80 dark:bg-black/80': frontmatter?.banner,
|
|
65
|
-
|
|
74
|
+
...positionBackground,
|
|
66
75
|
})}
|
|
67
76
|
>
|
|
68
77
|
{subject && (
|
|
@@ -86,7 +95,7 @@ export function ArticleHeader({
|
|
|
86
95
|
<FrontmatterBlock
|
|
87
96
|
frontmatter={rest}
|
|
88
97
|
authorStyle="list"
|
|
89
|
-
className={classNames({ 'pt-4 px-6': frontmatter?.banner })}
|
|
98
|
+
className={classNames({ 'pt-4 px-6': frontmatter?.banner, ...positionFrontmatter })}
|
|
90
99
|
hideBadges
|
|
91
100
|
hideExports
|
|
92
101
|
/>
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import { useNavOpen } from '@myst-theme/providers';
|
|
1
|
+
import { useNavOpen, useThemeTop } from '@myst-theme/providers';
|
|
2
2
|
import { TableOfContents } from './TableOfContents';
|
|
3
3
|
|
|
4
4
|
export function Navigation({
|
|
5
5
|
children,
|
|
6
6
|
projectSlug,
|
|
7
|
-
top,
|
|
8
7
|
tocRef,
|
|
9
8
|
hide_toc,
|
|
10
9
|
footer,
|
|
11
10
|
}: {
|
|
12
11
|
children?: React.ReactNode;
|
|
13
12
|
projectSlug?: string;
|
|
14
|
-
top?: number;
|
|
15
13
|
tocRef?: React.RefObject<HTMLDivElement>;
|
|
16
14
|
hide_toc?: boolean;
|
|
17
15
|
footer?: React.ReactNode;
|
|
18
16
|
}) {
|
|
19
17
|
const [open, setOpen] = useNavOpen();
|
|
18
|
+
const top = useThemeTop();
|
|
20
19
|
if (hide_toc) return <>{children}</>;
|
|
21
20
|
return (
|
|
22
21
|
<>
|
|
@@ -28,7 +27,7 @@ export function Navigation({
|
|
|
28
27
|
onClick={() => setOpen(false)}
|
|
29
28
|
></div>
|
|
30
29
|
)}
|
|
31
|
-
<TableOfContents tocRef={tocRef} projectSlug={projectSlug}
|
|
30
|
+
<TableOfContents tocRef={tocRef} projectSlug={projectSlug} footer={footer} />
|
|
32
31
|
</>
|
|
33
32
|
);
|
|
34
33
|
}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
useBaseurl,
|
|
10
10
|
withBaseurl,
|
|
11
11
|
useGridSystemProvider,
|
|
12
|
+
useThemeTop,
|
|
12
13
|
} from '@myst-theme/providers';
|
|
13
14
|
import { getProjectHeadings, type Heading } from '@myst-theme/common';
|
|
14
15
|
|
|
@@ -136,15 +137,14 @@ export function useTocHeight<T extends HTMLElement = HTMLElement>(top = 0, inset
|
|
|
136
137
|
|
|
137
138
|
export const TableOfContents = ({
|
|
138
139
|
projectSlug,
|
|
139
|
-
top,
|
|
140
140
|
tocRef,
|
|
141
141
|
footer,
|
|
142
142
|
}: {
|
|
143
|
-
top?: number;
|
|
144
143
|
tocRef?: React.RefObject<HTMLElement>;
|
|
145
144
|
projectSlug?: string;
|
|
146
145
|
footer?: React.ReactNode;
|
|
147
146
|
}) => {
|
|
147
|
+
const top = useThemeTop();
|
|
148
148
|
const grid = useGridSystemProvider();
|
|
149
149
|
const footerRef = useRef<HTMLDivElement>(null);
|
|
150
150
|
const [open] = useNavOpen();
|
|
@@ -171,9 +171,7 @@ export const TableOfContents = ({
|
|
|
171
171
|
{ hidden: !open },
|
|
172
172
|
{ 'z-30': open },
|
|
173
173
|
)}
|
|
174
|
-
style={{
|
|
175
|
-
top: top ?? 0,
|
|
176
|
-
}}
|
|
174
|
+
style={{ top }}
|
|
177
175
|
>
|
|
178
176
|
<div
|
|
179
177
|
className={classNames(
|
package/src/pages/Article.tsx
CHANGED
package/src/pages/Root.tsx
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
Link,
|
|
13
13
|
NavLink,
|
|
14
14
|
} from '@remix-run/react';
|
|
15
|
-
import { renderers } from '../components';
|
|
15
|
+
import { DEFAULT_NAV_HEIGHT, renderers } from '../components';
|
|
16
16
|
import { Analytics } from '../seo';
|
|
17
17
|
import { Error404 } from './Error404';
|
|
18
18
|
import classNames from 'classnames';
|
|
@@ -25,18 +25,18 @@ export function Document({
|
|
|
25
25
|
theme,
|
|
26
26
|
config,
|
|
27
27
|
title,
|
|
28
|
-
scrollTopClass = 'scroll-p-20',
|
|
29
28
|
staticBuild,
|
|
30
29
|
baseurl,
|
|
30
|
+
top = DEFAULT_NAV_HEIGHT,
|
|
31
31
|
}: {
|
|
32
32
|
children: React.ReactNode;
|
|
33
33
|
scripts?: React.ReactNode;
|
|
34
34
|
theme: Theme;
|
|
35
35
|
config?: SiteManifest;
|
|
36
36
|
title?: string;
|
|
37
|
-
scrollTopClass?: string;
|
|
38
37
|
staticBuild?: boolean;
|
|
39
38
|
baseurl?: string;
|
|
39
|
+
top?: number;
|
|
40
40
|
}) {
|
|
41
41
|
const links = staticBuild
|
|
42
42
|
? {
|
|
@@ -48,7 +48,7 @@ export function Document({
|
|
|
48
48
|
NavLink: NavLink as any,
|
|
49
49
|
};
|
|
50
50
|
return (
|
|
51
|
-
<html lang="en" className={classNames(theme
|
|
51
|
+
<html lang="en" className={classNames(theme)} style={{ scrollPadding: top }}>
|
|
52
52
|
<head>
|
|
53
53
|
<meta charSet="utf-8" />
|
|
54
54
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
@@ -61,7 +61,7 @@ export function Document({
|
|
|
61
61
|
/>
|
|
62
62
|
</head>
|
|
63
63
|
<body className="m-0 transition-colors duration-500 bg-white dark:bg-stone-900">
|
|
64
|
-
<ThemeProvider theme={theme} renderers={renderers} {...links}>
|
|
64
|
+
<ThemeProvider theme={theme} renderers={renderers} {...links} top={top}>
|
|
65
65
|
<BaseUrlProvider baseurl={baseurl}>
|
|
66
66
|
<ThebeBundleLoaderProvider loadThebeLite publicPath={baseurl}>
|
|
67
67
|
<SiteProvider config={config}>
|