{"id":51061180,"url":"https://github.com/jtpio/jupyterlab-pierre-theme","last_synced_at":"2026-06-23T02:02:02.082Z","repository":{"id":362368463,"uuid":"1258700359","full_name":"jtpio/jupyterlab-pierre-theme","owner":"jtpio","description":"Pierre light and dark themes for JupyterLab","archived":false,"fork":false,"pushed_at":"2026-06-03T21:35:38.000Z","size":139,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-03T23:13:49.042Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtpio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-03T20:45:43.000Z","updated_at":"2026-06-03T21:05:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jtpio/jupyterlab-pierre-theme","commit_stats":null,"previous_names":["jtpio/jupyterlab-pierre-theme"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jtpio/jupyterlab-pierre-theme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-pierre-theme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-pierre-theme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-pierre-theme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-pierre-theme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtpio","download_url":"https://codeload.github.com/jtpio/jupyterlab-pierre-theme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-pierre-theme/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34672250,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-23T02:02:01.398Z","updated_at":"2026-06-23T02:02:02.073Z","avatar_url":"https://github.com/jtpio.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jupyterlab-pierre-theme\n\nJupyterLab light and dark themes that match the [Pierre](https://pierre.co)\npalette, the same colors used by the `@pierre/diffs` viewer.\n\n![The Pierre Dark theme in JupyterLab: a notebook, a console with ipywidgets, and a Python file open side by side](./screenshot.png)\n\nIt was made to fit the work on\n[xtralab](https://github.com/jtpio/xtralab), so a JupyterLab workbench and the\ngit diffs xtralab renders through `@pierre/diffs` read as a single product.\n\nThis repository ships two prebuilt JupyterLab themes:\n\n- `jupyterlab-pierre-light`\n- `jupyterlab-pierre-dark`\n\nThey recolor the whole JupyterLab UI (layout, accents, state colors) and the\nCodeMirror editor syntax highlighting so the editor reads as the same product\nas a Pierre diff. The themes work in any JupyterLab 4 install.\n\n## Install\n\n```bash\npip install jupyterlab-pierre-light jupyterlab-pierre-dark\n```\n\nThen pick \"Pierre Light\" or \"Pierre Dark\" from Settings, Theme.\n\n## Color source\n\nThe palettes are generated from [`@pierre/theme`](https://www.npmjs.com/package/@pierre/theme),\nPierre's canonical theme package (MIT licensed). `scripts/generate-theme.mjs`\nreads `@pierre/theme/themes/pierre-{light,dark}.json` and writes each package's\n`style/variables.css`, so the JupyterLab themes track upstream Pierre instead of\ndrifting from hand-copied hex values. Regenerate with:\n\n```bash\npnpm generate\n```\n\nThe diff viewer highlights code with Shiki and TextMate grammars, while\nJupyterLab highlights the editor with CodeMirror 6 and Lezer. JupyterLab's\ndefault highlight style leaves several tokens uncolored (type and class names,\nplain variable references, function calls) and renders keywords bold. To narrow\nthe gap, each package also ships a small CodeMirror extension (`src/syntax.ts`)\nthat colors those tokens and softens the keyword weight to match Pierre. Its\ncolors come from `--jpp-*` variables that only the Pierre themes define, so the\nextension is inert under any other theme. The two engines still tokenize\ndifferently, so the editor is a close approximation rather than a pixel-perfect\nmatch; the chrome and the added and deleted colors line up exactly.\n\n## Development\n\nThis is a pnpm workspace with one package per theme, built with\n`@jupyter/builder`.\n\n```bash\npnpm install\npnpm build\n```\n\nInstall the packages into a JupyterLab environment for local testing:\n\n```bash\npython -m pip install -e packages/jupyterlab-pierre-light\npython -m pip install -e packages/jupyterlab-pierre-dark\n```\n\nThen reload JupyterLab and select the theme.\n\n## License\n\nBSD-3-Clause. Color values are derived from `@pierre/theme`, which is MIT\nlicensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtpio%2Fjupyterlab-pierre-theme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtpio%2Fjupyterlab-pierre-theme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtpio%2Fjupyterlab-pierre-theme/lists"}