timvir 0.2.11 → 0.2.13

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.
Files changed (40) hide show
  1. package/blocks/Arbitrary/samples/basic.d.ts +1 -1
  2. package/blocks/Code/docs/index.mdx +1 -1
  3. package/blocks/Code/index.js +39 -43
  4. package/blocks/Code/samples/basic.d.ts +1 -1
  5. package/blocks/Code/samples/toggle.d.ts +2 -2
  6. package/blocks/Code/styles.css +3 -3
  7. package/blocks/ColorBar/samples/basic.d.ts +2 -2
  8. package/blocks/ColorBook/samples/basic.d.ts +2 -2
  9. package/blocks/Cover/samples/basic.d.ts +2 -2
  10. package/blocks/Exhibit/samples/basic.d.ts +2 -2
  11. package/blocks/Font/samples/basic.d.ts +1 -1
  12. package/blocks/Font/samples/system.d.ts +2 -2
  13. package/blocks/Grid/samples/basic.d.ts +2 -2
  14. package/blocks/Icon/internal/Canvas.d.ts +1 -1
  15. package/blocks/Icon/samples/basic.d.ts +2 -2
  16. package/blocks/Message/samples/basic.d.ts +1 -1
  17. package/blocks/Swatch/samples/basic.d.ts +2 -2
  18. package/blocks/Viewport/internal/Caption.d.ts +1 -1
  19. package/blocks/Viewport/internal/Handle.d.ts +1 -1
  20. package/blocks/Viewport/internal/Ruler.d.ts +2 -2
  21. package/blocks/Viewport/samples/basic.d.ts +2 -2
  22. package/blocks/WebLink/samples/basic.d.ts +1 -1
  23. package/blocks/styles.css +3 -3
  24. package/core/components/Commands/internal/Action.d.ts +1 -1
  25. package/core/components/Commands/internal/Dialog.d.ts +2 -2
  26. package/core/components/Footer/samples/basic.d.ts +1 -1
  27. package/core/components/NavigationFooter/samples/basic.d.ts +1 -1
  28. package/core/components/Page/Page.d.ts +2 -2
  29. package/core/components/Page/components.d.ts +17 -45
  30. package/core/components/Page/internal/Section.d.ts +2 -2
  31. package/core/components/Page/internal/Sidebar.d.ts +1 -1
  32. package/core/components/Page/samples/basic.d.ts +2 -2
  33. package/core/components/Page/samples/layout.d.ts +2 -2
  34. package/core/index.js +17 -10
  35. package/package.json +3 -3
  36. package/search/Search/internal/Highlight.d.ts +2 -2
  37. package/search/Search/samples/basic.d.ts +2 -2
  38. package/search/SearchBoxInput/samples/basic.d.ts +2 -2
  39. package/search/SearchBoxListItem/samples/basic.d.ts +2 -2
  40. package/styles.css +3 -3
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { Arbitrary } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof Arbitrary>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -21,7 +21,7 @@ The component supports many different languages such as
21
21
  </Code>
22
22
 
23
23
  The default language is "markdown", but you can specify any of the languages
