jupyterlab-pierre-light 0.1.0
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/LICENSE +29 -0
- package/README.md +14 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +41 -0
- package/lib/syntax.d.ts +6 -0
- package/lib/syntax.js +48 -0
- package/package.json +74 -0
- package/src/index.ts +55 -0
- package/src/syntax.ts +53 -0
- package/style/base.css +18 -0
- package/style/index.css +2 -0
- package/style/variables.css +352 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Jeremy Tuloup
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# jupyterlab-pierre-light
|
|
2
|
+
|
|
3
|
+
A JupyterLab light theme matching the [Pierre](https://pierre.co) palette, the
|
|
4
|
+
same colors used by the `@pierre/diffs` viewer.
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
pip install jupyterlab-pierre-light
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Then choose "Pierre Light" from Settings, Theme.
|
|
11
|
+
|
|
12
|
+
Part of [jupyterlab-pierre-theme](https://github.com/jtpio/jupyterlab-pierre-theme).
|
|
13
|
+
The palette is generated from [`@pierre/theme`](https://www.npmjs.com/package/@pierre/theme)
|
|
14
|
+
(MIT licensed).
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { IThemeManager } from '@jupyterlab/apputils';
|
|
2
|
+
import { EditorExtensionRegistry, IEditorExtensionRegistry } from '@jupyterlab/codemirror';
|
|
3
|
+
import { pierreSyntaxExtension } from './syntax';
|
|
4
|
+
/**
|
|
5
|
+
* The Pierre Light theme.
|
|
6
|
+
*/
|
|
7
|
+
const theme = {
|
|
8
|
+
id: 'jupyterlab-pierre-light:plugin',
|
|
9
|
+
description: 'JupyterLab light theme matching the Pierre palette',
|
|
10
|
+
autoStart: true,
|
|
11
|
+
requires: [IThemeManager],
|
|
12
|
+
activate: (app, manager) => {
|
|
13
|
+
const style = 'jupyterlab-pierre-light/index.css';
|
|
14
|
+
manager.register({
|
|
15
|
+
name: 'Pierre Light',
|
|
16
|
+
isLight: true,
|
|
17
|
+
themeScrollbars: true,
|
|
18
|
+
load: () => manager.loadCSS(style),
|
|
19
|
+
unload: () => Promise.resolve(undefined)
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Adds Pierre syntax colors for the CodeMirror tags JupyterLab's highlight
|
|
25
|
+
* style leaves unstyled. The rules are gated by the theme's `--jpp-*`
|
|
26
|
+
* variables (see src/syntax.ts), so registering this globally is safe: it
|
|
27
|
+
* only takes effect while a Pierre theme is active.
|
|
28
|
+
*/
|
|
29
|
+
const editorSyntax = {
|
|
30
|
+
id: 'jupyterlab-pierre-light:editor-syntax',
|
|
31
|
+
description: 'Pierre syntax colors for the JupyterLab CodeMirror editor',
|
|
32
|
+
autoStart: true,
|
|
33
|
+
requires: [IEditorExtensionRegistry],
|
|
34
|
+
activate: (app, extensions) => {
|
|
35
|
+
extensions.addExtension({
|
|
36
|
+
name: 'jupyterlab-pierre-light:syntax',
|
|
37
|
+
factory: () => EditorExtensionRegistry.createImmutableExtension(pierreSyntaxExtension)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export default [theme, editorSyntax];
|
package/lib/syntax.d.ts
ADDED
package/lib/syntax.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
|
2
|
+
import { tags as t } from '@lezer/highlight';
|
|
3
|
+
/**
|
|
4
|
+
* Highlight rules that bring the JupyterLab CodeMirror editor closer to the
|
|
5
|
+
* `@pierre/diffs` viewer. JupyterLab's default highlight style (in
|
|
6
|
+
* `@jupyterlab/codemirror`) leaves several tokens unstyled (type and class
|
|
7
|
+
* names, plain variable references, function calls) and paints booleans, null
|
|
8
|
+
* and keywords as bold keywords; Pierre colors them differently.
|
|
9
|
+
*
|
|
10
|
+
* Every value reads a `--jpp-*` custom property that only the Pierre themes
|
|
11
|
+
* define, so this extension can be registered globally and only takes effect
|
|
12
|
+
* under a Pierre theme:
|
|
13
|
+
*
|
|
14
|
+
* - The gap-filling rules (type, namespace, variable, function) have no
|
|
15
|
+
* JupyterLab rule to compete with. Under another theme the custom property
|
|
16
|
+
* is undefined, the declaration drops to its inherited value, and the token
|
|
17
|
+
* looks exactly as it would without this extension.
|
|
18
|
+
* - The override rules (booleans/null color, keyword weight) do compete with
|
|
19
|
+
* JupyterLab's rules, so they use `!important` to win. Their `var(...)`
|
|
20
|
+
* fallback is JupyterLab's own value, so under another theme they resolve to
|
|
21
|
+
* what JupyterLab already renders and nothing leaks.
|
|
22
|
+
*
|
|
23
|
+
* Note: `undefined` is a plain identifier to CodeMirror's grammar (not a
|
|
24
|
+
* literal like in TextMate), so it follows the variable color rather than the
|
|
25
|
+
* constant color the diff gives it.
|
|
26
|
+
*/
|
|
27
|
+
const pierreHighlightStyle = HighlightStyle.define([
|
|
28
|
+
{ tag: [t.typeName, t.className], color: 'var(--jpp-tok-type-color)' },
|
|
29
|
+
{ tag: t.namespace, color: 'var(--jpp-tok-namespace-color)' },
|
|
30
|
+
{ tag: [t.name, t.variableName], color: 'var(--jpp-tok-variable-color)' },
|
|
31
|
+
{
|
|
32
|
+
tag: [t.function(t.variableName), t.function(t.propertyName)],
|
|
33
|
+
color: 'var(--jpp-tok-function-color)'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
tag: [t.bool, t.null],
|
|
37
|
+
color: 'var(--jpp-tok-constant-color, var(--jp-mirror-editor-keyword-color)) !important'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
tag: [t.keyword, t.operator, t.bool, t.null],
|
|
41
|
+
fontWeight: 'var(--jpp-keyword-weight, bold) !important'
|
|
42
|
+
}
|
|
43
|
+
]);
|
|
44
|
+
/**
|
|
45
|
+
* The Pierre editor highlight extension, layered on top of JupyterLab's own
|
|
46
|
+
* CodeMirror highlight style.
|
|
47
|
+
*/
|
|
48
|
+
export const pierreSyntaxExtension = syntaxHighlighting(pierreHighlightStyle);
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jupyterlab-pierre-light",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "JupyterLab light theme matching the Pierre palette",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"jupyter",
|
|
7
|
+
"jupyterlab",
|
|
8
|
+
"jupyterlab-extension",
|
|
9
|
+
"theme",
|
|
10
|
+
"pierre"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/jtpio/jupyterlab-pierre-theme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/jtpio/jupyterlab-pierre-theme/issues"
|
|
15
|
+
},
|
|
16
|
+
"license": "BSD-3-Clause",
|
|
17
|
+
"author": "Jeremy Tuloup",
|
|
18
|
+
"files": [
|
|
19
|
+
"lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
|
|
20
|
+
"style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
|
|
21
|
+
"src/**/*.{ts,tsx}",
|
|
22
|
+
"!src/**/.ipynb_checkpoints/**"
|
|
23
|
+
],
|
|
24
|
+
"main": "lib/index.js",
|
|
25
|
+
"types": "lib/index.d.ts",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/jtpio/jupyterlab-pierre-theme.git",
|
|
29
|
+
"directory": "packages/jupyterlab-pierre-light"
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "pnpm build:lib && pnpm build:labextension:dev",
|
|
33
|
+
"build:prod": "pnpm clean && pnpm build:lib:prod && pnpm build:labextension",
|
|
34
|
+
"build:labextension": "jupyter-builder build .",
|
|
35
|
+
"build:labextension:dev": "jupyter-builder build --development True .",
|
|
36
|
+
"build:lib": "tsc --sourceMap",
|
|
37
|
+
"build:lib:prod": "tsc",
|
|
38
|
+
"clean": "pnpm clean:lib",
|
|
39
|
+
"clean:lib": "rimraf lib tsconfig.tsbuildinfo",
|
|
40
|
+
"clean:labextension": "rimraf jupyterlab_pierre_light/labextension jupyterlab_pierre_light/_version.py",
|
|
41
|
+
"clean:all": "pnpm clean:lib && pnpm clean:labextension",
|
|
42
|
+
"install:extension": "pnpm build",
|
|
43
|
+
"watch": "run-p watch:src watch:labextension",
|
|
44
|
+
"watch:src": "tsc -w --sourceMap",
|
|
45
|
+
"watch:labextension": "jupyter-builder watch ."
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@codemirror/language": "^6.0.0",
|
|
49
|
+
"@codemirror/state": "^6.0.0",
|
|
50
|
+
"@jupyterlab/application": "^4.0.0",
|
|
51
|
+
"@jupyterlab/apputils": "^4.0.0",
|
|
52
|
+
"@jupyterlab/codemirror": "^4.0.0",
|
|
53
|
+
"@lezer/highlight": "^1.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@jupyter/builder": "^1.0.0-beta.1",
|
|
57
|
+
"@jupyterlab/core-meta": "^4.6.0-beta.0",
|
|
58
|
+
"@module-federation/runtime-tools": "^2.0.0",
|
|
59
|
+
"npm-run-all2": "^7.0.1",
|
|
60
|
+
"rimraf": "^5.0.1",
|
|
61
|
+
"typescript": "~5.8.0"
|
|
62
|
+
},
|
|
63
|
+
"sideEffects": [
|
|
64
|
+
"style/*.css"
|
|
65
|
+
],
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
},
|
|
69
|
+
"jupyterlab": {
|
|
70
|
+
"extension": true,
|
|
71
|
+
"outputDir": "jupyterlab_pierre_light/labextension",
|
|
72
|
+
"themePath": "style/index.css"
|
|
73
|
+
}
|
|
74
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
JupyterFrontEnd,
|
|
3
|
+
JupyterFrontEndPlugin
|
|
4
|
+
} from '@jupyterlab/application';
|
|
5
|
+
|
|
6
|
+
import { IThemeManager } from '@jupyterlab/apputils';
|
|
7
|
+
import {
|
|
8
|
+
EditorExtensionRegistry,
|
|
9
|
+
IEditorExtensionRegistry
|
|
10
|
+
} from '@jupyterlab/codemirror';
|
|
11
|
+
|
|
12
|
+
import { pierreSyntaxExtension } from './syntax';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The Pierre Light theme.
|
|
16
|
+
*/
|
|
17
|
+
const theme: JupyterFrontEndPlugin<void> = {
|
|
18
|
+
id: 'jupyterlab-pierre-light:plugin',
|
|
19
|
+
description: 'JupyterLab light theme matching the Pierre palette',
|
|
20
|
+
autoStart: true,
|
|
21
|
+
requires: [IThemeManager],
|
|
22
|
+
activate: (app: JupyterFrontEnd, manager: IThemeManager) => {
|
|
23
|
+
const style = 'jupyterlab-pierre-light/index.css';
|
|
24
|
+
|
|
25
|
+
manager.register({
|
|
26
|
+
name: 'Pierre Light',
|
|
27
|
+
isLight: true,
|
|
28
|
+
themeScrollbars: true,
|
|
29
|
+
load: () => manager.loadCSS(style),
|
|
30
|
+
unload: () => Promise.resolve(undefined)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Adds Pierre syntax colors for the CodeMirror tags JupyterLab's highlight
|
|
37
|
+
* style leaves unstyled. The rules are gated by the theme's `--jpp-*`
|
|
38
|
+
* variables (see src/syntax.ts), so registering this globally is safe: it
|
|
39
|
+
* only takes effect while a Pierre theme is active.
|
|
40
|
+
*/
|
|
41
|
+
const editorSyntax: JupyterFrontEndPlugin<void> = {
|
|
42
|
+
id: 'jupyterlab-pierre-light:editor-syntax',
|
|
43
|
+
description: 'Pierre syntax colors for the JupyterLab CodeMirror editor',
|
|
44
|
+
autoStart: true,
|
|
45
|
+
requires: [IEditorExtensionRegistry],
|
|
46
|
+
activate: (app: JupyterFrontEnd, extensions: IEditorExtensionRegistry) => {
|
|
47
|
+
extensions.addExtension({
|
|
48
|
+
name: 'jupyterlab-pierre-light:syntax',
|
|
49
|
+
factory: () =>
|
|
50
|
+
EditorExtensionRegistry.createImmutableExtension(pierreSyntaxExtension)
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export default [theme, editorSyntax];
|
package/src/syntax.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
|
2
|
+
import { type Extension } from '@codemirror/state';
|
|
3
|
+
import { tags as t } from '@lezer/highlight';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Highlight rules that bring the JupyterLab CodeMirror editor closer to the
|
|
7
|
+
* `@pierre/diffs` viewer. JupyterLab's default highlight style (in
|
|
8
|
+
* `@jupyterlab/codemirror`) leaves several tokens unstyled (type and class
|
|
9
|
+
* names, plain variable references, function calls) and paints booleans, null
|
|
10
|
+
* and keywords as bold keywords; Pierre colors them differently.
|
|
11
|
+
*
|
|
12
|
+
* Every value reads a `--jpp-*` custom property that only the Pierre themes
|
|
13
|
+
* define, so this extension can be registered globally and only takes effect
|
|
14
|
+
* under a Pierre theme:
|
|
15
|
+
*
|
|
16
|
+
* - The gap-filling rules (type, namespace, variable, function) have no
|
|
17
|
+
* JupyterLab rule to compete with. Under another theme the custom property
|
|
18
|
+
* is undefined, the declaration drops to its inherited value, and the token
|
|
19
|
+
* looks exactly as it would without this extension.
|
|
20
|
+
* - The override rules (booleans/null color, keyword weight) do compete with
|
|
21
|
+
* JupyterLab's rules, so they use `!important` to win. Their `var(...)`
|
|
22
|
+
* fallback is JupyterLab's own value, so under another theme they resolve to
|
|
23
|
+
* what JupyterLab already renders and nothing leaks.
|
|
24
|
+
*
|
|
25
|
+
* Note: `undefined` is a plain identifier to CodeMirror's grammar (not a
|
|
26
|
+
* literal like in TextMate), so it follows the variable color rather than the
|
|
27
|
+
* constant color the diff gives it.
|
|
28
|
+
*/
|
|
29
|
+
const pierreHighlightStyle = HighlightStyle.define([
|
|
30
|
+
{ tag: [t.typeName, t.className], color: 'var(--jpp-tok-type-color)' },
|
|
31
|
+
{ tag: t.namespace, color: 'var(--jpp-tok-namespace-color)' },
|
|
32
|
+
{ tag: [t.name, t.variableName], color: 'var(--jpp-tok-variable-color)' },
|
|
33
|
+
{
|
|
34
|
+
tag: [t.function(t.variableName), t.function(t.propertyName)],
|
|
35
|
+
color: 'var(--jpp-tok-function-color)'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
tag: [t.bool, t.null],
|
|
39
|
+
color:
|
|
40
|
+
'var(--jpp-tok-constant-color, var(--jp-mirror-editor-keyword-color)) !important'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
tag: [t.keyword, t.operator, t.bool, t.null],
|
|
44
|
+
fontWeight: 'var(--jpp-keyword-weight, bold) !important'
|
|
45
|
+
}
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The Pierre editor highlight extension, layered on top of JupyterLab's own
|
|
50
|
+
* CodeMirror highlight style.
|
|
51
|
+
*/
|
|
52
|
+
export const pierreSyntaxExtension: Extension =
|
|
53
|
+
syntaxHighlighting(pierreHighlightStyle);
|
package/style/base.css
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Set the default typography for monospace elements */
|
|
2
|
+
tt,
|
|
3
|
+
code,
|
|
4
|
+
kbd,
|
|
5
|
+
samp,
|
|
6
|
+
pre {
|
|
7
|
+
font-family: var(--jp-code-font-family);
|
|
8
|
+
font-size: var(--jp-code-font-size);
|
|
9
|
+
line-height: var(--jp-code-line-height);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Override FAST design system variables for tree items so the file browser
|
|
13
|
+
* rows follow the theme's layout colors. */
|
|
14
|
+
jp-tree-item.jp-TreeItem {
|
|
15
|
+
--neutral-fill-stealth-rest: var(--jp-layout-color1) !important;
|
|
16
|
+
--neutral-fill-stealth-hover: var(--jp-layout-color2) !important;
|
|
17
|
+
--neutral-fill-stealth-active: var(--jp-layout-color1) !important;
|
|
18
|
+
}
|
package/style/index.css
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------------
|
|
2
|
+
| Pierre theme for JupyterLab.
|
|
3
|
+
|
|
|
4
|
+
| Generated by scripts/generate-theme.mjs from @pierre/theme (pierre-light).
|
|
5
|
+
| Do not edit by hand; run "pnpm generate" to regenerate.
|
|
6
|
+
|--------------------------------------------------------------------------- */
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
/* Elevation */
|
|
10
|
+
--jp-shadow-base-lightness: 240;
|
|
11
|
+
--jp-shadow-umbra-color: rgba(
|
|
12
|
+
var(--jp-shadow-base-lightness),
|
|
13
|
+
var(--jp-shadow-base-lightness),
|
|
14
|
+
var(--jp-shadow-base-lightness),
|
|
15
|
+
0.2
|
|
16
|
+
);
|
|
17
|
+
--jp-shadow-penumbra-color: rgba(
|
|
18
|
+
var(--jp-shadow-base-lightness),
|
|
19
|
+
var(--jp-shadow-base-lightness),
|
|
20
|
+
var(--jp-shadow-base-lightness),
|
|
21
|
+
0.14
|
|
22
|
+
);
|
|
23
|
+
--jp-shadow-ambient-color: rgba(
|
|
24
|
+
var(--jp-shadow-base-lightness),
|
|
25
|
+
var(--jp-shadow-base-lightness),
|
|
26
|
+
var(--jp-shadow-base-lightness),
|
|
27
|
+
0.12
|
|
28
|
+
);
|
|
29
|
+
--jp-elevation-z0: none;
|
|
30
|
+
--jp-elevation-z1:
|
|
31
|
+
0 2px 1px -1px var(--jp-shadow-umbra-color),
|
|
32
|
+
0 1px 1px 0 var(--jp-shadow-penumbra-color),
|
|
33
|
+
0 1px 3px 0 var(--jp-shadow-ambient-color);
|
|
34
|
+
--jp-elevation-z2:
|
|
35
|
+
0 3px 1px -2px var(--jp-shadow-umbra-color),
|
|
36
|
+
0 2px 2px 0 var(--jp-shadow-penumbra-color),
|
|
37
|
+
0 1px 5px 0 var(--jp-shadow-ambient-color);
|
|
38
|
+
--jp-elevation-z4:
|
|
39
|
+
0 2px 4px -1px var(--jp-shadow-umbra-color),
|
|
40
|
+
0 4px 5px 0 var(--jp-shadow-penumbra-color),
|
|
41
|
+
0 1px 10px 0 var(--jp-shadow-ambient-color);
|
|
42
|
+
--jp-elevation-z6:
|
|
43
|
+
0 3px 5px -1px var(--jp-shadow-umbra-color),
|
|
44
|
+
0 6px 10px 0 var(--jp-shadow-penumbra-color),
|
|
45
|
+
0 1px 18px 0 var(--jp-shadow-ambient-color);
|
|
46
|
+
--jp-elevation-z8:
|
|
47
|
+
0 5px 5px -3px var(--jp-shadow-umbra-color),
|
|
48
|
+
0 8px 10px 1px var(--jp-shadow-penumbra-color),
|
|
49
|
+
0 3px 14px 2px var(--jp-shadow-ambient-color);
|
|
50
|
+
--jp-elevation-z12:
|
|
51
|
+
0 7px 8px -4px var(--jp-shadow-umbra-color),
|
|
52
|
+
0 12px 17px 2px var(--jp-shadow-penumbra-color),
|
|
53
|
+
0 5px 22px 4px var(--jp-shadow-ambient-color);
|
|
54
|
+
--jp-elevation-z16:
|
|
55
|
+
0 8px 10px -5px var(--jp-shadow-umbra-color),
|
|
56
|
+
0 16px 24px 2px var(--jp-shadow-penumbra-color),
|
|
57
|
+
0 6px 30px 5px var(--jp-shadow-ambient-color);
|
|
58
|
+
--jp-elevation-z20:
|
|
59
|
+
0 10px 13px -6px var(--jp-shadow-umbra-color),
|
|
60
|
+
0 20px 31px 3px var(--jp-shadow-penumbra-color),
|
|
61
|
+
0 8px 38px 7px var(--jp-shadow-ambient-color);
|
|
62
|
+
--jp-elevation-z24:
|
|
63
|
+
0 11px 15px -7px var(--jp-shadow-umbra-color),
|
|
64
|
+
0 24px 38px 3px var(--jp-shadow-penumbra-color),
|
|
65
|
+
0 9px 46px 8px var(--jp-shadow-ambient-color);
|
|
66
|
+
|
|
67
|
+
/* Borders */
|
|
68
|
+
--jp-border-width: 1px;
|
|
69
|
+
--jp-border-radius: 2px;
|
|
70
|
+
--jp-border-color0: #d4d4d4;
|
|
71
|
+
--jp-border-color1: #d4d4d4;
|
|
72
|
+
--jp-border-color2: #e5e5e5;
|
|
73
|
+
--jp-border-color3: #ededed;
|
|
74
|
+
--jp-inverse-border-color: #d4d4d4;
|
|
75
|
+
|
|
76
|
+
/* UI Fonts */
|
|
77
|
+
--jp-ui-font-scale-factor: 1.2;
|
|
78
|
+
--jp-ui-font-size0: 0.8333em;
|
|
79
|
+
--jp-ui-font-size1: 13px;
|
|
80
|
+
--jp-ui-font-size2: 1.2em;
|
|
81
|
+
--jp-ui-font-size3: 1.44em;
|
|
82
|
+
--jp-ui-font-family:
|
|
83
|
+
-apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial, sans-serif,
|
|
84
|
+
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
85
|
+
--jp-ui-font-color0: #0a0a0a;
|
|
86
|
+
--jp-ui-font-color1: rgba(10, 10, 10, 0.9);
|
|
87
|
+
--jp-ui-font-color2: rgba(10, 10, 10, 0.7);
|
|
88
|
+
--jp-ui-font-color3: rgba(10, 10, 10, 0.55);
|
|
89
|
+
--jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
|
|
90
|
+
--jp-ui-inverse-font-color1: rgba(255, 255, 255, 0.8);
|
|
91
|
+
--jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.5);
|
|
92
|
+
--jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.3);
|
|
93
|
+
|
|
94
|
+
/* Content Fonts */
|
|
95
|
+
--jp-content-line-height: 1.6;
|
|
96
|
+
--jp-content-font-scale-factor: 1.2;
|
|
97
|
+
--jp-content-font-size0: 0.8333em;
|
|
98
|
+
--jp-content-font-size1: 14px;
|
|
99
|
+
--jp-content-font-size2: 1.2em;
|
|
100
|
+
--jp-content-font-size3: 1.44em;
|
|
101
|
+
--jp-content-font-size4: 1.728em;
|
|
102
|
+
--jp-content-font-size5: 2.0736em;
|
|
103
|
+
--jp-content-presentation-font-size1: 17px;
|
|
104
|
+
--jp-content-heading-line-height: 1;
|
|
105
|
+
--jp-content-heading-margin-top: 1.2em;
|
|
106
|
+
--jp-content-heading-margin-bottom: 0.8em;
|
|
107
|
+
--jp-content-heading-font-weight: 500;
|
|
108
|
+
--jp-content-font-family:
|
|
109
|
+
system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', helvetica, arial,
|
|
110
|
+
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
111
|
+
--jp-content-font-color0: #0a0a0a;
|
|
112
|
+
--jp-content-font-color1: rgba(10, 10, 10, 0.9);
|
|
113
|
+
--jp-content-font-color2: rgba(10, 10, 10, 0.7);
|
|
114
|
+
--jp-content-font-color3: rgba(10, 10, 10, 0.55);
|
|
115
|
+
--jp-content-link-color: #009fff;
|
|
116
|
+
--jp-content-link-visited-color: #693acf;
|
|
117
|
+
--jp-content-link-hover-color: #008ce0;
|
|
118
|
+
|
|
119
|
+
/* Code Fonts */
|
|
120
|
+
--jp-code-font-size: 13px;
|
|
121
|
+
--jp-code-line-height: 1.3077;
|
|
122
|
+
--jp-code-padding: 0.385em;
|
|
123
|
+
--jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
|
|
124
|
+
--jp-code-font-family: var(--jp-code-font-family-default);
|
|
125
|
+
--jp-code-presentation-font-size: 16px;
|
|
126
|
+
--jp-code-cursor-width0: 1.4px;
|
|
127
|
+
--jp-code-cursor-width1: 2px;
|
|
128
|
+
--jp-code-cursor-width2: 4px;
|
|
129
|
+
|
|
130
|
+
/* Layout colors */
|
|
131
|
+
--jp-layout-color0: #fff;
|
|
132
|
+
--jp-layout-color1: #fff;
|
|
133
|
+
--jp-layout-color2: #f5f5f5;
|
|
134
|
+
--jp-layout-color3: #ededed;
|
|
135
|
+
--jp-layout-color4: #e5e5e5;
|
|
136
|
+
--jp-inverse-layout-color0: #0a0a0a;
|
|
137
|
+
--jp-inverse-layout-color1: #171717;
|
|
138
|
+
--jp-inverse-layout-color2: #262626;
|
|
139
|
+
--jp-inverse-layout-color3: #404040;
|
|
140
|
+
--jp-inverse-layout-color4: #525252;
|
|
141
|
+
|
|
142
|
+
/* Brand/Accent colors */
|
|
143
|
+
--jp-brand-color0: #007fcc;
|
|
144
|
+
--jp-brand-color1: #009fff;
|
|
145
|
+
--jp-brand-color2: #2eb0ff;
|
|
146
|
+
--jp-brand-color3: #73caff;
|
|
147
|
+
--jp-brand-color4: #b8e4ff;
|
|
148
|
+
--jp-accent-color0: #148659;
|
|
149
|
+
--jp-accent-color1: #18a46c;
|
|
150
|
+
--jp-accent-color2: #46b689;
|
|
151
|
+
--jp-accent-color3: #80cdae;
|
|
152
|
+
|
|
153
|
+
/* State colors */
|
|
154
|
+
--jp-warn-color0: #af8b0d;
|
|
155
|
+
--jp-warn-color1: #d5a910;
|
|
156
|
+
--jp-warn-color2: #ddba40;
|
|
157
|
+
--jp-warn-color3: #e8d07c;
|
|
158
|
+
--jp-error-color0: #af242c;
|
|
159
|
+
--jp-error-color1: #d52c36;
|
|
160
|
+
--jp-error-color2: #dd565e;
|
|
161
|
+
--jp-error-color3: #e88b90;
|
|
162
|
+
--jp-success-color0: #148659;
|
|
163
|
+
--jp-success-color1: #18a46c;
|
|
164
|
+
--jp-success-color2: #46b689;
|
|
165
|
+
--jp-success-color3: #80cdae;
|
|
166
|
+
--jp-info-color0: #1784a3;
|
|
167
|
+
--jp-info-color1: #1ca1c7;
|
|
168
|
+
--jp-info-color2: #49b4d2;
|
|
169
|
+
--jp-info-color3: #82cbe0;
|
|
170
|
+
|
|
171
|
+
/* Cell specific styles */
|
|
172
|
+
--jp-cell-padding: 5px;
|
|
173
|
+
--jp-cell-collapser-width: 8px;
|
|
174
|
+
--jp-cell-collapser-min-height: 20px;
|
|
175
|
+
--jp-cell-collapser-not-active-hover-opacity: 0.6;
|
|
176
|
+
--jp-cell-editor-background: var(--jp-layout-color1);
|
|
177
|
+
--jp-cell-editor-active-background: var(--jp-layout-color0);
|
|
178
|
+
--jp-cell-editor-active-border-color: var(--jp-brand-color1);
|
|
179
|
+
--jp-cell-editor-border-color: #d4d4d4;
|
|
180
|
+
--jp-cell-editor-box-shadow: inset 0 0 2px #009fff;
|
|
181
|
+
--jp-cell-prompt-width: 64px;
|
|
182
|
+
--jp-cell-prompt-font-family: var(--jp-code-font-family-default);
|
|
183
|
+
--jp-cell-prompt-letter-spacing: 0;
|
|
184
|
+
--jp-cell-prompt-opacity: 1;
|
|
185
|
+
--jp-cell-prompt-not-active-opacity: 1;
|
|
186
|
+
--jp-cell-prompt-not-active-font-color: rgba(10, 10, 10, 0.26);
|
|
187
|
+
--jp-cell-inprompt-font-color: #009fff;
|
|
188
|
+
--jp-cell-outprompt-font-color: #d5a910;
|
|
189
|
+
|
|
190
|
+
/* Notebook specific styles */
|
|
191
|
+
--jp-notebook-padding: 10px;
|
|
192
|
+
--jp-notebook-select-background: var(--jp-layout-color1);
|
|
193
|
+
--jp-notebook-multiselected-color: rgba(0, 159, 255, 0.24);
|
|
194
|
+
--jp-notebook-scroll-padding: calc(
|
|
195
|
+
100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
|
|
196
|
+
var(--jp-code-padding) - var(--jp-cell-padding) - 1px
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
/* Console specific styles */
|
|
200
|
+
--jp-console-padding: 10px;
|
|
201
|
+
|
|
202
|
+
/* Toolbar specific styles */
|
|
203
|
+
--jp-toolbar-border-color: var(--jp-border-color2);
|
|
204
|
+
--jp-toolbar-micro-height: 8px;
|
|
205
|
+
--jp-toolbar-background: var(--jp-layout-color1);
|
|
206
|
+
--jp-toolbar-header-margin: 4px 4px 0 4px;
|
|
207
|
+
--jp-toolbar-active-background: var(--jp-layout-color0);
|
|
208
|
+
--jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
|
|
209
|
+
|
|
210
|
+
/* Statusbar specific styles */
|
|
211
|
+
--jp-statusbar-height: 24px;
|
|
212
|
+
|
|
213
|
+
/* Input field styles */
|
|
214
|
+
--jp-input-active-background: var(--jp-layout-color0);
|
|
215
|
+
--jp-input-hover-background: var(--jp-layout-color2);
|
|
216
|
+
--jp-input-border-color: var(--jp-inverse-border-color);
|
|
217
|
+
--jp-input-active-border-color: var(--jp-brand-color1);
|
|
218
|
+
--jp-input-box-shadow: inset 0 0 2px #009fff;
|
|
219
|
+
--jp-input-background: rgba(10, 10, 10, 0.04);
|
|
220
|
+
--jp-input-active-box-shadow-color: rgba(0, 159, 255, 0.3);
|
|
221
|
+
|
|
222
|
+
/* Rendermime styles */
|
|
223
|
+
--jp-rendermime-error-background: rgba(213, 44, 54, 0.28);
|
|
224
|
+
--jp-rendermime-table-row-background: var(--jp-layout-color0);
|
|
225
|
+
--jp-rendermime-table-row-hover-background: rgba(28, 161, 199, 0.2);
|
|
226
|
+
|
|
227
|
+
/* Dialog styles */
|
|
228
|
+
--jp-dialog-background: rgba(0, 0, 0, 0.25);
|
|
229
|
+
|
|
230
|
+
/* Editor styles */
|
|
231
|
+
--jp-editor-selected-background: #dfebff;
|
|
232
|
+
--jp-editor-selected-focused-background: rgba(0, 159, 255, 0.24);
|
|
233
|
+
--jp-editor-cursor-color: #009fff;
|
|
234
|
+
|
|
235
|
+
/* CodeMirror / mirror editor colors */
|
|
236
|
+
--jp-mirror-editor-keyword-color: #d32a61;
|
|
237
|
+
--jp-mirror-editor-atom-color: #1ca1c7;
|
|
238
|
+
--jp-mirror-editor-number-color: #1ca1c7;
|
|
239
|
+
--jp-mirror-editor-def-color: #d47628;
|
|
240
|
+
--jp-mirror-editor-variable-color: #d47628;
|
|
241
|
+
--jp-mirror-editor-variable-2-color: #d47628;
|
|
242
|
+
--jp-mirror-editor-variable-3-color: #d5901c;
|
|
243
|
+
--jp-mirror-editor-punctuation-color: #636363;
|
|
244
|
+
--jp-mirror-editor-property-color: #d47628;
|
|
245
|
+
--jp-mirror-editor-operator-color: #636363;
|
|
246
|
+
--jp-mirror-editor-comment-color: #737373;
|
|
247
|
+
--jp-mirror-editor-string-color: #199f43;
|
|
248
|
+
--jp-mirror-editor-string-2-color: #199f43;
|
|
249
|
+
--jp-mirror-editor-meta-color: #1a85d4;
|
|
250
|
+
--jp-mirror-editor-qualifier-color: #636363;
|
|
251
|
+
--jp-mirror-editor-builtin-color: #693acf;
|
|
252
|
+
--jp-mirror-editor-bracket-color: #636363;
|
|
253
|
+
--jp-mirror-editor-tag-color: #d5512f;
|
|
254
|
+
--jp-mirror-editor-attribute-color: #18a46c;
|
|
255
|
+
--jp-mirror-editor-header-color: #d5512f;
|
|
256
|
+
--jp-mirror-editor-quote-color: #737373;
|
|
257
|
+
--jp-mirror-editor-link-color: #009fff;
|
|
258
|
+
--jp-mirror-editor-error-color: #d52c36;
|
|
259
|
+
--jp-mirror-editor-hr-color: #636363;
|
|
260
|
+
|
|
261
|
+
/* Extra syntax colors for the CodeMirror tags JupyterLab's highlight style
|
|
262
|
+
leaves unstyled, read by the Pierre editor extension (src/syntax.ts).
|
|
263
|
+
Defined only here, so the extension stays inert under other themes. */
|
|
264
|
+
--jpp-tok-type-color: #a631be;
|
|
265
|
+
--jpp-tok-function-color: #693acf;
|
|
266
|
+
--jpp-tok-variable-color: #d47628;
|
|
267
|
+
--jpp-tok-namespace-color: #d5901c;
|
|
268
|
+
--jpp-tok-constant-color: #1ca1c7;
|
|
269
|
+
--jpp-keyword-weight: normal;
|
|
270
|
+
|
|
271
|
+
/* Scrollbar styles */
|
|
272
|
+
--jp-scrollbar-background-color: var(--jp-layout-color0);
|
|
273
|
+
--jp-scrollbar-thumb-color: 10, 10, 10;
|
|
274
|
+
--jp-scrollbar-endpad: 3px;
|
|
275
|
+
--jp-scrollbar-thumb-margin: 3.5px;
|
|
276
|
+
--jp-scrollbar-thumb-radius: 9px;
|
|
277
|
+
|
|
278
|
+
/* User colors */
|
|
279
|
+
--jp-collaborator-color1: #ad4a00;
|
|
280
|
+
--jp-collaborator-color2: #7b6a00;
|
|
281
|
+
--jp-collaborator-color3: #007e00;
|
|
282
|
+
--jp-collaborator-color4: #008772;
|
|
283
|
+
--jp-collaborator-color5: #0079b9;
|
|
284
|
+
--jp-collaborator-color6: #8b45c6;
|
|
285
|
+
--jp-collaborator-color7: #be208b;
|
|
286
|
+
|
|
287
|
+
/* Sidebar styles */
|
|
288
|
+
--jp-sidebar-min-width: 250px;
|
|
289
|
+
|
|
290
|
+
/* Search styles */
|
|
291
|
+
--jp-search-toggle-off-opacity: 0.6;
|
|
292
|
+
--jp-search-toggle-hover-opacity: 0.8;
|
|
293
|
+
--jp-search-toggle-on-opacity: 1;
|
|
294
|
+
--jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
|
|
295
|
+
--jp-search-selected-match-background-color: rgba(28, 161, 199, 0.4);
|
|
296
|
+
--jp-search-selected-match-color: var(--jp-layout-color1);
|
|
297
|
+
--jp-search-unselected-match-background-color: rgba(28, 161, 199, 0.27);
|
|
298
|
+
|
|
299
|
+
/* Icon colors */
|
|
300
|
+
--jp-icon-contrast-color0: #693acf;
|
|
301
|
+
--jp-icon-contrast-color1: #18a46c;
|
|
302
|
+
--jp-icon-contrast-color2: #d52c36;
|
|
303
|
+
--jp-icon-contrast-color3: #009fff;
|
|
304
|
+
|
|
305
|
+
/* Button colors */
|
|
306
|
+
--jp-accept-color-normal: #007fcc;
|
|
307
|
+
--jp-accept-color-hover: #009fff;
|
|
308
|
+
--jp-accept-color-active: #2eb0ff;
|
|
309
|
+
--jp-warn-color-normal: #af242c;
|
|
310
|
+
--jp-warn-color-hover: #d52c36;
|
|
311
|
+
--jp-warn-color-active: #dd565e;
|
|
312
|
+
--jp-reject-color-normal: #9e9e9e;
|
|
313
|
+
--jp-reject-color-hover: #7e7e7e;
|
|
314
|
+
--jp-reject-color-active: #5f5f5f;
|
|
315
|
+
|
|
316
|
+
/* File/activity icons */
|
|
317
|
+
--jp-jupyter-icon-color: #d5a910;
|
|
318
|
+
--jp-notebook-icon-color: #d5a910;
|
|
319
|
+
--jp-json-icon-color: #d5a910;
|
|
320
|
+
--jp-console-icon-background-color: #009fff;
|
|
321
|
+
--jp-console-icon-color: var(--jp-layout-color1);
|
|
322
|
+
--jp-terminal-icon-background-color: var(--jp-layout-color3);
|
|
323
|
+
--jp-terminal-icon-color: rgba(10, 10, 10, 0.92);
|
|
324
|
+
--jp-text-editor-icon-color: rgba(10, 10, 10, 0.55);
|
|
325
|
+
--jp-inspector-icon-color: rgba(10, 10, 10, 0.55);
|
|
326
|
+
--jp-switch-color: #9e9e9e;
|
|
327
|
+
--jp-switch-true-position-color: #009fff;
|
|
328
|
+
--jp-switch-cursor-color: rgba(10, 10, 10, 0.8);
|
|
329
|
+
|
|
330
|
+
/* Vega */
|
|
331
|
+
--jp-vega-background: var(--jp-layout-color0);
|
|
332
|
+
|
|
333
|
+
/* Shortcut buttons */
|
|
334
|
+
--jp-shortcuts-button-background: #009fff;
|
|
335
|
+
--jp-shortcuts-button-hover-background: #2eb0ff;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* Completer specific styles */
|
|
339
|
+
|
|
340
|
+
.jp-Completer {
|
|
341
|
+
--jp-completer-type-background0: transparent;
|
|
342
|
+
--jp-completer-type-background1: #1f77b4;
|
|
343
|
+
--jp-completer-type-background2: #ff7f0e;
|
|
344
|
+
--jp-completer-type-background3: #2ca02c;
|
|
345
|
+
--jp-completer-type-background4: #d62728;
|
|
346
|
+
--jp-completer-type-background5: #9467bd;
|
|
347
|
+
--jp-completer-type-background6: #8c564b;
|
|
348
|
+
--jp-completer-type-background7: #e377c2;
|
|
349
|
+
--jp-completer-type-background8: #7f7f7f;
|
|
350
|
+
--jp-completer-type-background9: #bcbd22;
|
|
351
|
+
--jp-completer-type-background10: #17becf;
|
|
352
|
+
}
|