@apify/docs-theme 1.0.1 → 1.0.3
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 +6 -5
- package/src/img/footer-apify-logo.svg +6 -0
- package/src/img/footer-open-source.svg +8 -0
- package/src/index.js +40 -0
- package/src/theme/ColorModeToggle/index.jsx +64 -0
- package/src/theme/ColorModeToggle/styles.module.css +53 -0
- package/src/theme/DocSidebarItem/Link/index.jsx +62 -0
- package/src/theme/DocSidebarItem/Link/styles.module.css +3 -0
- package/src/theme/Footer/index.jsx +72 -0
- package/src/theme/Footer/index.module.css +46 -0
- package/src/theme/Icon/DarkMode/index.jsx +11 -0
- package/src/theme/Icon/LightMode/index.jsx +28 -0
- package/src/theme/Navbar/Content/index.jsx +95 -0
- package/src/theme/Navbar/Content/styles.module.css +8 -0
- package/src/theme/NavbarItem/ComponentTypes.jsx +101 -0
- package/src/theme/NavbarItem/NavbarNavLink.jsx +69 -0
- package/src/theme/NotFound.jsx +77 -0
- package/src/theme/custom.css +378 -0
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apify/docs-theme",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "./
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"src"
|
|
8
|
+
],
|
|
6
9
|
"scripts": {
|
|
7
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
-
"build": "
|
|
9
|
-
"copyStyles": "rsync -a -m --include '*/' --include '*.css' --exclude '*' ./src/theme/ ./dist/theme",
|
|
10
|
-
"copyImages": "cp -r src/img ./dist/img"
|
|
11
|
+
"build": "echo 'Building @apify/docs-theme!'"
|
|
11
12
|
},
|
|
12
13
|
"keywords": [],
|
|
13
14
|
"author": "",
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="91" height="25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3.135 2.85A3.409 3.409 0 0 0 .227 6.699l2.016 14.398 8.483-19.304-7.59 1.059Z" fill="#97D700"/>
|
|
3
|
+
<path d="M23.604 14.847 22.811 3.78a3.414 3.414 0 0 0-3.64-3.154c-.077 0-.153.014-.228.025l-3.274.452 7.192 16.124a3.4 3.4 0 0 0 .743-2.379Z" fill="#71C5E8"/>
|
|
4
|
+
<path d="M5.336 24.595a3.39 3.39 0 0 0 1.706-.248l12.35-5.211L13.514 5.97 5.336 24.595Z" fill="#FF9013"/>
|
|
5
|
+
<path d="M33.83 5.304h3.903l5.448 14.623h-3.494l-1.022-2.994h-5.877l-1.025 2.994h-3.384L33.83 5.304Zm-.177 9.032h4.14l-2-5.994h-.086l-2.054 5.994Zm25.189-9.032h3.302v14.623h-3.302V5.304Zm5.792 0h10.71v2.7h-7.4v4.101h5.962v2.632h-5.963v5.186h-3.309V5.303Zm17.482 9.076-5.498-9.076h3.748l3.428 6.016h.085l3.599-6.016H91l-5.56 9.054v5.569h-3.324v-5.548ZM51.75 5.304h-7.292v14.623h3.3v-4.634h3.993a4.995 4.995 0 1 0 0-9.99Zm-.364 7.417h-3.628V7.875h3.627a2.423 2.423 0 0 1 0 4.846Z" fill="#fff"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
d="M23.85 21.4261L22.07 18.5161C22.0223 18.4379 21.998 18.3477 22 18.2561V14.1261C22 12.3461 20.29 11.0561 18.48 9.67613C18.4235 9.63333 18.3765 9.5792 18.342 9.51722C18.3076 9.45523 18.2865 9.38675 18.28 9.31613C18.2746 9.24341 18.2842 9.17036 18.3083 9.10153C18.3324 9.0327 18.3704 8.96959 18.42 8.91613C19.2176 8.18843 19.7543 7.21901 19.9476 6.15676C20.1409 5.09451 19.9801 3.99817 19.49 3.03613C19.1249 2.3284 18.5986 1.7164 17.9535 1.24953C17.3084 0.782657 16.5625 0.473992 15.7761 0.348443C14.9897 0.222895 14.1849 0.28398 13.4264 0.526769C12.668 0.769557 11.9773 1.18725 11.41 1.74613L10.35 2.74613C10.2604 2.83348 10.1402 2.88237 10.015 2.88237C9.88984 2.88237 9.76963 2.83348 9.68 2.74613L8.62 1.74613C8.05176 1.18725 7.36022 0.769615 6.60107 0.526864C5.84192 0.284114 5.03637 0.223031 4.24929 0.348535C3.46221 0.474039 2.71561 0.782623 2.0696 1.24944C1.42359 1.71625 0.896234 2.32824 0.529996 3.03613C0.0712553 3.97975 -0.0790193 5.04376 0.100451 6.07751C0.279922 7.11126 0.780043 8.06236 1.53 8.79613L9.29 16.7961C9.39004 16.8988 9.50986 16.98 9.64221 17.035C9.77456 17.09 9.91668 17.1176 10.06 17.1161C10.2048 17.1178 10.3485 17.0904 10.4825 17.0354C10.6165 16.9804 10.7381 16.899 10.84 16.7961C10.9225 16.7101 10.9793 16.6027 11.004 16.4861C11.0288 16.3695 11.0204 16.2483 10.98 16.1361C10.8286 15.6925 10.7607 15.2245 10.78 14.7561C10.8094 14.1798 10.9714 13.6181 11.2535 13.1146C11.5355 12.6112 11.9299 12.1796 12.406 11.8535C12.8821 11.5274 13.427 11.3156 13.9983 11.2345C14.5697 11.1535 15.152 11.2053 15.7 11.3861C15.7886 11.4152 15.8836 11.4184 15.9739 11.3954C16.0643 11.3724 16.1462 11.3241 16.21 11.2561L16.36 11.1061C16.445 11.0188 16.559 10.9655 16.6805 10.9563C16.8021 10.9471 16.9228 10.9826 17.02 11.0561L17.32 11.2861C18.54 12.2061 20.05 13.3561 20.05 14.1361V18.6861C20.0494 18.8734 20.1014 19.057 20.2 19.2161L22.2 22.4761C22.2519 22.6119 22.3328 22.7347 22.437 22.8361C22.5412 22.9374 22.6663 23.0148 22.8034 23.0628C22.9406 23.1109 23.0866 23.1285 23.2313 23.1143C23.376 23.1002 23.5158 23.0547 23.6411 22.981C23.7664 22.9073 23.8741 22.8072 23.9567 22.6876C24.0394 22.568 24.095 22.4319 24.1196 22.2886C24.1442 22.1454 24.1374 21.9985 24.0994 21.8581C24.0615 21.7178 23.9935 21.5875 23.9 21.4761L23.85 21.4261Z"
|
|
4
|
+
fill="#B3B8D2"/>
|
|
5
|
+
<path
|
|
6
|
+
d="M16.09 13.1961C15.6537 12.7991 15.0849 12.5791 14.495 12.5791C13.9051 12.5791 13.3363 12.7991 12.9 13.1961C12.6632 13.4054 12.4704 13.6597 12.333 13.9442C12.1955 14.2288 12.1161 14.5378 12.0993 14.8534C12.0826 15.169 12.1288 15.4847 12.2354 15.7822C12.3419 16.0797 12.5067 16.353 12.72 16.5861L14.35 18.3561C14.4307 18.4514 14.4765 18.5713 14.48 18.6961V19.6961C14.48 20.9961 16 22.2861 16.48 22.6461C16.6349 22.7659 16.8242 22.8325 17.02 22.8361C17.2022 22.8349 17.3795 22.7771 17.5275 22.6707C17.6754 22.5644 17.7867 22.4147 17.846 22.2424C17.9053 22.0701 17.9096 21.8836 17.8584 21.7087C17.8071 21.5339 17.7029 21.3792 17.56 21.2661C16.9911 20.869 16.5388 20.3269 16.25 19.6961V18.1261C16.2512 17.9074 16.1689 17.6964 16.02 17.5361L14.02 15.3561C13.9611 15.2977 13.9155 15.2272 13.8861 15.1496C13.8568 15.072 13.8445 14.9889 13.85 14.9061C13.8613 14.738 13.9364 14.5806 14.06 14.4661C14.1771 14.3621 14.3283 14.3047 14.485 14.3047C14.6416 14.3047 14.7929 14.3621 14.91 14.4661L16.91 16.3261C17.0797 16.4839 17.3052 16.5679 17.5368 16.5594C17.7684 16.551 17.9872 16.4509 18.145 16.2811C18.3028 16.1114 18.3867 15.8859 18.3783 15.6543C18.3698 15.4227 18.2697 15.2039 18.1 15.0461L16.09 13.1961Z"
|
|
7
|
+
fill="#B3B8D2"/>
|
|
8
|
+
</svg>
|
package/src/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
function theme(
|
|
2
|
+
context,
|
|
3
|
+
options,
|
|
4
|
+
) {
|
|
5
|
+
return {
|
|
6
|
+
name: '@apify/docs-theme',
|
|
7
|
+
getThemePath() {
|
|
8
|
+
return '../src/theme';
|
|
9
|
+
},
|
|
10
|
+
getTypeScriptThemePath() {
|
|
11
|
+
return '../src/theme';
|
|
12
|
+
},
|
|
13
|
+
contentLoaded({ actions }) {
|
|
14
|
+
const { setGlobalData } = actions;
|
|
15
|
+
setGlobalData({
|
|
16
|
+
options,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
getClientModules() {
|
|
20
|
+
return [
|
|
21
|
+
require.resolve('./theme/custom.css'),
|
|
22
|
+
];
|
|
23
|
+
},
|
|
24
|
+
configureWebpack() {
|
|
25
|
+
return {
|
|
26
|
+
module: {
|
|
27
|
+
rules: [
|
|
28
|
+
{
|
|
29
|
+
test: /\.(js|jsx)$/,
|
|
30
|
+
exclude: /node_modules/,
|
|
31
|
+
use: { loader: 'babel-loader' },
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.default = theme;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
4
|
+
import { translate } from '@docusaurus/Translate';
|
|
5
|
+
import IconLightMode from '../Icon/LightMode';
|
|
6
|
+
import IconDarkMode from '../Icon/DarkMode';
|
|
7
|
+
import styles from './styles.module.css';
|
|
8
|
+
|
|
9
|
+
function ColorModeToggle({
|
|
10
|
+
className,
|
|
11
|
+
value,
|
|
12
|
+
onChange
|
|
13
|
+
}) {
|
|
14
|
+
const isBrowser = useIsBrowser();
|
|
15
|
+
const title = translate(
|
|
16
|
+
{
|
|
17
|
+
message: 'Switch between dark and light mode (currently {mode})',
|
|
18
|
+
id: 'theme.colorToggle.ariaLabel',
|
|
19
|
+
description: 'The ARIA label for the navbar color mode toggle',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
mode:
|
|
23
|
+
value === 'dark'
|
|
24
|
+
? translate({
|
|
25
|
+
message: 'dark mode',
|
|
26
|
+
id: 'theme.colorToggle.ariaLabel.mode.dark',
|
|
27
|
+
description: 'The name for the dark color mode',
|
|
28
|
+
})
|
|
29
|
+
: translate({
|
|
30
|
+
message: 'light mode',
|
|
31
|
+
id: 'theme.colorToggle.ariaLabel.mode.light',
|
|
32
|
+
description: 'The name for the light color mode',
|
|
33
|
+
}),
|
|
34
|
+
},
|
|
35
|
+
);
|
|
36
|
+
return (
|
|
37
|
+
<div className={clsx(styles.toggle, className)}>
|
|
38
|
+
<button
|
|
39
|
+
className={clsx(
|
|
40
|
+
'clean-btn',
|
|
41
|
+
styles.toggleButton,
|
|
42
|
+
!isBrowser && styles.toggleButtonDisabled,
|
|
43
|
+
)}
|
|
44
|
+
type="button"
|
|
45
|
+
onClick={() => onChange(value === 'dark' ? 'light' : 'dark')}
|
|
46
|
+
disabled={!isBrowser}
|
|
47
|
+
title={title}
|
|
48
|
+
aria-label={title}>
|
|
49
|
+
<span>
|
|
50
|
+
<IconLightMode
|
|
51
|
+
className={clsx(styles.toggleIcon, styles.lightToggleIcon)}
|
|
52
|
+
width={14} height={14}
|
|
53
|
+
/>
|
|
54
|
+
<IconDarkMode
|
|
55
|
+
className={clsx(styles.toggleIcon, styles.darkToggleIcon)}
|
|
56
|
+
width={14} height={14}
|
|
57
|
+
/>
|
|
58
|
+
</span>
|
|
59
|
+
</button>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default React.memo(ColorModeToggle);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.toggle {
|
|
2
|
+
padding: 3px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.toggleButton {
|
|
6
|
+
width: 52px;
|
|
7
|
+
height: 26px;
|
|
8
|
+
background: #cfd4eb;
|
|
9
|
+
border-radius: 160px;
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
transition: all var(--ifm-transition-fast);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[data-theme='dark'] .toggleButton {
|
|
16
|
+
background: #585e76;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.toggleButton span {
|
|
20
|
+
-webkit-tap-highlight-color: transparent;
|
|
21
|
+
align-items: center;
|
|
22
|
+
display: flex;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
width: 20px;
|
|
25
|
+
height: 20px;
|
|
26
|
+
border-radius: 50%;
|
|
27
|
+
background: #fff;
|
|
28
|
+
vertical-align: middle;
|
|
29
|
+
margin: 3px;
|
|
30
|
+
position: relative;
|
|
31
|
+
transition: all var(--ifm-transition-fast);
|
|
32
|
+
left: 0;
|
|
33
|
+
color: #585e76;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
[data-theme='dark'] .toggleButton span {
|
|
37
|
+
background: #1a1b23;
|
|
38
|
+
color: #b3b8d2;
|
|
39
|
+
left: 25px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.toggleButton:hover span {
|
|
43
|
+
background: var(--ifm-color-emphasis-200);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[data-theme='light'] .darkToggleIcon,
|
|
47
|
+
[data-theme='dark'] .lightToggleIcon {
|
|
48
|
+
display: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.toggleButtonDisabled {
|
|
52
|
+
cursor: not-allowed;
|
|
53
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { ThemeClassNames } from '@docusaurus/theme-common';
|
|
4
|
+
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
5
|
+
import { isActiveSidebarItem } from '@docusaurus/theme-common/internal';
|
|
6
|
+
import Link from '@docusaurus/Link';
|
|
7
|
+
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
8
|
+
import IconExternalLink from '@theme/Icon/ExternalLink';
|
|
9
|
+
import styles from './styles.module.css';
|
|
10
|
+
|
|
11
|
+
export default function DocSidebarItemLink({
|
|
12
|
+
item,
|
|
13
|
+
onItemClick,
|
|
14
|
+
activePath,
|
|
15
|
+
level,
|
|
16
|
+
index,
|
|
17
|
+
...props
|
|
18
|
+
}) {
|
|
19
|
+
const {
|
|
20
|
+
href,
|
|
21
|
+
label,
|
|
22
|
+
className,
|
|
23
|
+
autoAddBaseUrl,
|
|
24
|
+
} = item;
|
|
25
|
+
const isActive = isActiveSidebarItem(item, activePath);
|
|
26
|
+
const isInternalLink = isInternalUrl(href);
|
|
27
|
+
const baseUrl = useDocusaurusContext().siteConfig.url;
|
|
28
|
+
|
|
29
|
+
if (href.startsWith(baseUrl)) {
|
|
30
|
+
props.target = '_self';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<li
|
|
35
|
+
className={clsx(
|
|
36
|
+
ThemeClassNames.docs.docSidebarItemLink,
|
|
37
|
+
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
38
|
+
'menu__list-item',
|
|
39
|
+
className,
|
|
40
|
+
)}
|
|
41
|
+
key={label}>
|
|
42
|
+
<Link
|
|
43
|
+
className={clsx(
|
|
44
|
+
'menu__link',
|
|
45
|
+
!isInternalLink && styles.menuExternalLink,
|
|
46
|
+
{
|
|
47
|
+
'menu__link--active': isActive,
|
|
48
|
+
},
|
|
49
|
+
)}
|
|
50
|
+
autoAddBaseUrl={autoAddBaseUrl}
|
|
51
|
+
aria-current={isActive ? 'page' : undefined}
|
|
52
|
+
to={href}
|
|
53
|
+
{...(isInternalLink && {
|
|
54
|
+
onClick: onItemClick ? () => onItemClick(item) : undefined,
|
|
55
|
+
})}
|
|
56
|
+
{...props}>
|
|
57
|
+
{label}
|
|
58
|
+
{!isInternalLink && <IconExternalLink />}
|
|
59
|
+
</Link>
|
|
60
|
+
</li>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
4
|
+
import { useThemeConfig } from '@docusaurus/theme-common';
|
|
5
|
+
import LinkItem from '@theme/Footer/LinkItem';
|
|
6
|
+
import styles from './index.module.css';
|
|
7
|
+
|
|
8
|
+
function FooterLinksColumn({ column }) {
|
|
9
|
+
return (
|
|
10
|
+
<>
|
|
11
|
+
<div className={styles.footerTitle}>{column.title}</div>
|
|
12
|
+
<ul className={clsx(styles.footerItem, 'clean-list')}>
|
|
13
|
+
{column.items.map((item, i) => (
|
|
14
|
+
<li key={i} className="footer__item">
|
|
15
|
+
<LinkItem item={item} />
|
|
16
|
+
</li>
|
|
17
|
+
))}
|
|
18
|
+
</ul>
|
|
19
|
+
</>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function Footer() {
|
|
24
|
+
const { footer } = useThemeConfig();
|
|
25
|
+
if (!footer) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const { links, style } = footer;
|
|
29
|
+
const OpenSourceIcon = require('../../img/footer-open-source.svg').default;
|
|
30
|
+
const ApifyLogo = require('../../img/footer-apify-logo.svg').default;
|
|
31
|
+
return (
|
|
32
|
+
<footer className={clsx(styles.footer, style)}>
|
|
33
|
+
<div className="container padding-horiz--lg">
|
|
34
|
+
<div className="row">
|
|
35
|
+
<div className="col col--5">
|
|
36
|
+
<div className="row">
|
|
37
|
+
<div className="col col--6">
|
|
38
|
+
<FooterLinksColumn column={links[0]} />
|
|
39
|
+
</div>
|
|
40
|
+
<div className="col col--6">
|
|
41
|
+
<FooterLinksColumn column={links[1]} />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<div className="col col--7">
|
|
46
|
+
<div className="row">
|
|
47
|
+
<div className="col col--3 col--offset-9">
|
|
48
|
+
<FooterLinksColumn column={links[2]} />
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div className="row padding-vert--md padding-top--lg">
|
|
54
|
+
<div className="col padding-vert--md col--6">
|
|
55
|
+
<div className={styles.freeAndOpenSource}>
|
|
56
|
+
<OpenSourceIcon className={styles.alignMiddle} />
|
|
57
|
+
<span className={styles.alignMiddle}>Apify SDK is free and open source</span>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div className="col padding-vert--md col--6 text--right">
|
|
61
|
+
<span className={styles.builtBy}>
|
|
62
|
+
<span className={styles.alignMiddle}>Built by</span>
|
|
63
|
+
<ApifyLogo className={styles.alignMiddle} />
|
|
64
|
+
</span>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</footer>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default React.memo(Footer);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.footer {
|
|
2
|
+
background: #272c3d;
|
|
3
|
+
padding-top: 64px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.builtBy {
|
|
7
|
+
color: #b3b8d2;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.builtBy svg {
|
|
11
|
+
margin-left: 10px;
|
|
12
|
+
width: 90px;
|
|
13
|
+
height: 24px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.freeAndOpenSource {
|
|
17
|
+
color: #b3b8d2;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.alignMiddle {
|
|
21
|
+
vertical-align: middle;
|
|
22
|
+
display: inline-block;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.freeAndOpenSource svg {
|
|
26
|
+
margin-right: 10px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.freeAndOpenSource svg path {
|
|
30
|
+
fill: #b3b8d2 !important;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.footer .footer__item svg path {
|
|
34
|
+
fill: #6f7490;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.footerTitle {
|
|
38
|
+
font-family: 'Lota Grotesque', sans-serif;
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
font-size: 16px;
|
|
41
|
+
line-height: 20px;
|
|
42
|
+
letter-spacing: 0.1em;
|
|
43
|
+
text-transform: uppercase;
|
|
44
|
+
color: #8d92af;
|
|
45
|
+
margin-bottom: 20px;
|
|
46
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
function IconDarkMode(props) {
|
|
4
|
+
return (
|
|
5
|
+
<svg viewBox="0 0 13 12" width={14} height={14} {...props}>
|
|
6
|
+
<path d="M10.7001 6.39501C10.6215 7.24611 10.3021 8.05721 9.77927 8.7334C9.25646 9.40959 8.55189 9.92291 7.748 10.2133C6.9441 10.5036 6.07414 10.5591 5.2399 10.3731C4.40565 10.187 3.64164 9.76728 3.03726 9.1629C2.43287 8.55851 2.01312 7.7945 1.8271 6.96026C1.64108 6.12602 1.6965 5.25605 1.98688 4.45216C2.27725 3.64826 2.79056 2.94369 3.46675 2.42088C4.14294 1.89808 4.95404 1.57866 5.80515 1.50001C5.30685 2.17414 5.06707 3.00473 5.12941 3.84071C5.19175 4.6767 5.55208 5.46254 6.14485 6.05531C6.73762 6.64808 7.52346 7.0084 8.35944 7.07074C9.19542 7.13308 10.026 6.8933 10.7001 6.39501Z" stroke="currentColor" fill="transparent" strokeLinecap="round" strokeLinejoin="round"/>
|
|
7
|
+
</svg>
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default React.memo(IconDarkMode);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
function IconLightMode(props) {
|
|
4
|
+
return (
|
|
5
|
+
<svg viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg" width={14} height={14} {...props}>
|
|
6
|
+
<g clipPath="url(#clip0_833_8168)">
|
|
7
|
+
<path
|
|
8
|
+
d="M6.59998 8.49999C7.98069 8.49999 9.09998 7.3807 9.09998 5.99999C9.09998 4.61928 7.98069 3.49999 6.59998 3.49999C5.21926 3.49999 4.09998 4.61928 4.09998 5.99999C4.09998 7.3807 5.21926 8.49999 6.59998 8.49999Z"
|
|
9
|
+
stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
10
|
+
<path d="M6.59985 0.5V1.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
11
|
+
<path d="M6.59985 10.5V11.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
12
|
+
<path d="M2.7099 2.11L3.4199 2.82" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
13
|
+
<path d="M9.77991 9.17999L10.4899 9.88999" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
14
|
+
<path d="M1.09998 6H2.09998" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
15
|
+
<path d="M11.0999 6H12.0999" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
16
|
+
<path d="M2.7099 9.88999L3.4199 9.17999" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
17
|
+
<path d="M9.77991 2.82L10.4899 2.11" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"/>
|
|
18
|
+
</g>
|
|
19
|
+
<defs>
|
|
20
|
+
<clipPath id="clip0_833_8168">
|
|
21
|
+
<rect width="12" height="12" fill="white" transform="translate(0.599976)"/>
|
|
22
|
+
</clipPath>
|
|
23
|
+
</defs>
|
|
24
|
+
</svg>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default React.memo(IconLightMode);
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useThemeConfig } from '@docusaurus/theme-common';
|
|
3
|
+
import { usePluginData } from '@docusaurus/useGlobalData';
|
|
4
|
+
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
5
|
+
import {
|
|
6
|
+
splitNavbarItems,
|
|
7
|
+
} from '@docusaurus/theme-common/internal';
|
|
8
|
+
import NavbarLogo from '@theme/Navbar/Logo';
|
|
9
|
+
import NavbarItem from '@theme/NavbarItem';
|
|
10
|
+
import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
|
|
11
|
+
import NavbarSearch from '@theme/Navbar/Search';
|
|
12
|
+
import SearchBar from '@theme/SearchBar';
|
|
13
|
+
import NavbarMobileSidebarToggle from '@theme/Navbar/MobileSidebar/Toggle';
|
|
14
|
+
import styles from './styles.module.css';
|
|
15
|
+
|
|
16
|
+
function NavbarItems({ items }) {
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
{items.map((item, i) => (
|
|
20
|
+
<NavbarItem {...item} key={i}/>
|
|
21
|
+
))}
|
|
22
|
+
</>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function NavbarContentLayout({
|
|
27
|
+
left,
|
|
28
|
+
right,
|
|
29
|
+
}) {
|
|
30
|
+
return (
|
|
31
|
+
<div className="navbar__inner">
|
|
32
|
+
<div className="navbar__items">{left}</div>
|
|
33
|
+
<div className="navbar__items navbar__items--right">{right}</div>
|
|
34
|
+
</div>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function SubNavbar() {
|
|
39
|
+
const { options: { subNavbar } } = usePluginData('@apify/docs-theme');
|
|
40
|
+
const pageTitle = useDocusaurusContext().siteConfig.title;
|
|
41
|
+
return (
|
|
42
|
+
subNavbar ? (
|
|
43
|
+
<div className="navbar__inner">
|
|
44
|
+
<div className="navbar__items">
|
|
45
|
+
<NavbarItems items={[
|
|
46
|
+
{
|
|
47
|
+
label: pageTitle,
|
|
48
|
+
to: '/',
|
|
49
|
+
},
|
|
50
|
+
...subNavbar,
|
|
51
|
+
]}/>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
) : null
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default function NavbarContent() {
|
|
59
|
+
const { navbar: { items } } = useThemeConfig();
|
|
60
|
+
const [leftItems, rightItems] = splitNavbarItems(items);
|
|
61
|
+
const searchBarItem = items.find((item) => item.type === 'search');
|
|
62
|
+
return (
|
|
63
|
+
<div
|
|
64
|
+
style={{
|
|
65
|
+
width: '100%',
|
|
66
|
+
height: '100%',
|
|
67
|
+
alignItems: 'center',
|
|
68
|
+
display: 'flex',
|
|
69
|
+
flexDirection: 'column',
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
<NavbarContentLayout
|
|
73
|
+
left={
|
|
74
|
+
<>
|
|
75
|
+
<NavbarMobileSidebarToggle/>
|
|
76
|
+
<NavbarLogo/>
|
|
77
|
+
<NavbarItems items={leftItems}/>
|
|
78
|
+
</>
|
|
79
|
+
}
|
|
80
|
+
right={
|
|
81
|
+
<>
|
|
82
|
+
<NavbarColorModeToggle className={styles.colorModeToggle}/>
|
|
83
|
+
<NavbarItems items={rightItems}/>
|
|
84
|
+
{!searchBarItem && (
|
|
85
|
+
<NavbarSearch>
|
|
86
|
+
<SearchBar/>
|
|
87
|
+
</NavbarSearch>
|
|
88
|
+
)}
|
|
89
|
+
</>
|
|
90
|
+
}
|
|
91
|
+
/>
|
|
92
|
+
<SubNavbar/>
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
|
|
2
|
+
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
|
3
|
+
import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
|
|
4
|
+
import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
|
|
5
|
+
import HtmlNavbarItem from '@theme/NavbarItem/HtmlNavbarItem';
|
|
6
|
+
import DocSidebarNavbarItem from '@theme/NavbarItem/DocSidebarNavbarItem';
|
|
7
|
+
import DocsVersionNavbarItem from '@theme/NavbarItem/DocsVersionNavbarItem';
|
|
8
|
+
import DocsVersionDropdownNavbarItem from '@theme/NavbarItem/DocsVersionDropdownNavbarItem';
|
|
9
|
+
import { useDocsVersion, useLayoutDoc } from '@docusaurus/theme-common/internal';
|
|
10
|
+
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
11
|
+
import React from 'react';
|
|
12
|
+
|
|
13
|
+
// const versions = require('../../../versions.json');
|
|
14
|
+
//
|
|
15
|
+
// const stable = versions[0];
|
|
16
|
+
const stable = '1';
|
|
17
|
+
|
|
18
|
+
function DocNavbarItem({
|
|
19
|
+
docId,
|
|
20
|
+
label: staticLabel,
|
|
21
|
+
docsPluginId,
|
|
22
|
+
...props
|
|
23
|
+
}) {
|
|
24
|
+
const doc = useLayoutDoc(docId, docsPluginId);
|
|
25
|
+
// Draft items are not displayed in the navbar.
|
|
26
|
+
if (doc === null) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return (
|
|
30
|
+
<DefaultNavbarItem
|
|
31
|
+
exact
|
|
32
|
+
{...props}
|
|
33
|
+
label={staticLabel ?? doc.id}
|
|
34
|
+
to={doc.path}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function ApiNavbarItem(ctx) {
|
|
40
|
+
let version = {};
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
44
|
+
version = useDocsVersion();
|
|
45
|
+
} catch {
|
|
46
|
+
version.version = stable;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const { siteConfig } = useDocusaurusContext();
|
|
50
|
+
|
|
51
|
+
if (siteConfig.presets[0][1].docs.disableVersioning || version.version === stable) {
|
|
52
|
+
return (
|
|
53
|
+
<DefaultNavbarItem
|
|
54
|
+
exact
|
|
55
|
+
{...ctx}
|
|
56
|
+
label={ctx.label}
|
|
57
|
+
to={`api/${ctx.to}`}
|
|
58
|
+
/>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// skip changelog button for older versions
|
|
63
|
+
if (+version.version < 3 && ctx.className === 'changelog') {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// link directly to the old API docs under /docs/x.x/api
|
|
68
|
+
if (+version.version < 3) {
|
|
69
|
+
return (
|
|
70
|
+
<DefaultNavbarItem
|
|
71
|
+
exact
|
|
72
|
+
{...ctx}
|
|
73
|
+
label={ctx.label}
|
|
74
|
+
to={`docs/${version.version === 'current' ? 'next' : version.version}/api/${ctx.to}`}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<DefaultNavbarItem
|
|
81
|
+
exact
|
|
82
|
+
{...ctx}
|
|
83
|
+
label={ctx.label}
|
|
84
|
+
to={`api/${version.version === 'current' ? 'next' : version.version}/${ctx.to}`}
|
|
85
|
+
/>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const ComponentTypes = {
|
|
90
|
+
'default': DefaultNavbarItem,
|
|
91
|
+
'localeDropdown': LocaleDropdownNavbarItem,
|
|
92
|
+
'search': SearchNavbarItem,
|
|
93
|
+
'dropdown': DropdownNavbarItem,
|
|
94
|
+
'html': HtmlNavbarItem,
|
|
95
|
+
'custom-api': ApiNavbarItem,
|
|
96
|
+
'doc': DocNavbarItem,
|
|
97
|
+
'docSidebar': DocSidebarNavbarItem,
|
|
98
|
+
'docsVersion': DocsVersionNavbarItem,
|
|
99
|
+
'docsVersionDropdown': DocsVersionDropdownNavbarItem,
|
|
100
|
+
};
|
|
101
|
+
export default ComponentTypes;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Link from '@docusaurus/Link';
|
|
3
|
+
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
4
|
+
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
5
|
+
import { useLocation } from '@docusaurus/router';
|
|
6
|
+
import { isRegexpStringMatch } from '@docusaurus/theme-common';
|
|
7
|
+
|
|
8
|
+
export default function NavbarNavLink({
|
|
9
|
+
activeBasePath,
|
|
10
|
+
activeBaseRegex,
|
|
11
|
+
to,
|
|
12
|
+
href,
|
|
13
|
+
label,
|
|
14
|
+
html,
|
|
15
|
+
isDropdownLink,
|
|
16
|
+
prependBaseUrlToHref,
|
|
17
|
+
...props
|
|
18
|
+
}) {
|
|
19
|
+
const location = useLocation();
|
|
20
|
+
// TODO all this seems hacky
|
|
21
|
+
// {to: 'version'} should probably be forbidden, in favor of {to: '/version'}
|
|
22
|
+
const toUrl = useBaseUrl(to);
|
|
23
|
+
const activeBaseUrl = useBaseUrl(activeBasePath);
|
|
24
|
+
const normalizedHref = useBaseUrl(href, { forcePrependBaseUrl: true });
|
|
25
|
+
// const isExternalLink = label && href && !isInternalUrl(href);
|
|
26
|
+
const isExternalLink = false;
|
|
27
|
+
// Link content is set through html XOR label
|
|
28
|
+
const linkContentProps = html
|
|
29
|
+
? { dangerouslySetInnerHTML: { __html: html } }
|
|
30
|
+
: {
|
|
31
|
+
children: (
|
|
32
|
+
<>
|
|
33
|
+
{label}
|
|
34
|
+
{isExternalLink && (
|
|
35
|
+
<IconExternalLink
|
|
36
|
+
{...(isDropdownLink && { width: 12, height: 12 })}
|
|
37
|
+
/>
|
|
38
|
+
)}
|
|
39
|
+
</>
|
|
40
|
+
),
|
|
41
|
+
};
|
|
42
|
+
if (href) {
|
|
43
|
+
return (
|
|
44
|
+
<Link
|
|
45
|
+
href={prependBaseUrlToHref ? normalizedHref : href}
|
|
46
|
+
{...props}
|
|
47
|
+
{...(activeBaseUrl && {
|
|
48
|
+
className: location.pathname.startsWith(`/${activeBasePath}`)
|
|
49
|
+
? 'navbar__item navbar__link navbar__link--active'
|
|
50
|
+
: 'navbar__item navbar__link',
|
|
51
|
+
})}
|
|
52
|
+
{...linkContentProps}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
return (
|
|
57
|
+
<Link
|
|
58
|
+
to={toUrl}
|
|
59
|
+
isNavLink
|
|
60
|
+
{...((activeBasePath || activeBaseRegex) && {
|
|
61
|
+
isActive: (_match, location) => (activeBaseRegex
|
|
62
|
+
? isRegexpStringMatch(activeBaseRegex, location.pathname)
|
|
63
|
+
: location.pathname.startsWith(activeBaseUrl)),
|
|
64
|
+
})}
|
|
65
|
+
{...props}
|
|
66
|
+
{...linkContentProps}
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
3
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
4
|
+
import { PageMetadata } from '@docusaurus/theme-common';
|
|
5
|
+
import Link from '@docusaurus/Link';
|
|
6
|
+
import Layout from '@theme/Layout';
|
|
7
|
+
|
|
8
|
+
export default function NotFound() {
|
|
9
|
+
const redirectedV2Url = useBaseUrl('/docs/api');
|
|
10
|
+
const redirectedV1Url = useBaseUrl('/docs/1.3.1/api');
|
|
11
|
+
const baseUrlForV2Redirect = useBaseUrl(`/docs/2.3/api/`);
|
|
12
|
+
const baseUrlForV1Redirect = useBaseUrl(`/docs/1.3/api/`);
|
|
13
|
+
const isBrowser = useIsBrowser();
|
|
14
|
+
|
|
15
|
+
if (isBrowser) {
|
|
16
|
+
const path = window.location.pathname;
|
|
17
|
+
let href = '';
|
|
18
|
+
let redirect = false;
|
|
19
|
+
|
|
20
|
+
if (path.startsWith(redirectedV2Url)) {
|
|
21
|
+
href = baseUrlForV2Redirect + path.substring(redirectedV2Url.length + 1);
|
|
22
|
+
redirect = true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (path.match(/\/docs\/2\.\d+\.\d+\/api/)) {
|
|
26
|
+
href = baseUrlForV2Redirect + path.substring(redirectedV1Url.length + 1);
|
|
27
|
+
redirect = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (path.match(/\/api\/[12]\.\d+\/\w+/)) {
|
|
31
|
+
const [, v, id] = path.match(/\/api\/([12])\.\d+\/(.*)/);
|
|
32
|
+
href = (v === '1' ? baseUrlForV1Redirect : baseUrlForV2Redirect) + id;
|
|
33
|
+
redirect = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (path.match(/\/docs\/[01]\.\d+\.\d+\/api\/(.*)/)) {
|
|
37
|
+
const id = path.match(/\/docs\/[01]\.\d+\.\d+\/api\/(.*)/)[1];
|
|
38
|
+
href = baseUrlForV1Redirect + id;
|
|
39
|
+
redirect = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (redirect && window.location.href !== href) {
|
|
43
|
+
window.location.href = href;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<>
|
|
49
|
+
<PageMetadata title={'Page Not Found'} />
|
|
50
|
+
<Layout>
|
|
51
|
+
<main className="container margin-vert--xl">
|
|
52
|
+
<div className="row">
|
|
53
|
+
<div className="col col--6 col--offset-3">
|
|
54
|
+
<h1 className="hero__title">
|
|
55
|
+
Page Not Found
|
|
56
|
+
</h1>
|
|
57
|
+
<p>
|
|
58
|
+
We could not find what you were looking for 😢
|
|
59
|
+
</p>
|
|
60
|
+
<p>
|
|
61
|
+
Recently we <b>released Apify SDK v3 </b>
|
|
62
|
+
and we significantly upgraded the documentation.
|
|
63
|
+
</p>
|
|
64
|
+
<p>
|
|
65
|
+
If you're looking for documentation of <b>Apify SDK v2</b>,
|
|
66
|
+
<Link to={'/docs/2.3/guides/apify-platform'}> you can find it here</Link>.
|
|
67
|
+
</p>
|
|
68
|
+
<p>
|
|
69
|
+
For <b>Apify SDK v3 docs</b>, go to the <Link to={'/'}>homepage</Link>.
|
|
70
|
+
</p>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</main>
|
|
74
|
+
</Layout>
|
|
75
|
+
</>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;600;700&display=swap');
|
|
2
|
+
|
|
3
|
+
html[data-theme='dark'] {
|
|
4
|
+
--ifm-navbar-background-color: #1a1b23;
|
|
5
|
+
--ifm-background-color: #1a1b23;
|
|
6
|
+
--ifm-background-surface-color: #242736;
|
|
7
|
+
|
|
8
|
+
--ifm-font-color-base: #f2f3fb;
|
|
9
|
+
|
|
10
|
+
--ifm-pre-background: #242736;
|
|
11
|
+
|
|
12
|
+
--ifm-color-primary: #5d9df1;
|
|
13
|
+
--ifm-link-color: #5d9df1;
|
|
14
|
+
--ifm-heading-color: #f2f3fb;
|
|
15
|
+
--ifm-navbar-link-color: #f2f3fb;
|
|
16
|
+
|
|
17
|
+
--docusaurus-highlighted-code-line-bg: rgba(255, 255, 255, 0.1);
|
|
18
|
+
--docsearch-text-color: #8d92af;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:root {
|
|
22
|
+
/* use default system font based on https://devhints.io/css-system-font-stack */
|
|
23
|
+
--ifm-font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
24
|
+
--ifm-heading-font-family: 'Lota Grotesque', sans-serif;
|
|
25
|
+
--ifm-font-weight-semibold: 600;
|
|
26
|
+
--ifm-font-color-base: #242736;
|
|
27
|
+
|
|
28
|
+
--ifm-navbar-item-padding-horizontal: 1.75rem;
|
|
29
|
+
--ifm-navbar-link-color: #41465d;
|
|
30
|
+
--ifm-navbar-shadow: none;
|
|
31
|
+
|
|
32
|
+
--ifm-heading-margin-top: var(--ifm-heading-margin-bottom);
|
|
33
|
+
--ifm-hero-background-color: transparent;
|
|
34
|
+
|
|
35
|
+
--ifm-code-background: var(--ifm-pre-background) !important;
|
|
36
|
+
--ifm-code-padding-horizontal: 0.4rem;
|
|
37
|
+
--ifm-code-padding-vertical: 0.2rem;
|
|
38
|
+
|
|
39
|
+
--ifm-color-primary-lightest: #5d9df1;
|
|
40
|
+
--ifm-color-primary-lighter: #3a87ee;
|
|
41
|
+
--ifm-color-primary-light: #2e80ed;
|
|
42
|
+
--ifm-color-primary: #1672eb;
|
|
43
|
+
--ifm-color-primary-dark: #1266d5;
|
|
44
|
+
--ifm-color-primary-darker: #1161c9;
|
|
45
|
+
--ifm-color-primary-darkest: #0e50a6;
|
|
46
|
+
|
|
47
|
+
--ifm-link-color: hsl(214, 84%, 50%);
|
|
48
|
+
--ifm-link-hover-color: hsl(214, 84%, 65%);
|
|
49
|
+
--ifm-link-hover-decoration: none;
|
|
50
|
+
|
|
51
|
+
--ifm-footer-background-color: #272c3d;
|
|
52
|
+
--ifm-footer-title-color: #f2f3fb;
|
|
53
|
+
--ifm-footer-link-color: #f2f3fb;
|
|
54
|
+
--max-layout-width: 1680px;
|
|
55
|
+
|
|
56
|
+
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
|
|
57
|
+
|
|
58
|
+
--ifm-heading-color: #242736;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@font-face {
|
|
62
|
+
font-family: 'Lota Grotesque';
|
|
63
|
+
src: url('/font/lota.woff2') format('woff2'),
|
|
64
|
+
url('/font/lota.woff') format('woff');
|
|
65
|
+
font-weight: 600;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.footer__title {
|
|
69
|
+
font-size: 1.25rem;
|
|
70
|
+
font-weight: 600;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.footer__bottom a {
|
|
74
|
+
opacity: 0.75;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.footer__copyright {
|
|
78
|
+
color: var(--ifm-footer-title-color);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.navbar__title {
|
|
82
|
+
/* Replaced by SVG */
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.navbar__inner {
|
|
87
|
+
/* .container */
|
|
88
|
+
max-width: calc(var(--max-layout-width) - 32px);
|
|
89
|
+
padding: 0 var(--ifm-spacing-horizontal);
|
|
90
|
+
width: 100%;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.navbar__item.dropdown {
|
|
94
|
+
padding: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.DocSearch-Button-Placeholder {
|
|
98
|
+
font-size: 14px !important;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
html .DocSearch-Button {
|
|
102
|
+
border-radius: 6px !important;
|
|
103
|
+
font-weight: 400 !important;
|
|
104
|
+
background: #f9fafd;
|
|
105
|
+
border: 1px solid #c1c6dd;
|
|
106
|
+
|
|
107
|
+
/* Annoying, but needed */
|
|
108
|
+
/* https://stackoverflow.com/questions/26140050/why-is-font-family-not-inherited-in-button-tags-automatically/26140154 */
|
|
109
|
+
font-family: inherit;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
html .DocSearch-Button .DocSearch-Search-Icon {
|
|
113
|
+
color: var(--docsearch-muted-color);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
html[data-theme="dark"] .DocSearch-Button {
|
|
117
|
+
background: none;
|
|
118
|
+
border: 1px solid var(--docsearch-muted-color);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
html[data-theme="dark"] .DocSearch-Button .DocSearch-Search-Icon {
|
|
122
|
+
color: var(--docsearch-muted-color);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.DocSearch-Button:hover {
|
|
126
|
+
box-shadow: none !important;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.navbar, .main-wrapper {
|
|
130
|
+
justify-content: center;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
html.plugin-pages .main-wrapper {
|
|
134
|
+
overflow-x: hidden;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.main-wrapper > div {
|
|
138
|
+
max-width: var(--max-layout-width);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
aside > div > a {
|
|
142
|
+
padding-left: 16px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
aside > div > a > b {
|
|
146
|
+
display: none;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.dropdown > .navbar__link::after {
|
|
150
|
+
border-color: currentColor;
|
|
151
|
+
border-style: solid;
|
|
152
|
+
border-width: 0.1em 0.1em 0 0;
|
|
153
|
+
content: '';
|
|
154
|
+
display: inline-block;
|
|
155
|
+
height: 0.4em;
|
|
156
|
+
left: 0.3em;
|
|
157
|
+
position: relative;
|
|
158
|
+
vertical-align: top;
|
|
159
|
+
width: 0.4em;
|
|
160
|
+
top: 9px;
|
|
161
|
+
transform: rotate(135deg);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.navbar .icon {
|
|
165
|
+
font-size: 0;
|
|
166
|
+
padding: 4px;
|
|
167
|
+
margin-left: 20px;
|
|
168
|
+
line-height: 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.navbar .icon::before {
|
|
172
|
+
content: '';
|
|
173
|
+
display: block;
|
|
174
|
+
width: 24px;
|
|
175
|
+
height: 24px;
|
|
176
|
+
background-size: cover;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.navbar .icon[href*=github]::before {
|
|
180
|
+
background-image: url('/static/img/github-brand.svg');
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
html[data-theme="dark"] .navbar .navbar__link[href*=github]:before {
|
|
184
|
+
background-image: url('/static/img/github-brand-dark.svg');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.navbar .icon[href*=discord]::before {
|
|
188
|
+
background-image: url('/static/img/discord-brand.svg');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
html[data-theme="dark"] .navbar .navbar__link[href*=discord]:before {
|
|
192
|
+
background-image: url('/static/img/discord-brand-dark.svg');
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.navbar svg[class*=iconExternalLink],
|
|
196
|
+
aside svg[class*=iconExternalLink] {
|
|
197
|
+
display: none;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
header.hero div[class^=heroButtons] {
|
|
201
|
+
justify-content: inherit;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
article .card h2 {
|
|
205
|
+
margin-top: 0;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.tsd-kind-icon,
|
|
209
|
+
.menu__link,
|
|
210
|
+
.table-of-contents__link {
|
|
211
|
+
text-overflow: ellipsis;
|
|
212
|
+
display: inline-block;
|
|
213
|
+
width: 100%;
|
|
214
|
+
overflow: hidden;
|
|
215
|
+
white-space: nowrap;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.menu__caret:before,
|
|
219
|
+
.menu__link--sublist:after {
|
|
220
|
+
float: right;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.table-of-contents__link {
|
|
224
|
+
height: 20px;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
nav.navbar .dropdown__menu {
|
|
228
|
+
min-width: 6rem;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.navbar__logo {
|
|
232
|
+
width: 11rem;
|
|
233
|
+
height: 3rem;
|
|
234
|
+
padding: 10px 0;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.navbar__link.subnav {
|
|
238
|
+
font-size: 0.8em;
|
|
239
|
+
padding: 5px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.main-wrapper a[class*='sidebarLogo'] img {
|
|
243
|
+
height: 3rem;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
html.plugin-pages h2 {
|
|
247
|
+
font-size: 36px;
|
|
248
|
+
line-height: 48px;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
html.plugin-docs .theme-doc-markdown {
|
|
252
|
+
font-size: 18px;
|
|
253
|
+
line-height: 32px;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
html.plugin-docs .theme-doc-markdown h1 {
|
|
257
|
+
font-weight: 600;
|
|
258
|
+
font-size: 48px;
|
|
259
|
+
line-height: 64px;
|
|
260
|
+
color: #000;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
html[data-theme='dark'].plugin-docs .theme-doc-markdown h1 {
|
|
264
|
+
color: #fff;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
html.plugin-typedoc-api .theme-doc-markdown h1 {
|
|
268
|
+
color: #000;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
html[data-theme='dark'].plugin-typedoc-api .theme-doc-markdown h1 {
|
|
272
|
+
color: #fff;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
html.plugin-docs .theme-doc-markdown h2 {
|
|
276
|
+
font-size: 36px;
|
|
277
|
+
line-height: 48px;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
html.plugin-docs .theme-doc-markdown h3 {
|
|
281
|
+
font-size: 28px;
|
|
282
|
+
line-height: 36px;
|
|
283
|
+
/*color: #242736;*/
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.theme-doc-toc-desktop .table-of-contents {
|
|
287
|
+
font-size: 16px;
|
|
288
|
+
line-height: 24px;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.theme-doc-sidebar-menu .menu__link,
|
|
292
|
+
.theme-doc-toc-desktop .table-of-contents .toc-highlight {
|
|
293
|
+
height: auto;
|
|
294
|
+
color: #6f7490;
|
|
295
|
+
background: none;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.theme-doc-sidebar-menu .menu__link:hover {
|
|
299
|
+
background: inherit;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.theme-doc-sidebar-menu .menu__link {
|
|
303
|
+
font-weight: 400;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.theme-doc-sidebar-menu .menu__link--active {
|
|
307
|
+
font-weight: 700;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.theme-doc-sidebar-menu .menu__list-item-collapsible,
|
|
311
|
+
.theme-doc-sidebar-menu .menu__list-item-collapsible--active {
|
|
312
|
+
background: none;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.theme-doc-toc-desktop .table-of-contents .table-of-contents__link--active {
|
|
316
|
+
font-weight: 700;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
html[data-theme='dark'] .theme-doc-sidebar-menu .menu__link,
|
|
320
|
+
html[data-theme='dark'] .theme-doc-toc-desktop .table-of-contents .toc-highlight {
|
|
321
|
+
color: #b3b8d2;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
html[data-theme='dark'] .theme-doc-sidebar-menu .menu__link--active,
|
|
325
|
+
html[data-theme='dark'] .theme-doc-toc-desktop .table-of-contents .table-of-contents__link--active {
|
|
326
|
+
color: #f2f3fb;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.theme-doc-sidebar-menu .menu__link:hover,
|
|
330
|
+
.theme-doc-sidebar-menu .menu__link--active,
|
|
331
|
+
.theme-doc-toc-desktop .table-of-contents .table-of-contents__link:hover,
|
|
332
|
+
.theme-doc-toc-desktop .table-of-contents .table-of-contents__link--active {
|
|
333
|
+
color: #242736;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.hero {
|
|
337
|
+
position: relative;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.apiItemContainer .tsd-readme h1:first-child {
|
|
341
|
+
display: none;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
@media (min-width: 997px) and (max-width: 1250px) {
|
|
345
|
+
.navbar__items--right a.icon {
|
|
346
|
+
display: none;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@media (min-width: 997px) and (max-width: 1130px) {
|
|
351
|
+
.navbar__link.changelog {
|
|
352
|
+
display: none;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
@media (min-width: 997px) and (max-width: 1439px) {
|
|
357
|
+
footer .col--offset-9 {
|
|
358
|
+
--ifm-col-width: calc(4 / 12 * 100%);
|
|
359
|
+
margin-left: calc(8 / 12 * 100%);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
html .theme-doc-sidebar-container {
|
|
364
|
+
border: 0;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
html .theme-doc-sidebar-container button {
|
|
368
|
+
border: 0;
|
|
369
|
+
border-radius: 10px;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
html .table-of-contents {
|
|
373
|
+
border-left: 0;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
html .table-of-contents ul {
|
|
377
|
+
border-left: 2px solid #dfe2f5;
|
|
378
|
+
}
|