@myst-theme/site 0.5.3 → 0.5.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myst-theme/site",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
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.3",
20
- "@myst-theme/frontmatter": "^0.5.3",
21
- "@myst-theme/jupyter": "^0.5.3",
22
- "@myst-theme/common": "^0.5.3",
23
- "@myst-theme/providers": "^0.5.3",
19
+ "@myst-theme/diagrams": "^0.5.4",
20
+ "@myst-theme/frontmatter": "^0.5.4",
21
+ "@myst-theme/jupyter": "^0.5.4",
22
+ "@myst-theme/common": "^0.5.4",
23
+ "@myst-theme/providers": "^0.5.4",
24
24
  "classnames": "^2.3.2",
25
25
  "lodash.throttle": "^4.1.1",
26
26
  "myst-common": "^1.1.1",
27
27
  "myst-spec-ext": "^1.1.1",
28
28
  "myst-config": "^1.1.1",
29
- "myst-demo": "^0.5.3",
30
- "myst-to-react": "^0.5.3",
29
+ "myst-demo": "^0.5.4",
30
+ "myst-to-react": "^0.5.4",
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 ?? 0,
250
- maxHeight: `calc(100vh - ${(top ?? 0) + 20}px)`,
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 col-page-right',
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
- 'col-page-right px-4 w-full': frontmatter?.banner,
72
+ 'px-4 w-full': frontmatter?.banner,
64
73
  'bg-white/80 dark:bg-black/80': frontmatter?.banner,
65
- 'col-page-right': !frontmatter?.banner,
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} top={top} footer={footer} />
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(
@@ -50,7 +50,7 @@ export const ArticlePage = React.memo(function ({
50
50
  <FrontmatterBlock
51
51
  kind={article.kind}
52
52
  frontmatter={article.frontmatter}
53
- className="mb-8"
53
+ className="pt-5 mb-8"
54
54
  />
55
55
  )}
56
56
  {binderUrl && !canCompute && (
@@ -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, scrollTopClass)}>
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}>