timvir 0.2.21 → 0.2.24
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/blocks/Arbitrary/index.js +2 -9
- package/blocks/Code/index.js +5 -3
- package/blocks/Exhibit/docs/index.mdx +27 -28
- package/blocks/Exhibit/index.js +5 -11
- package/blocks/Exhibit/samples/bleed.d.ts +5 -0
- package/blocks/Exhibit/samples/usage.d.ts +2 -0
- package/blocks/Grid/docs/index.mdx +0 -21
- package/blocks/Viewport/index.js +22 -2
- package/blocks/WebLink/index.js +14 -4
- package/core/index.js +4 -3
- package/core/styles.css +1 -1
- package/package.json +6 -1
- package/search/Search/Search.d.ts +1 -5
- package/styles.css +1 -1
|
@@ -128,7 +128,7 @@ function Arbitrary(props, ref) {
|
|
|
128
128
|
value: value
|
|
129
129
|
}, /*#__PURE__*/React.createElement(Root, {
|
|
130
130
|
ref: ref,
|
|
131
|
-
className: cx_default(classes.root, className),
|
|
131
|
+
className: cx_default("timvir-b-Arbitrary", classes.root, className),
|
|
132
132
|
...rest
|
|
133
133
|
}, /*#__PURE__*/React.createElement("div", {
|
|
134
134
|
className: classes.controls
|
|
@@ -137,7 +137,7 @@ function Arbitrary(props, ref) {
|
|
|
137
137
|
}, /*#__PURE__*/React.createElement("span", {
|
|
138
138
|
className: classes.startAdornment
|
|
139
139
|
}, "Seed:"), /*#__PURE__*/React.createElement("input", {
|
|
140
|
-
className: classes.input,
|
|
140
|
+
className: cx_default("timvir-b-Arbitrary-seed", classes.input),
|
|
141
141
|
placeholder: "Seed",
|
|
142
142
|
value: encode(new TextEncoder().encode(`${value.seed}`)),
|
|
143
143
|
readOnly: true,
|
|
@@ -158,13 +158,6 @@ function Arbitrary(props, ref) {
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
}, "Refresh")), /*#__PURE__*/React.createElement(Exhibit, {
|
|
161
|
-
bleed: 0,
|
|
162
|
-
BackdropProps: {
|
|
163
|
-
style: {
|
|
164
|
-
borderRadius: 2,
|
|
165
|
-
border: "1px solid var(--timvir-border-color)"
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
161
|
...ExhibitProps
|
|
169
162
|
}, children)));
|
|
170
163
|
}
|
package/blocks/Code/index.js
CHANGED
|
@@ -57,6 +57,7 @@ function Code(props, ref) {
|
|
|
57
57
|
...rest
|
|
58
58
|
} = block.props;
|
|
59
59
|
const [state, mutate] = useImmer({
|
|
60
|
+
settled: false,
|
|
60
61
|
mouseOver: false,
|
|
61
62
|
copiedToClipboard: false,
|
|
62
63
|
/*
|
|
@@ -89,16 +90,17 @@ function Code(props, ref) {
|
|
|
89
90
|
}))
|
|
90
91
|
});
|
|
91
92
|
mutate(draft => {
|
|
93
|
+
draft.settled = true;
|
|
92
94
|
draft.html = html;
|
|
93
95
|
});
|
|
94
96
|
})();
|
|
95
97
|
}, [mutate, children, language]);
|
|
96
98
|
return /*#__PURE__*/React.createElement(Root, {
|
|
97
99
|
ref: ref,
|
|
98
|
-
className: cx_default(classes.root, fullWidth && Page.fullWidth),
|
|
100
|
+
className: cx_default("timvir-b-Code", !state.settled && "timvir-unsettled", classes.root, fullWidth && Page.fullWidth),
|
|
99
101
|
...rest
|
|
100
102
|
}, /*#__PURE__*/React.createElement("div", {
|
|
101
|
-
className: cx_default(className, theme, classes.code, fullWidth && classes.fullWidth)
|
|
103
|
+
className: cx_default("timvir-b-Code-container", className, theme, classes.code, fullWidth && classes.fullWidth)
|
|
102
104
|
}, /*#__PURE__*/React.createElement("div", {
|
|
103
105
|
className: "d1513p2s",
|
|
104
106
|
onMouseEnter: () => {
|
|
@@ -137,7 +139,7 @@ function Code(props, ref) {
|
|
|
137
139
|
__html: state.html
|
|
138
140
|
}
|
|
139
141
|
}))), caption && /*#__PURE__*/React.createElement("div", {
|
|
140
|
-
className: classes.caption
|
|
142
|
+
className: cx_default("timvir-b-Code-caption", classes.caption)
|
|
141
143
|
}, caption));
|
|
142
144
|
}
|
|
143
145
|
var Code$1 = /*#__PURE__*/React.forwardRef(Code);
|
|
@@ -1,42 +1,41 @@
|
|
|
1
|
-
import { Exhibit } from "..";
|
|
2
1
|
import { Code } from "timvir/blocks";
|
|
3
2
|
|
|
4
3
|
# Exhibit
|
|
5
4
|
|
|
6
|
-
The `<Exhibit>` is a block which
|
|
5
|
+
The `<Exhibit>` is a block which presents something–usually a React component–in a nice way.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
The presented element is placed on top of a checkered background.
|
|
8
|
+
This helps illustrating which parts of the element are transparent, or if the element comes with a specific background color.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
A bit of padding is included all around the presented element.
|
|
11
|
+
Together with the checkered background, it makes the `<Exhibit>` block stand out next plain text or other blocks.
|
|
12
|
+
You can tweak the bleed size, or disable the bleed altogether if you want to draw attention to the exact box size of the presented element itself.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
The caption, if provided, is placed below the block.
|
|
15
|
+
Use it to explain what is being presented, or provide contex around it.
|
|
16
|
+
Think of the `<Exhibit>` block as a `<figure>` + `<figcaption>` for React components.
|
|
17
|
+
|
|
18
|
+
<Sample variant="basic" />
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
## Usage
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
Import `Exhibit` from the `timvir/blocks` module, then use in a Timvir mdx page like so:
|
|
23
|
+
|
|
24
|
+
<Code language="jsx">
|
|
25
|
+
<Sample variant="usage" as="source/markup" />
|
|
26
|
+
</Code>
|
|
21
27
|
|
|
22
28
|
## Bleed
|
|
23
29
|
|
|
24
30
|
Use the `bleed` prop to control how much the checkered background extends beyond the box of the element itself.
|
|
31
|
+
If you set the bleed explicitly, it is not recommended to use more than 16px.
|
|
32
|
+
That is the page margin on small viewports and a bleed larger than that can mess with the page layout.
|
|
33
|
+
|
|
34
|
+
Setting bleed to zero (0) does not remove the checkered background.
|
|
35
|
+
It will still be visible behind your element (if your element is transparent).
|
|
36
|
+
To entirely remove any bleed and checkered background, render your element directly, without wrapping it in an `<Exhibit>`.
|
|
25
37
|
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</Exhibit>
|
|
31
|
-
|
|
32
|
-
<Exhibit bleed={4} caption="Bleed 4">
|
|
33
|
-
<div
|
|
34
|
-
style={{ height: 40, padding: "0 16px", background: "teal", color: "white", display: "flex", alignItems: "center" }}
|
|
35
|
-
/>
|
|
36
|
-
</Exhibit>
|
|
37
|
-
|
|
38
|
-
<Exhibit bleed={12} caption="Bleed 12">
|
|
39
|
-
<div
|
|
40
|
-
style={{ height: 40, padding: "0 16px", background: "teal", color: "white", display: "flex", alignItems: "center" }}
|
|
41
|
-
/>
|
|
42
|
-
</Exhibit>
|
|
38
|
+
<Sample variant="bleed" props={{ bleed: 0 }} />
|
|
39
|
+
<Sample variant="bleed" props={{ bleed: 8 }} />
|
|
40
|
+
<Sample variant="bleed" props={{ bleed: 16 }} />
|
|
41
|
+
<Sample variant="bleed" />
|
package/blocks/Exhibit/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { useMDXComponents } from '@mdx-js/react';
|
|
2
1
|
import { useBlock } from 'timvir/core';
|
|
3
2
|
import * as React from 'react';
|
|
4
3
|
|
|
@@ -37,12 +36,7 @@ var cx_default = cx;
|
|
|
37
36
|
const Root = "div";
|
|
38
37
|
function Exhibit(props, ref) {
|
|
39
38
|
const block = useBlock(props);
|
|
40
|
-
const components = {
|
|
41
|
-
h3: "h3",
|
|
42
|
-
...useMDXComponents()
|
|
43
|
-
};
|
|
44
39
|
const {
|
|
45
|
-
title,
|
|
46
40
|
caption,
|
|
47
41
|
bleed,
|
|
48
42
|
BackdropProps,
|
|
@@ -51,24 +45,24 @@ function Exhibit(props, ref) {
|
|
|
51
45
|
style,
|
|
52
46
|
...rest
|
|
53
47
|
} = block.props;
|
|
54
|
-
return /*#__PURE__*/React.createElement(
|
|
48
|
+
return /*#__PURE__*/React.createElement(Root, {
|
|
55
49
|
ref: ref,
|
|
56
|
-
className: cx_default(className, classes.root),
|
|
50
|
+
className: cx_default("timvir-b-Exhibit", className, classes.root),
|
|
57
51
|
style: {
|
|
58
52
|
...style,
|
|
59
53
|
[cssVariables.bleed]: typeof bleed === "number" ? `${bleed}px` : undefined
|
|
60
54
|
},
|
|
61
55
|
...rest
|
|
62
56
|
}, /*#__PURE__*/React.createElement("div", {
|
|
63
|
-
className: classes.container,
|
|
57
|
+
className: cx_default("timvir-b-Exhibit-container", classes.container),
|
|
64
58
|
...BackdropProps,
|
|
65
59
|
style: {
|
|
66
60
|
border: bleed === 0 ? "none" : `1px solid var(${cssVariables.borderColor})`,
|
|
67
61
|
...BackdropProps?.style
|
|
68
62
|
}
|
|
69
63
|
}, children), caption && /*#__PURE__*/React.createElement("div", {
|
|
70
|
-
className: classes.caption
|
|
71
|
-
}, caption))
|
|
64
|
+
className: cx_default("timvir-b-Exhibit-caption", classes.caption)
|
|
65
|
+
}, caption));
|
|
72
66
|
}
|
|
73
67
|
var Exhibit$1 = /*#__PURE__*/React.forwardRef(Exhibit);
|
|
74
68
|
const cssVariables = {
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { Grid } from "..";
|
|
2
2
|
import { Exhibit } from "../../Exhibit";
|
|
3
|
-
import { Image } from "../../../../../src/components/Image";
|
|
4
3
|
import { fullWidth } from "timvir/core";
|
|
5
4
|
|
|
6
|
-
import image1 from "../../../../../assets/khachik-simonian-nXOB-wh4Oyc-unsplash.jpg"
|
|
7
|
-
import image2 from "../../../../../assets/frank-mckenna-4V8JxijgZ_c-unsplash.jpg"
|
|
8
|
-
import image3 from "../../../../../assets/jay-mantri-TFyi0QOx08c-unsplash.jpg"
|
|
9
|
-
import image4 from "../../../../../assets/jeremy-bishop-EwKXn5CapA4-unsplash.jpg"
|
|
10
|
-
import image5 from "../../../../../assets/lukasz-szmigiel-jFCViYFYcus-unsplash.jpg"
|
|
11
|
-
import image6 from "../../../../../assets/qingbao-meng-01_igFr7hd4-unsplash.jpg"
|
|
12
|
-
import image7 from "../../../../../assets/v2osk-1Z2niiBPg5A-unsplash.jpg"
|
|
13
|
-
|
|
14
5
|
# Grid
|
|
15
6
|
|
|
16
7
|
> CSS grid with a predefined template (columns, gaps etc)
|
|
@@ -52,18 +43,6 @@ import image7 from "../../../../../assets/v2osk-1Z2niiBPg5A-unsplash.jpg"
|
|
|
52
43
|
<div style={{ height: 100, background: "rgba(0,0,0,.2)", display: "flex", alignItems: "center", justifyContent: "center" }}>ITEM</div>
|
|
53
44
|
</Grid>
|
|
54
45
|
|
|
55
|
-
Combine `<Grid>` with the `<Image>` component.
|
|
56
|
-
|
|
57
|
-
<Grid>
|
|
58
|
-
<Image metadata={image1} img={{ src: image1.src }} sources={[]} />
|
|
59
|
-
<Image metadata={image2} img={{ src: image2.src }} sources={[]} />
|
|
60
|
-
<Image metadata={image3} img={{ src: image3.src }} sources={[]} />
|
|
61
|
-
<Image metadata={image4} img={{ src: image4.src }} sources={[]} />
|
|
62
|
-
<Image metadata={image5} img={{ src: image5.src }} sources={[]} />
|
|
63
|
-
<Image metadata={image6} img={{ src: image6.src }} sources={[]} />
|
|
64
|
-
<Image metadata={image7} img={{ src: image7.src }} sources={[]} />
|
|
65
|
-
</Grid>
|
|
66
|
-
|
|
67
46
|
Combine `<Grid>` with the `<Exhibit>` component.
|
|
68
47
|
|
|
69
48
|
<Grid>
|
package/blocks/Viewport/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useBlock, fullWidth } from 'timvir/core';
|
|
2
2
|
import { useResizeObserverEntry, useResizeObserver } from 'timvir/hooks';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { useImmer } from 'use-immer';
|
|
4
5
|
import { useMDXComponents } from '@mdx-js/react';
|
|
5
6
|
import { Code } from 'timvir/blocks';
|
|
6
7
|
import * as Icons from 'react-feather';
|
|
@@ -154,6 +155,9 @@ function Viewport(props, ref) {
|
|
|
154
155
|
className,
|
|
155
156
|
...rest
|
|
156
157
|
} = block.props;
|
|
158
|
+
const [state, mutate] = useImmer({
|
|
159
|
+
settled: false
|
|
160
|
+
});
|
|
157
161
|
|
|
158
162
|
/*
|
|
159
163
|
* The container measures the width of the main column. It is used to initialize
|
|
@@ -216,7 +220,7 @@ function Viewport(props, ref) {
|
|
|
216
220
|
/*
|
|
217
221
|
* Note this useEffect runs on each render. This is fine beause it doesn't do any
|
|
218
222
|
* expensive computation, and the Viewport component only re-renders when the iframe
|
|
219
|
-
* itself
|
|
223
|
+
* itself changes height or the user resizes the width of the Viewport.
|
|
220
224
|
*/
|
|
221
225
|
React.useEffect(() => {
|
|
222
226
|
const document = iframeRef.current?.contentDocument;
|
|
@@ -244,12 +248,28 @@ function Viewport(props, ref) {
|
|
|
244
248
|
style.innerHTML = "body { margin: 0 }";
|
|
245
249
|
document.head.appendChild(style);
|
|
246
250
|
}
|
|
251
|
+
|
|
252
|
+
/*
|
|
253
|
+
* 20ms after the height has been set, we consider this block settled. This
|
|
254
|
+
* time includes the 16ms CSS transition time, and a tiny bit more to allow
|
|
255
|
+
* for the content in the iframe itself to finish rendering.
|
|
256
|
+
*/
|
|
257
|
+
React.useEffect(() => {
|
|
258
|
+
const timeoutId = setTimeout(() => {
|
|
259
|
+
mutate(draft => {
|
|
260
|
+
draft.settled = true;
|
|
261
|
+
});
|
|
262
|
+
}, 20);
|
|
263
|
+
return () => {
|
|
264
|
+
clearTimeout(timeoutId);
|
|
265
|
+
};
|
|
266
|
+
}, [mutate, height]);
|
|
247
267
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
248
268
|
ref: containerRef
|
|
249
269
|
}), /*#__PURE__*/React.createElement(Root, {
|
|
250
270
|
ref: ref,
|
|
251
271
|
...rest,
|
|
252
|
-
className: cx_default(className, fullWidth, "r1ouu0bc")
|
|
272
|
+
className: cx_default("timvir-b-Viewport", !state.settled && "timvir-unsettled", className, fullWidth, "r1ouu0bc")
|
|
253
273
|
}, /*#__PURE__*/React.createElement("div", {
|
|
254
274
|
ref: svgRef,
|
|
255
275
|
className: "d1uj09ka"
|
package/blocks/WebLink/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useContext } from 'timvir/core';
|
|
3
|
+
import { useImmer } from 'use-immer';
|
|
3
4
|
|
|
4
5
|
// src/css.ts
|
|
5
6
|
|
|
@@ -40,20 +41,29 @@ function WebLink(props, ref) {
|
|
|
40
41
|
className,
|
|
41
42
|
...rest
|
|
42
43
|
} = props;
|
|
43
|
-
const [
|
|
44
|
+
const [state, mutate] = useImmer({
|
|
45
|
+
settled: false,
|
|
46
|
+
metadata: undefined
|
|
47
|
+
});
|
|
44
48
|
const {
|
|
45
49
|
unfurl = defaultUnfurl
|
|
46
50
|
} = useContext().blocks?.WebLink ?? {};
|
|
47
51
|
React.useEffect(() => {
|
|
48
|
-
unfurl(url).then(
|
|
49
|
-
|
|
52
|
+
unfurl(url).then(metadata => {
|
|
53
|
+
mutate(draft => {
|
|
54
|
+
draft.settled = true;
|
|
55
|
+
draft.metadata = metadata;
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}, [url, mutate]);
|
|
59
|
+
const metadata = state.metadata;
|
|
50
60
|
const image = metadata?.open_graph?.images?.[0]?.url;
|
|
51
61
|
return /*#__PURE__*/React.createElement(Root, {
|
|
52
62
|
ref: ref,
|
|
53
63
|
href: url,
|
|
54
64
|
target: "_blank",
|
|
55
65
|
rel: "noopener noreferrer",
|
|
56
|
-
className: cx_default(className, classes.root),
|
|
66
|
+
className: cx_default("timvir-b-WebLink", !state.settled && "timvir-unsettled", className, classes.root),
|
|
57
67
|
...rest
|
|
58
68
|
}, /*#__PURE__*/React.createElement("div", {
|
|
59
69
|
className: classes.text
|
package/core/index.js
CHANGED
|
@@ -49,14 +49,14 @@ const fullWidth = cx_default(noLayout, "f3c539b");
|
|
|
49
49
|
/**
|
|
50
50
|
* The underlying DOM element which is rendered by this component.
|
|
51
51
|
*/
|
|
52
|
-
const Root$
|
|
52
|
+
const Root$3 = "footer";
|
|
53
53
|
function Footer(props, ref) {
|
|
54
54
|
const {
|
|
55
55
|
className,
|
|
56
56
|
links,
|
|
57
57
|
...rest
|
|
58
58
|
} = props;
|
|
59
|
-
return /*#__PURE__*/React.createElement(Root$
|
|
59
|
+
return /*#__PURE__*/React.createElement(Root$3, {
|
|
60
60
|
ref: ref,
|
|
61
61
|
className: cx_default(className, classes$7.root),
|
|
62
62
|
...rest
|
|
@@ -99,12 +99,13 @@ const classes$7 = {
|
|
|
99
99
|
|
|
100
100
|
const theme = "t1amubg3";
|
|
101
101
|
|
|
102
|
+
const Root$2 = "div";
|
|
102
103
|
function Action(props) {
|
|
103
104
|
const {
|
|
104
105
|
label,
|
|
105
106
|
...rest
|
|
106
107
|
} = props;
|
|
107
|
-
return /*#__PURE__*/React.createElement(
|
|
108
|
+
return /*#__PURE__*/React.createElement(Root$2, {
|
|
108
109
|
className: classes$6.root,
|
|
109
110
|
...rest
|
|
110
111
|
}, /*#__PURE__*/React.createElement("div", {
|
package/core/styles.css
CHANGED
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
.r28qe6v{display:flex;align-items:center;margin:1px 0;font-size:0.9375rem;line-height:2.2;}@media (min-width:48rem){.r28qe6v{font-size:0.8125rem;}}@media (any-pointer:coarse){.r28qe6v > a{min-height:44px;}}.r28qe6v > a{min-width:0;transition:background 0.16s;border-radius:4px;display:flex;align-items:center;color:var(--timvir-text-color);font-weight:500;background:none;text-decoration:none;width:100%;padding:0 8px;opacity:0.7;}.r28qe6v:hover a{background-color:var(--timvir-sidebar-highlight-color);opacity:1;}.r28qe6v[data-active="true"] a{background-color:var(--timvir-sidebar-highlight-color);opacity:1;}
|
|
54
54
|
.i1ia823q{display:block;width:1.3em;height:1.3em;margin-right:8px;min-width:1.3em;}
|
|
55
55
|
.l13ixk6c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:auto;}
|
|
56
|
-
.i7wcd3g{margin-left:4px;transition:transform 0.12s cubic-bezier(0.455,0.03,0.515,0.955);transform-origin:center center;width:1rem;height:1rem;}
|
|
56
|
+
.i7wcd3g{margin-left:4px;transition:transform 0.12s cubic-bezier(0.455,0.03,0.515,0.955);transform-origin:center center;width:1rem;height:1rem;flex:0 0 1rem;}
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "timvir",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.24",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"exports": {
|
|
@@ -29,5 +29,10 @@
|
|
|
29
29
|
"react": "^17 || ^18",
|
|
30
30
|
"react-dom": "^17 || ^18",
|
|
31
31
|
"react-hotkeys-hook": "^4"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/timvir/timvir.git",
|
|
36
|
+
"directory": "pkg/timvir"
|
|
32
37
|
}
|
|
33
38
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Node } from "timvir/core";
|
|
3
|
-
|
|
4
|
-
* The underlying DOM element which is rendered by this component.
|
|
5
|
-
*/
|
|
6
|
-
declare const Root = "div";
|
|
7
|
-
interface Props extends React.ComponentPropsWithoutRef<typeof Root> {
|
|
3
|
+
interface Props extends React.ComponentPropsWithoutRef<"div"> {
|
|
8
4
|
open?: boolean;
|
|
9
5
|
onClose?: (ev: React.SyntheticEvent<HTMLElement>) => void;
|
|
10
6
|
q: (query: string) => Promise<{
|
package/styles.css
CHANGED
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
.r28qe6v{display:flex;align-items:center;margin:1px 0;font-size:0.9375rem;line-height:2.2;}@media (min-width:48rem){.r28qe6v{font-size:0.8125rem;}}@media (any-pointer:coarse){.r28qe6v > a{min-height:44px;}}.r28qe6v > a{min-width:0;transition:background 0.16s;border-radius:4px;display:flex;align-items:center;color:var(--timvir-text-color);font-weight:500;background:none;text-decoration:none;width:100%;padding:0 8px;opacity:0.7;}.r28qe6v:hover a{background-color:var(--timvir-sidebar-highlight-color);opacity:1;}.r28qe6v[data-active="true"] a{background-color:var(--timvir-sidebar-highlight-color);opacity:1;}
|
|
154
154
|
.i1ia823q{display:block;width:1.3em;height:1.3em;margin-right:8px;min-width:1.3em;}
|
|
155
155
|
.l13ixk6c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:auto;}
|
|
156
|
-
.i7wcd3g{margin-left:4px;transition:transform 0.12s cubic-bezier(0.455,0.03,0.515,0.955);transform-origin:center center;width:1rem;height:1rem;}
|
|
156
|
+
.i7wcd3g{margin-left:4px;transition:transform 0.12s cubic-bezier(0.455,0.03,0.515,0.955);transform-origin:center center;width:1rem;height:1rem;flex:0 0 1rem;}
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
|