jupyterlab_vscode_icons_extension 1.0.37 → 1.0.43
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/README.md +2 -0
- package/lib/index.js +23 -12
- package/package.json +2 -2
- package/src/index.ts +25 -12
package/README.md
CHANGED
|
@@ -79,6 +79,8 @@ This extension shamelessly borrows icons from the excellent [vscode-icons](https
|
|
|
79
79
|
|
|
80
80
|
All icon assets remain under their original licenses (MIT for code, CC BY-SA for branded icons). We just wrapped them in a JupyterLab extension and called it a day.
|
|
81
81
|
|
|
82
|
+
**Custom Icons**: A few icons (Python, Markdown, README) were hand-crafted in Inkscape - because sometimes you need that perfect shade of purple and the exact right amount of snake eyes.
|
|
83
|
+
|
|
82
84
|
## Why This Exists
|
|
83
85
|
|
|
84
86
|
Because JupyterLab deserves pretty icons too. That's it. That's the whole justification
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
2
|
-
import { LabIcon
|
|
2
|
+
import { LabIcon } from '@jupyterlab/ui-components';
|
|
3
3
|
import { getIconSVG } from './icons';
|
|
4
4
|
const PLUGIN_ID = 'jupyterlab_vscode_icons_extension:plugin';
|
|
5
5
|
/**
|
|
@@ -337,22 +337,33 @@ const plugin = {
|
|
|
337
337
|
const { docRegistry } = app;
|
|
338
338
|
// Function to inject CSS that overrides Jupytext icons
|
|
339
339
|
const injectIconOverrideCSS = () => {
|
|
340
|
-
// Get icons: Python (
|
|
341
|
-
const pythonIcon = createLabIcon('file-type-python');
|
|
340
|
+
// Get icons: Python (custom SVG), Markdown (custom SVG), Claude (VSCode), README (custom)
|
|
342
341
|
const claudeIcon = createLabIcon('file-type-claude');
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
342
|
+
// Custom Markdown icon (from markdown.svg - purple M with arrow)
|
|
343
|
+
const markdownSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 309 327">
|
|
344
|
+
<path fill="#912bac" opacity="1" stroke="none" d="m 138.68393,230.48651 c 36.58836,3.1e-4 72.68422,3.1e-4 108.78008,3.1e-4 0.13988,0.49669 0.0821,0.12537 -3.34406,3.81472 -27.34165,24.16766 -54.43119,49.41695 -81.72391,73.62893 -2.65146,2.35216 -4.5582,3.21609 -7.64686,0.37229 -26.89754,-24.76539 -75.191307,-68.40096 -80.889724,-74.12425 -0.744118,-0.74735 -1.274501,-1.57204 -2.95867,-3.69233 23.309236,0 45.299954,0 67.783144,3.3e-4 z"/>
|
|
345
|
+
<path fill="#912bac" d="m 61.156397,14.443673 h 69.176263 q 14.81059,56.661581 23.29958,97.452667 l 5.96036,-27.150338 q 3.61233,-15.870486 7.76652,-30.954008 l 10.6564,-39.348321 H 248.6367 L 276.09047,189.5437 H 221.90541 L 207.27544,69.137838 173.50009,189.5437 H 136.47364 L 101.07273,68.875516 86.984609,189.5437 H 35.147571 Z"/>
|
|
346
|
+
</svg>`;
|
|
347
|
+
// Custom Python icon (simplified official logo - 50% reduced fidelity)
|
|
348
|
+
const pythonSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 110 110">
|
|
346
349
|
<defs>
|
|
347
|
-
<
|
|
348
|
-
<
|
|
349
|
-
<
|
|
350
|
-
</
|
|
350
|
+
<linearGradient id="py-b" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
351
|
+
<stop offset="0" stop-color="#387EB8"/>
|
|
352
|
+
<stop offset="100" stop-color="#366994"/>
|
|
353
|
+
</linearGradient>
|
|
354
|
+
<linearGradient id="py-y" x1="0%" y1="100%" x2="0%" y2="0%">
|
|
355
|
+
<stop offset="0" stop-color="#FFE052"/>
|
|
356
|
+
<stop offset="100" stop-color="#FFC331"/>
|
|
357
|
+
</linearGradient>
|
|
351
358
|
</defs>
|
|
352
|
-
<
|
|
359
|
+
<path fill="url(#py-b)" d="M55,0C29,0,29,10,29,12v13h27v4H19C11,29,0,34,0,55c0,20,8,27,16,27h9V69c0-6,3-16,16-16h26c4,0,15-2,15-14V14C82,11,82,0,55,0zM40,8c3,0,5,2,5,5s-2,5-5,5-5-2-5-5S37,8,40,8z"/>
|
|
360
|
+
<path fill="url(#py-y)" d="M55,110c26,0,26-10,26-12V85H54v-4h37c8,0,18-5,18-26 0-23-11-27-16-27h-9v13c0,6-3,16-16,16H42c-4,0-15,2-15,14v24c0,3,0,14,28,14zM70,101c-3,0-5-2-5-5s2-5,5-5 5,2,5,5S73,101,70,101z"/>
|
|
361
|
+
</svg>`;
|
|
362
|
+
// Custom README icon (info icon from info2.svg - color #aa4fb2)
|
|
363
|
+
const readmeSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
|
364
|
+
<path fill="#aa4fb2" d="m 9.5247234,12.218859 v 75.35612 a 2.9104166,2.9104166 45 0 0 2.9104166,2.910417 l 76.222217,0 a 2.9104166,2.9104166 135 0 0 2.910417,-2.910417 V 12.218859 A 2.9104166,2.9104166 45 0 0 88.657357,9.3084428 H 12.43514 A 2.9104166,2.9104166 135 0 0 9.5247234,12.218859 Z m 36.2236286,5.918502 h 11.515059 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 3.482474 a 2.9104166,2.9104166 135 0 1 -2.910417,2.910417 H 45.748352 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -3.482474 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 z M 30.307434,33.442887 h 25.62996 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 34.844385 a 2.9104166,2.9104166 45 0 0 2.910417,2.910417 h 10.661879 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 1.607136 a 2.9104166,2.9104166 135 0 1 -2.910417,2.910417 H 30.307434 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -1.607136 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 h 10.946618 a 2.9104166,2.9104166 135 0 0 2.910417,-2.910417 V 43.931136 a 2.9104166,2.9104166 45 0 0 -2.910417,-2.910417 l -10.946618,0 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -1.756998 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 z"/>
|
|
353
365
|
</svg>`;
|
|
354
366
|
// Get SVG content
|
|
355
|
-
const pythonSvg = pythonIcon.svgstr;
|
|
356
367
|
const claudeSvg = claudeIcon.svgstr;
|
|
357
368
|
// Create base64 encoded data URIs
|
|
358
369
|
const pythonDataUri = `data:image/svg+xml;base64,${btoa(pythonSvg)}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jupyterlab_vscode_icons_extension",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.43",
|
|
4
4
|
"description": "Jupyterlab extension with a shameless rip-off of the vscode-icons into our beloved environment",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": ".git"
|
|
16
|
+
"url": "https://github.com/stellarshenson/jupyterlab_vscode_icons_extension.git"
|
|
17
17
|
},
|
|
18
18
|
"license": "BSD-3-Clause",
|
|
19
19
|
"author": {
|
package/src/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
JupyterFrontEndPlugin
|
|
4
4
|
} from '@jupyterlab/application';
|
|
5
5
|
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
6
|
-
import { LabIcon
|
|
6
|
+
import { LabIcon } from '@jupyterlab/ui-components';
|
|
7
7
|
import { getIconSVG } from './icons';
|
|
8
8
|
|
|
9
9
|
const PLUGIN_ID = 'jupyterlab_vscode_icons_extension:plugin';
|
|
@@ -378,24 +378,37 @@ const plugin: JupyterFrontEndPlugin<void> = {
|
|
|
378
378
|
// Function to inject CSS that overrides Jupytext icons
|
|
379
379
|
const injectIconOverrideCSS = () => {
|
|
380
380
|
|
|
381
|
-
// Get icons: Python (
|
|
382
|
-
const pythonIcon = createLabIcon('file-type-python');
|
|
381
|
+
// Get icons: Python (custom SVG), Markdown (custom SVG), Claude (VSCode), README (custom)
|
|
383
382
|
const claudeIcon = createLabIcon('file-type-claude');
|
|
384
|
-
const markdownSvg = markdownIcon.svgstr;
|
|
385
383
|
|
|
386
|
-
// Custom
|
|
387
|
-
const
|
|
384
|
+
// Custom Markdown icon (from markdown.svg - purple M with arrow)
|
|
385
|
+
const markdownSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 309 327">
|
|
386
|
+
<path fill="#912bac" opacity="1" stroke="none" d="m 138.68393,230.48651 c 36.58836,3.1e-4 72.68422,3.1e-4 108.78008,3.1e-4 0.13988,0.49669 0.0821,0.12537 -3.34406,3.81472 -27.34165,24.16766 -54.43119,49.41695 -81.72391,73.62893 -2.65146,2.35216 -4.5582,3.21609 -7.64686,0.37229 -26.89754,-24.76539 -75.191307,-68.40096 -80.889724,-74.12425 -0.744118,-0.74735 -1.274501,-1.57204 -2.95867,-3.69233 23.309236,0 45.299954,0 67.783144,3.3e-4 z"/>
|
|
387
|
+
<path fill="#912bac" d="m 61.156397,14.443673 h 69.176263 q 14.81059,56.661581 23.29958,97.452667 l 5.96036,-27.150338 q 3.61233,-15.870486 7.76652,-30.954008 l 10.6564,-39.348321 H 248.6367 L 276.09047,189.5437 H 221.90541 L 207.27544,69.137838 173.50009,189.5437 H 136.47364 L 101.07273,68.875516 86.984609,189.5437 H 35.147571 Z"/>
|
|
388
|
+
</svg>`;
|
|
389
|
+
|
|
390
|
+
// Custom Python icon (simplified official logo - 50% reduced fidelity)
|
|
391
|
+
const pythonSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 110 110">
|
|
388
392
|
<defs>
|
|
389
|
-
<
|
|
390
|
-
<
|
|
391
|
-
<
|
|
392
|
-
</
|
|
393
|
+
<linearGradient id="py-b" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
394
|
+
<stop offset="0" stop-color="#387EB8"/>
|
|
395
|
+
<stop offset="100" stop-color="#366994"/>
|
|
396
|
+
</linearGradient>
|
|
397
|
+
<linearGradient id="py-y" x1="0%" y1="100%" x2="0%" y2="0%">
|
|
398
|
+
<stop offset="0" stop-color="#FFE052"/>
|
|
399
|
+
<stop offset="100" stop-color="#FFC331"/>
|
|
400
|
+
</linearGradient>
|
|
393
401
|
</defs>
|
|
394
|
-
<
|
|
402
|
+
<path fill="url(#py-b)" d="M55,0C29,0,29,10,29,12v13h27v4H19C11,29,0,34,0,55c0,20,8,27,16,27h9V69c0-6,3-16,16-16h26c4,0,15-2,15-14V14C82,11,82,0,55,0zM40,8c3,0,5,2,5,5s-2,5-5,5-5-2-5-5S37,8,40,8z"/>
|
|
403
|
+
<path fill="url(#py-y)" d="M55,110c26,0,26-10,26-12V85H54v-4h37c8,0,18-5,18-26 0-23-11-27-16-27h-9v13c0,6-3,16-16,16H42c-4,0-15,2-15,14v24c0,3,0,14,28,14zM70,101c-3,0-5-2-5-5s2-5,5-5 5,2,5,5S73,101,70,101z"/>
|
|
404
|
+
</svg>`;
|
|
405
|
+
|
|
406
|
+
// Custom README icon (info icon from info2.svg - color #aa4fb2)
|
|
407
|
+
const readmeSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
|
408
|
+
<path fill="#aa4fb2" d="m 9.5247234,12.218859 v 75.35612 a 2.9104166,2.9104166 45 0 0 2.9104166,2.910417 l 76.222217,0 a 2.9104166,2.9104166 135 0 0 2.910417,-2.910417 V 12.218859 A 2.9104166,2.9104166 45 0 0 88.657357,9.3084428 H 12.43514 A 2.9104166,2.9104166 135 0 0 9.5247234,12.218859 Z m 36.2236286,5.918502 h 11.515059 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 3.482474 a 2.9104166,2.9104166 135 0 1 -2.910417,2.910417 H 45.748352 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -3.482474 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 z M 30.307434,33.442887 h 25.62996 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 34.844385 a 2.9104166,2.9104166 45 0 0 2.910417,2.910417 h 10.661879 a 2.9104166,2.9104166 45 0 1 2.910417,2.910417 v 1.607136 a 2.9104166,2.9104166 135 0 1 -2.910417,2.910417 H 30.307434 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -1.607136 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 h 10.946618 a 2.9104166,2.9104166 135 0 0 2.910417,-2.910417 V 43.931136 a 2.9104166,2.9104166 45 0 0 -2.910417,-2.910417 l -10.946618,0 a 2.9104166,2.9104166 45 0 1 -2.910417,-2.910417 v -1.756998 a 2.9104166,2.9104166 135 0 1 2.910417,-2.910417 z"/>
|
|
395
409
|
</svg>`;
|
|
396
410
|
|
|
397
411
|
// Get SVG content
|
|
398
|
-
const pythonSvg = pythonIcon.svgstr;
|
|
399
412
|
const claudeSvg = claudeIcon.svgstr;
|
|
400
413
|
|
|
401
414
|
// Create base64 encoded data URIs
|