24
- which are supported by [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer).
24
+ which are supported by [shiki](https://shiki.style/themes).
25
25
 
26
26
  <Code language="javascript" caption="The Hitchhiker's Guide to the Galaxy">
27
27
  {'const answer = 42;'}
@@ -1,6 +1,6 @@
1
1
  import * as Page from 'timvir/core';
2
2
  import { useBlock } from 'timvir/core';
3
- import { Highlight } from 'prism-react-renderer';
3
+ import { codeToHtml } from 'shiki';
4
4
  import * as React from 'react';
5
5
  import * as Icons from 'react-feather';
6
6
  import { useImmer } from 'use-immer';
@@ -40,14 +40,11 @@ var theme = "tac6gx6";
40
40
  * This is documentation for the Code component.
41
41
  */
42
42
 
43
+
43
44
  /**
44
45
  * The underlying DOM element which is rendered by this component.
45
46
  */
46
47
  const Root = "div";
47
- const nullTheme = {
48
- plain: {},
49
- styles: []
50
- };
51
48
  function Code(props, ref) {
52
49
  const block = useBlock(props);
53
50
  const {
@@ -56,32 +53,47 @@ function Code(props, ref) {
56
53
  fullWidth,
57
54
  highlightedLines,
58
55
  caption,
56
+ className,
59
57
  ...rest
60
58
  } = block.props;
61
- const isHighlightedLine = (() => {
62
- return line => highlightedLines === null || highlightedLines === void 0 ? void 0 : highlightedLines.includes(line);
63
- })();
64
59
  const [state, mutate] = useImmer({
65
60
  mouseOver: false,
66
- copiedToClipboard: false
61
+ copiedToClipboard: false,
62
+ html: ""
67
63
  });
64
+ React.useEffect(() => {
65
+ (async () => {
66
+ const html = await codeToHtml(children.trim(), {
67
+ lang: language !== null && language !== void 0 ? language : "markup",
68
+ themes: {
69
+ light: "github-light",
70
+ dark: "github-dark"
71
+ },
72
+ decorations: (highlightedLines !== null && highlightedLines !== void 0 ? highlightedLines : []).map(line => ({
73
+ start: {
74
+ line: line - 1,
75
+ character: 0
76
+ },
77
+ end: {
78
+ line: line,
79
+ character: 0
80
+ },
81
+ properties: {
82
+ class: classes.highlightedLine
83
+ }
84
+ }))
85
+ });
86
+ mutate(draft => {
87
+ draft.html = html;
88
+ });
89
+ })();
90
+ }, [mutate, children, language]);
68
91
  return /*#__PURE__*/React.createElement(Root, {
69
92
  ref: ref,
70
93
  className: cx_default(classes.root, fullWidth && Page.fullWidth),
71
94
  ...rest
72
- }, /*#__PURE__*/React.createElement(Highlight, {
73
- code: children.trim(),
74
- language: language !== null && language !== void 0 ? language : "markup",
75
- theme: nullTheme
76
- }, ({
77
- className,
78
- style,
79
- tokens,
80
- getLineProps,
81
- getTokenProps
82
- }) => /*#__PURE__*/React.createElement("pre", {
83
- className: cx_default(className, theme, classes.code, fullWidth && classes.fullWidth),
84
- style: style
95
+ }, /*#__PURE__*/React.createElement("div", {
96
+ className: cx_default(className, theme, classes.code, fullWidth && classes.fullWidth)
85
97
  }, /*#__PURE__*/React.createElement("div", {
86
98
  className: "d1513p2s",
87
99
  onMouseEnter: () => {
@@ -115,27 +127,11 @@ function Code(props, ref) {
115
127
  }) : /*#__PURE__*/React.createElement(Icons.Copy, {
116
128
  size: "16px"
117
129
  })), /*#__PURE__*/React.createElement("div", {
118
- className: cx_default(fullWidth ? "d17pltln" : "d793q8f")
119
- }, tokens.map((line, i) => {
120
- const {
121
- className,
122
- ...lineProps
123
- } = getLineProps({
124
- line,
125
- key: i
126
- });
127
- return /*#__PURE__*/React.createElement("div", {
128
- key: i,
129
- ...lineProps,
130
- className: cx_default(className, classes.line, isHighlightedLine(i + 1) && classes.highlightedLine)
131
- }, line.map((token, key) => /*#__PURE__*/React.createElement("span", {
132
- key: key,
133
- ...getTokenProps({
134
- token,
135
- key
136
- })
137
- })));
138
- }))))), caption && /*#__PURE__*/React.createElement("div", {
130
+ className: cx_default(fullWidth ? "d17pltln" : "d793q8f"),
131
+ dangerouslySetInnerHTML: {
132
+ __html: state.html
133
+ }
134
+ }))), caption && /*#__PURE__*/React.createElement("div", {
139
135
  className: classes.caption
140
136
  }, caption));
141
137
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { Code } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof Code>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample({ language, children }: any): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample({ language, children }: any): React.JSX.Element;
@@ -1,13 +1,13 @@
1
1
  .tac6gx6{color:#393a34;background-color:#f6f8fa;}.tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}.tac6gx6 :is(.namespace){opacity:0.7;}.tac6gx6 :is(.string,.attr-value){color:#e3116c;}.tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}.tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}.tac6gx6 :is(.tag,.selector,.keyword){color:#00009f;}.tac6gx6 :is(.function-variable){color:#6f42c1;}.tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#00a4db;}.tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#36acaa;}:root[data-timvir-theme="dark"] .tac6gx6{color:#adbac7;background-color:#2d333b;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.namespace){opacity:0.7;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.string,.attr-value){color:#96d0ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.tag,.selector,.keyword){color:#8ddb8c;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function-variable){color:#6f42c1;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#f47067;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#dcbdfb;}
2
2
 
3
- .d1513p2s{display:grid;grid-template-columns:1fr;padding-block:16px;}
3
+ .d1513p2s{display:grid;grid-template-columns:1fr;}
4
4
  .b157mkz{--size:48px;z-index:1;position:absolute;top:0;right:0;overflow:hidden;width:var(--size);height:var(--size);display:flex;align-items:flex-start;justify-content:flex-end;outline:none;border:none;padding:6px;background:transparent;transition:all 0.2s;cursor:pointer;pointer-events:none;opacity:0;}.b157mkz:hover{color:white;}.b157mkz:hover svg:first-child{transform:translate(0,0);}.b157mkz:active svg:first-child{transform:translate(2px,-2px);}
5
5
  .b10oxtfo{pointer-events:all;opacity:1;}
6
6
  .s1hdfi6o{position:absolute;z-index:-1;top:0;right:0;transition:all 0.2s;transform:translate(48px,-48px);}.s1hdfi6o path{fill:var(--c-p-4);}
7
7
  .d17pltln{padding:16px 24px 16px 0;}
8
8
 
9
- .r9v2r0l{margin:1.5rem 0 3rem;}
10
- .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}
9
+ .r9v2r0l{margin:1.5rem 0 3rem;}:root[data-timvir-theme="dark"] .r9v2r0l .shiki,:root[data-timvir-theme="dark"] .r9v2r0l .shiki span{color:var(--shiki-dark) !important;font-style:var(--shiki-dark-font-style) !important;font-weight:var(--shiki-dark-font-weight) !important;text-decoration:var(--shiki-dark-text-decoration) !important;}
10
+ .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}.cs7tint pre{margin:0;padding:16px 0;background-color:transparent !important;}.cs7tint pre code{display:block;}.cs7tint pre code .line{display:inline-block;position:relative;width:100%;}.cs7tint pre .line{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
11
11
  .fjvaz2s{display:grid;border-radius:0;box-shadow:none;margin-inline:0;grid-auto-rows:min-content;grid-template-columns:[le] 0 [lc] 1fr [rc] 0 [re];grid-column-gap:16px;}.fjvaz2s:hover{box-shadow:none;}@media (min-width:60rem){.fjvaz2s{grid-template-columns:[le] 1fr [lc] minmax(0,48rem) [rc] 1fr [re];grid-column-gap:24px;}}.fjvaz2s > *{grid-column:lc / re;}
12
12
  .lchll0h{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
13
13
  .h1xcko1i{background-color:#ffe10044;}:root[data-timvir-theme="dark"] .h1xcko1i{background-color:rgba(174,124,20,0.15);}
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { Font } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof Font>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -5,5 +5,5 @@ interface Props {
5
5
  size: number;
6
6
  Component: React.ElementType;
7
7
  }
8
- declare function Canvas(props: Props): JSX.Element;
8
+ declare function Canvas(props: Props): React.JSX.Element;
9
9
  export default Canvas;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { Message } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof Message>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -3,6 +3,6 @@ interface Props {
3
3
  src: string;
4
4
  code?: string;
5
5
  }
6
- declare function Caption(props: Props): JSX.Element;
6
+ declare function Caption(props: Props): React.JSX.Element;
7
7
  declare const _default: React.MemoExoticComponent<typeof Caption>;
8
8
  export default _default;
@@ -5,6 +5,6 @@ interface Props {
5
5
  edge: "left" | "right";
6
6
  iframeRef: React.RefObject<HTMLIFrameElement>;
7
7
  }
8
- declare function Handle(props: Props): JSX.Element;
8
+ declare function Handle(props: Props): React.JSX.Element;
9
9
  declare const _default: React.MemoExoticComponent<typeof Handle>;
10
10
  export default _default;
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import * as React from "react";
2
2
  interface Props {
3
3
  containerWidth?: number;
4
4
  viewportWidth?: number;
5
5
  }
6
- declare function Ruler(props: Props): JSX.Element;
6
+ declare function Ruler(props: Props): React.JSX.Element;
7
7
  export default Ruler;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { WebLink } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof WebLink>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
package/blocks/styles.css CHANGED
@@ -7,14 +7,14 @@
7
7
 
8
8
  .tac6gx6{color:#393a34;background-color:#f6f8fa;}.tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}.tac6gx6 :is(.namespace){opacity:0.7;}.tac6gx6 :is(.string,.attr-value){color:#e3116c;}.tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}.tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}.tac6gx6 :is(.tag,.selector,.keyword){color:#00009f;}.tac6gx6 :is(.function-variable){color:#6f42c1;}.tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#00a4db;}.tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#36acaa;}:root[data-timvir-theme="dark"] .tac6gx6{color:#adbac7;background-color:#2d333b;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.namespace){opacity:0.7;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.string,.attr-value){color:#96d0ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.tag,.selector,.keyword){color:#8ddb8c;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function-variable){color:#6f42c1;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#f47067;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#dcbdfb;}
9
9
 
10
- .d1513p2s{display:grid;grid-template-columns:1fr;padding-block:16px;}
10
+ .d1513p2s{display:grid;grid-template-columns:1fr;}
11
11
  .b157mkz{--size:48px;z-index:1;position:absolute;top:0;right:0;overflow:hidden;width:var(--size);height:var(--size);display:flex;align-items:flex-start;justify-content:flex-end;outline:none;border:none;padding:6px;background:transparent;transition:all 0.2s;cursor:pointer;pointer-events:none;opacity:0;}.b157mkz:hover{color:white;}.b157mkz:hover svg:first-child{transform:translate(0,0);}.b157mkz:active svg:first-child{transform:translate(2px,-2px);}
12
12
  .b10oxtfo{pointer-events:all;opacity:1;}
13
13
  .s1hdfi6o{position:absolute;z-index:-1;top:0;right:0;transition:all 0.2s;transform:translate(48px,-48px);}.s1hdfi6o path{fill:var(--c-p-4);}
14
14
  .d17pltln{padding:16px 24px 16px 0;}
15
15
 
16
- .r9v2r0l{margin:1.5rem 0 3rem;}
17
- .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}
16
+ .r9v2r0l{margin:1.5rem 0 3rem;}:root[data-timvir-theme="dark"] .r9v2r0l .shiki,:root[data-timvir-theme="dark"] .r9v2r0l .shiki span{color:var(--shiki-dark) !important;font-style:var(--shiki-dark-font-style) !important;font-weight:var(--shiki-dark-font-weight) !important;text-decoration:var(--shiki-dark-text-decoration) !important;}
17
+ .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}.cs7tint pre{margin:0;padding:16px 0;background-color:transparent !important;}.cs7tint pre code{display:block;}.cs7tint pre code .line{display:inline-block;position:relative;width:100%;}.cs7tint pre .line{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
18
18
  .fjvaz2s{display:grid;border-radius:0;box-shadow:none;margin-inline:0;grid-auto-rows:min-content;grid-template-columns:[le] 0 [lc] 1fr [rc] 0 [re];grid-column-gap:16px;}.fjvaz2s:hover{box-shadow:none;}@media (min-width:60rem){.fjvaz2s{grid-template-columns:[le] 1fr [lc] minmax(0,48rem) [rc] 1fr [re];grid-column-gap:24px;}}.fjvaz2s > *{grid-column:lc / re;}
19
19
  .lchll0h{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
20
20
  .h1xcko1i{background-color:#ffe10044;}:root[data-timvir-theme="dark"] .h1xcko1i{background-color:rgba(174,124,20,0.15);}
@@ -3,5 +3,5 @@ declare const Root = "div";
3
3
  interface Props extends React.ComponentPropsWithoutRef<typeof Root> {
4
4
  label?: React.ReactNode;
5
5
  }
6
- declare function Action(props: Props): JSX.Element;
6
+ declare function Action(props: Props): React.JSX.Element;
7
7
  export default Action;
@@ -1,8 +1,8 @@
1
- /// <reference types="react" />
1
+ import * as React from "react";
2
2
  interface Props {
3
3
  open?: boolean;
4
4
  onClose?: () => void;
5
5
  onDispose?: () => void;
6
6
  }
7
- declare function Dialog(props: Props): JSX.Element;
7
+ declare function Dialog(props: Props): React.JSX.Element;
8
8
  export default Dialog;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { Footer } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof Footer>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
2
  import { NavigationFooter } from "..";
3
3
  type Props = Partial<React.ComponentPropsWithoutRef<typeof NavigationFooter>>;
4
- export default function Sample(props: Props): JSX.Element;
4
+ export default function Sample(props: Props): React.JSX.Element;
5
5
  export {};
@@ -1,4 +1,4 @@
1
- import { Components } from "@mdx-js/react/lib/index";
1
+ import { MDXProvider } from "@mdx-js/react";
2
2
  import * as React from "react";
3
3
  import { Value } from "timvir/context";
4
4
  import { Node } from "./types";
@@ -24,7 +24,7 @@ interface Props extends React.ComponentProps<typeof Root> {
24
24
  * highlighting. If you want to enable syntax highlighting in code blocks, use the
25
25
  * '<Code>' component from 'timvir/blocks'.
26
26
  */
27
- mdxComponents?: Components;
27
+ mdxComponents?: React.ComponentPropsWithoutRef<typeof MDXProvider>['components'];
28
28
  /**
29
29
  * Search Configuration. When provided, then the Search menu will appear in the sidebar.
30
30
  */
@@ -1,46 +1,18 @@
1
1
  import * as React from "react";
2
- export declare const h1: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLHeadingElement> & React.HTMLAttributes<HTMLHeadingElement> & Record<never, unknown> & {
3
- as?: React.ElementType<any> | undefined;
4
- }>;
5
- export declare const h2: (props: React.HTMLAttributes<HTMLHeadingElement>) => JSX.Element;
6
- export declare const h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => JSX.Element;
7
- export declare const h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => JSX.Element;
8
- export declare const blockquote: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLQuoteElement> & React.BlockquoteHTMLAttributes<HTMLQuoteElement> & Record<never, unknown> & {
9
- as?: React.ElementType<any> | undefined;
10
- }>;
11
- export declare const hr: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLHRElement> & React.HTMLAttributes<HTMLHRElement> & Record<never, unknown> & {
12
- as?: React.ElementType<any> | undefined;
13
- }>;
14
- export declare const table: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableElement> & React.TableHTMLAttributes<HTMLTableElement> & Record<never, unknown> & {
15
- as?: React.ElementType<any> | undefined;
16
- }>;
17
- export declare const thead: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableSectionElement> & React.HTMLAttributes<HTMLTableSectionElement> & Record<never, unknown> & {
18
- as?: React.ElementType<any> | undefined;
19
- }>;
20
- export declare const tbody: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableSectionElement> & React.HTMLAttributes<HTMLTableSectionElement> & Record<never, unknown> & {
21
- as?: React.ElementType<any> | undefined;
22
- }>;
23
- export declare const tr: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableRowElement> & React.HTMLAttributes<HTMLTableRowElement> & Record<never, unknown> & {
24
- as?: React.ElementType<any> | undefined;
25
- }>;
26
- export declare const th: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableHeaderCellElement> & React.ThHTMLAttributes<HTMLTableHeaderCellElement> & Record<never, unknown> & {
27
- as?: React.ElementType<any> | undefined;
28
- }>;
29
- export declare const td: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLTableDataCellElement> & React.TdHTMLAttributes<HTMLTableDataCellElement> & Record<never, unknown> & {
30
- as?: React.ElementType<any> | undefined;
31
- }>;
32
- export declare const code: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement> & Record<never, unknown> & {
33
- as?: React.ElementType<any> | undefined;
34
- }>;
35
- export declare const a: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement> & Record<never, unknown> & {
36
- as?: React.ElementType<any> | undefined;
37
- }>;
38
- export declare const p: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLParagraphElement> & React.HTMLAttributes<HTMLParagraphElement> & Record<never, unknown> & {
39
- as?: React.ElementType<any> | undefined;
40
- }>;
41
- export declare const ul: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement> & Record<never, unknown> & {
42
- as?: React.ElementType<any> | undefined;
43
- }>;
44
- export declare const ol: import("@linaria/react").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLOListElement> & React.OlHTMLAttributes<HTMLOListElement> & Record<never, unknown> & {
45
- as?: React.ElementType<any> | undefined;
46
- }>;
2
+ export declare const h1: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLHeadingElement> & React.HTMLAttributes<HTMLHeadingElement> & Record<never, unknown>>;
3
+ export declare const h2: (props: React.HTMLAttributes<HTMLHeadingElement>) => React.JSX.Element;
4
+ export declare const h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => React.JSX.Element;
5
+ export declare const h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => React.JSX.Element;
6
+ export declare const blockquote: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLQuoteElement> & React.BlockquoteHTMLAttributes<HTMLQuoteElement> & Record<never, unknown>>;
7
+ export declare const hr: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLHRElement> & React.HTMLAttributes<HTMLHRElement> & Record<never, unknown>>;
8
+ export declare const table: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableElement> & React.TableHTMLAttributes<HTMLTableElement> & Record<never, unknown>>;
9
+ export declare const thead: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableSectionElement> & React.HTMLAttributes<HTMLTableSectionElement> & Record<never, unknown>>;
10
+ export declare const tbody: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableSectionElement> & React.HTMLAttributes<HTMLTableSectionElement> & Record<never, unknown>>;
11
+ export declare const tr: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableRowElement> & React.HTMLAttributes<HTMLTableRowElement> & Record<never, unknown>>;
12
+ export declare const th: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableHeaderCellElement> & React.ThHTMLAttributes<HTMLTableHeaderCellElement> & Record<never, unknown>>;
13
+ export declare const td: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLTableDataCellElement> & React.TdHTMLAttributes<HTMLTableDataCellElement> & Record<never, unknown>>;
14
+ export declare const code: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement> & Record<never, unknown>>;
15
+ export declare const a: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement> & Record<never, unknown>>;
16
+ export declare const p: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLParagraphElement> & React.HTMLAttributes<HTMLParagraphElement> & Record<never, unknown>>;
17
+ export declare const ul: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement> & Record<never, unknown>>;
18
+ export declare const ol: import("@linaria/react").StyledComponent<React.ClassAttributes<HTMLOListElement> & React.OlHTMLAttributes<HTMLOListElement> & Record<never, unknown>>;
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import * as React from "react";
2
2
  import { Node } from "../types";
3
3
  interface Props extends Node {
4
4
  depth: number;
5
5
  }
6
- declare function Section(props: Props): JSX.Element;
6
+ declare function Section(props: Props): React.JSX.Element;
7
7
  export default Section;
@@ -11,5 +11,5 @@ interface Props {
11
11
  }>;
12
12
  };
13
13
  }
14
- declare function Sidebar(props: Props): JSX.Element;
14
+ declare function Sidebar(props: Props): React.JSX.Element;
15
15
  export default Sidebar;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
package/core/index.js CHANGED
@@ -407,7 +407,8 @@ function filterProps(asIs, props, omitKeys) {
407
407
  }
408
408
  var warnIfInvalid = (value, componentName) => {
409
409
  if (process.env.NODE_ENV !== "production") {
410
- if (typeof value === "string" || typeof value === "number" && isFinite(value)) {
410
+ if (typeof value === "string" || // eslint-disable-next-line no-self-compare,no-restricted-globals
411
+ typeof value === "number" && isFinite(value)) {
411
412
  return;
412
413
  }
413
414
  const stringified = typeof value === "object" ? JSON.stringify(value) : String(value);
@@ -418,10 +419,12 @@ var warnIfInvalid = (value, componentName) => {
418
419
  };
419
420
  var idx = 0;
420
421
  function styled(tag) {
421
- var _a;
422
- let mockedClass = `mocked-styled-${idx++}`;
423
- if ((_a = tag == null ? void 0 : tag.__linaria) == null ? void 0 : _a.className) {
424
- mockedClass += ` ${tag.__linaria.className}`;
422
+ let mockedClass = "";
423
+ if (process.env.NODE_ENV === "test") {
424
+ mockedClass += `mocked-styled-${idx++}`;
425
+ if (tag && tag.__linaria && tag.__linaria.className) {
426
+ mockedClass += ` ${tag.__linaria.className}`;
427
+ }
425
428
  }
426
429
  return (options) => {
427
430
  if (process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test") {
@@ -466,13 +469,17 @@ function styled(tag) {
466
469
  }
467
470
  return React__default.createElement(component, filteredProps);
468
471
  };
469
- const Result = React__default.forwardRef ? React__default.forwardRef(render) : (props) => {
470
- const rest = omit(props, ["innerRef"]);
471
- return render(rest, props.innerRef);
472
- };
472
+ const Result = React__default.forwardRef ? React__default.forwardRef(render) : (
473
+ // React.forwardRef won't available on older React versions and in Preact
474
+ // Fallback to a innerRef prop in that case
475
+ (props) => {
476
+ const rest = omit(props, ["innerRef"]);
477
+ return render(rest, props.innerRef);
478
+ }
479
+ );
473
480
  Result.displayName = options.name;
474
481
  Result.__linaria = {
475
- className: options.class ?? mockedClass,
482
+ className: options.class || mockedClass,
476
483
  extends: tag
477
484
  };
478
485
  return Result;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "timvir",
4
- "version": "0.2.11",
4
+ "version": "0.2.13",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
7
7
  "exports": {
@@ -19,13 +19,13 @@
19
19
  "downshift": "^7",
20
20
  "fuzzaldrin-plus": "^0.6.0",
21
21
  "immer": "^9 || ^10",
22
- "prism-react-renderer": "^2",
22
+ "shiki": "^1",
23
23
  "react-feather": "^2",
24
24
  "use-immer": "^0.8.0 || ^0.8.1 || ^0.9.0",
25
25
  "wonka": "^6"
26
26
  },
27
27
  "peerDependencies": {
28
- "@mdx-js/react": "^2",
28
+ "@mdx-js/react": "^2 || ^3",
29
29
  "react": "^17 || ^18",
30
30
  "react-dom": "^17 || ^18",
31
31
  "react-hotkeys-hook": "^4"
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import * as React from "react";
2
2
  interface Props {
3
3
  string: string;
4
4
  query: string;
5
5
  }
6
- declare const Highlight: ({ string, query }: Props) => JSX.Element;
6
+ declare const Highlight: ({ string, query }: Props) => React.JSX.Element;
7
7
  export default Highlight;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export default function Sample(): JSX.Element;
1
+ import * as React from "react";
2
+ export default function Sample(): React.JSX.Element;
package/styles.css CHANGED
@@ -7,14 +7,14 @@
7
7
 
8
8
  .tac6gx6{color:#393a34;background-color:#f6f8fa;}.tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}.tac6gx6 :is(.namespace){opacity:0.7;}.tac6gx6 :is(.string,.attr-value){color:#e3116c;}.tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}.tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}.tac6gx6 :is(.tag,.selector,.keyword){color:#00009f;}.tac6gx6 :is(.function-variable){color:#6f42c1;}.tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#00a4db;}.tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#36acaa;}:root[data-timvir-theme="dark"] .tac6gx6{color:#adbac7;background-color:#2d333b;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.comment,.prolog,.doctype,.cdata){color:#999988;font-style:italic;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.namespace){opacity:0.7;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.string,.attr-value){color:#96d0ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.punctuation,.operator){color:#6cb6ff;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function,.delete,.tag){color:#d73a49;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.tag,.selector,.keyword){color:#8ddb8c;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.function-variable){color:#6f42c1;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.atrule,.keyword,.attr-name,.selector){color:#f47067;}:root[data-timvir-theme="dark"] .tac6gx6 :is(.entity,.url,.symbol,.number,.boolean,.variable,.constant,.property,.regex,.inserted){color:#dcbdfb;}
9
9
 
10
- .d1513p2s{display:grid;grid-template-columns:1fr;padding-block:16px;}
10
+ .d1513p2s{display:grid;grid-template-columns:1fr;}
11
11
  .b157mkz{--size:48px;z-index:1;position:absolute;top:0;right:0;overflow:hidden;width:var(--size);height:var(--size);display:flex;align-items:flex-start;justify-content:flex-end;outline:none;border:none;padding:6px;background:transparent;transition:all 0.2s;cursor:pointer;pointer-events:none;opacity:0;}.b157mkz:hover{color:white;}.b157mkz:hover svg:first-child{transform:translate(0,0);}.b157mkz:active svg:first-child{transform:translate(2px,-2px);}
12
12
  .b10oxtfo{pointer-events:all;opacity:1;}
13
13
  .s1hdfi6o{position:absolute;z-index:-1;top:0;right:0;transition:all 0.2s;transform:translate(48px,-48px);}.s1hdfi6o path{fill:var(--c-p-4);}
14
14
  .d17pltln{padding:16px 24px 16px 0;}
15
15
 
16
- .r9v2r0l{margin:1.5rem 0 3rem;}
17
- .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}
16
+ .r9v2r0l{margin:1.5rem 0 3rem;}:root[data-timvir-theme="dark"] .r9v2r0l .shiki,:root[data-timvir-theme="dark"] .r9v2r0l .shiki span{color:var(--shiki-dark) !important;font-style:var(--shiki-dark-font-style) !important;font-weight:var(--shiki-dark-font-weight) !important;text-decoration:var(--shiki-dark-text-decoration) !important;}
17
+ .cs7tint{overflow-x:auto;contain:content;font-size:0.9em;border-radius:5px;--timvir-b-Code-bleed:var(--timvir-page-margin,24px);--timvir-b-Code-inlinePadding:max(var(--timvir-b-Code-bleed),24px);padding:0;margin:0 calc(-1 * var(--timvir-b-Code-bleed));box-shadow:inset 0 0 0 1px rgb(16 22 26 / 20%),0 1px 4px rgb(16 22 26 / 10%);transition:box-shadow 0.3s;}.cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(16 22 26 / 30%),0 1px 4px rgb(16 22 26 / 10%),0 8px 24px rgb(16 22 26 / 10%);}:root[data-timvir-theme="dark"] .cs7tint{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 4px rgb(216 222 226 / 5%), 0 2px 8px rgb(216 222 226 / 2%);}:root[data-timvir-theme="dark"] .cs7tint:hover{box-shadow:inset 0 0 0 1px rgb(216 222 226 / 10%),0 1px 3px rgb(216 222 226 / 7%), 0 2px 16px rgb(216 222 226 / 5%);}.cs7tint pre{margin:0;padding:16px 0;background-color:transparent !important;}.cs7tint pre code{display:block;}.cs7tint pre code .line{display:inline-block;position:relative;width:100%;}.cs7tint pre .line{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
18
18
  .fjvaz2s{display:grid;border-radius:0;box-shadow:none;margin-inline:0;grid-auto-rows:min-content;grid-template-columns:[le] 0 [lc] 1fr [rc] 0 [re];grid-column-gap:16px;}.fjvaz2s:hover{box-shadow:none;}@media (min-width:60rem){.fjvaz2s{grid-template-columns:[le] 1fr [lc] minmax(0,48rem) [rc] 1fr [re];grid-column-gap:24px;}}.fjvaz2s > *{grid-column:lc / re;}
19
19
  .lchll0h{padding-inline:var(--timvir-b-Code-inlinePadding);margin-inline:1px;}
20
20
  .h1xcko1i{background-color:#ffe10044;}:root[data-timvir-theme="dark"] .h1xcko1i{background-color:rgba(174,124,20,0.15);}