diff --git a/README.md b/README.md index 50ab993..9c8b522 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@
- badge + badge
- logo + logo
- go from data to knowledge + Analyze data any time, anywhere
-# [ElixirNote](https://ciusji.gitbook.io/elixirnote/) +# ElixirNote [![Build Status](https://github.com/jupyterlab/jupyterlab/workflows/Linux%20Tests/badge.svg)](https://github.com/jupyterlab/jupyterlab/actions?query=branch%3Amaster+workflow%3A%22Linux+Tests%22) [![Build Status](https://github.com/jupyterlab/jupyterlab/workflows/Windows%20Tests/badge.svg)](https://github.com/jupyterlab/jupyterlab/actions?query=branch%3Amaster+workflow%3A%22Windows+Tests%22) @@ -18,7 +18,7 @@ [ElixirNote](https://github.com/ElixirNote/elixirnote/tags) is a next-generation web-based user interface for Project Jupyter. The Commercial product such as [Hex](https://hex.tech/), [Deepnote](https://deepnote.com/) ... are also good choices. -![ecosystem](https://raw.githubusercontent.com/ElixirNote/elixirnote/main/jupyterlab/staging/assets/elixir-ecosystem-v2.svg) +![ecosystem](https://raw.githubusercontent.com/ElixirNote/.github/main/profile/elixir-ecosystem-v3.svg) Read the current ElixirNote documentation on [ElixirNote Docs](https://ciusji.gitbook.io/elixirnote/). @@ -54,15 +54,15 @@ Read the current ElixirNote documentation on [ElixirNote Docs](https://ciusji.gi - [Command Palette](https://ciusji.gitbook.io/elixirnote/guides/command-palette) - [File & Output Format](https://ciusji.gitbook.io/elixirnote/guides/file-and-output-formats) - [Extensions](https://ciusji.gitbook.io/elixirnote/guides/extensions) -- [Elixir Server](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-server) +- [Built-in Services](https://ciusji.gitbook.io/elixirnote/guides/built-in-services) - [Elixir Hub](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub) - [Realtime Collaboration](https://ciusji.gitbook.io/elixirnote/guides/real-time-collaboration) - [APIs](https://ciusji.gitbook.io/elixirnote/guides/apis) -- [FAQ](https://ciusji.gitbook.io/elixirnote/appendix/faq) +- [FAQs](https://ciusji.gitbook.io/elixirnote/appendix/faqs) ## Getting Help -We encourage you to ask questions on the [Discourse forum](https://github.com/orgs/ElixirNote/discussions). A question answered there can become a useful resource for others. +We encourage you to ask questions on the [discussion forum](https://github.com/orgs/ElixirNote/discussions). A question answered there can become a useful resource for others. ## Bug Report @@ -84,3 +84,6 @@ ElixirNote follows the Jupyter [Community Guides](https://jupyter.readthedocs.io ElixirNote uses a shared copyright model that enables all contributors to maintain the copyright on their contributions. All code is licensed under the terms of the revised [BSD license](https://github.com/ElixirNote/elixirnote/blob/main/LICENSE). + +license + diff --git a/docs/assets/elixir-ecosystem-v2.svg b/docs/assets/elixir-ecosystem-v2.svg new file mode 100644 index 0000000..4dda97e --- /dev/null +++ b/docs/assets/elixir-ecosystem-v2.svg @@ -0,0 +1,111 @@ + + + elixir-ecosystem-v2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ElixirNote + + + + + + + Permissions + + + + + + + + Scheduling + + + + + + + + Collaborate + + + + + + + + Visualizations + + + + + + + + Comments + + + + + + + + + + + + diff --git a/docs/assets/elixir-ecosystem.svg b/docs/assets/elixir-ecosystem.svg new file mode 100644 index 0000000..1c79e06 --- /dev/null +++ b/docs/assets/elixir-ecosystem.svg @@ -0,0 +1,122 @@ + + + elixir-ecosystem + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/elixirnote-intro.svg b/docs/assets/elixirnote-intro.svg new file mode 100644 index 0000000..0da304b --- /dev/null +++ b/docs/assets/elixirnote-intro.svg @@ -0,0 +1,44 @@ + + + elixirnote-intro + + + + + + + + + + + + + + + + + Go from data to knowledge + + + Powered by GuinsooLab + + + + + ElixirNote + + + + + + + + One Platform + Limitless Possibilities + + + GuinsooLab + + + + diff --git a/docs/assets/elixirnote2.svg b/docs/assets/elixirnote2.svg new file mode 100644 index 0000000..6edffce --- /dev/null +++ b/docs/assets/elixirnote2.svg @@ -0,0 +1,10 @@ + + + elixirnote + + + + + + + diff --git a/docs/assets/guinsoolab-badge.png b/docs/assets/guinsoolab-badge.png new file mode 100644 index 0000000..4822269 Binary files /dev/null and b/docs/assets/guinsoolab-badge.png differ diff --git a/docs/assets/overview-1.png b/docs/assets/overview-1.png new file mode 100644 index 0000000..b5b461a Binary files /dev/null and b/docs/assets/overview-1.png differ diff --git a/docs/assets/overview-2.png b/docs/assets/overview-2.png new file mode 100644 index 0000000..480a153 Binary files /dev/null and b/docs/assets/overview-2.png differ diff --git a/docs/assets/overview-3.png b/docs/assets/overview-3.png new file mode 100644 index 0000000..ee37864 Binary files /dev/null and b/docs/assets/overview-3.png differ diff --git a/docs/assets/overview-4.png b/docs/assets/overview-4.png new file mode 100644 index 0000000..212e9c1 Binary files /dev/null and b/docs/assets/overview-4.png differ diff --git a/packages/application-extension/style/base.css b/packages/application-extension/style/base.css index cd9117f..06541ea 100644 --- a/packages/application-extension/style/base.css +++ b/packages/application-extension/style/base.css @@ -24,3 +24,37 @@ border: none; align-items: center; } + +.ͼ1 .cm-ySelectionCaretDot { + position: absolute; + top: -0.2em; + left: -0.2em; + width: 0; + height: 0; + background-color: inherit; + transition: transform 0.3s ease-in-out; + box-sizing: border-box; +} + +.ͼ1 .cm-ySelectionInfo { + position: absolute; + top: -1.05em; + left: -1px; + font-size: 0.75em; + font-family: serif; + font-style: normal; + font-weight: normal; + line-height: normal; + user-select: none; + color: white; + padding-left: 4px; + padding-top: 2px; + padding-right: 4px; + padding-bottom: 2px; + z-index: 101; + transition: opacity 0.3s ease-in-out; + background-color: inherit; + opacity: 1; + transition-delay: 0s; + white-space: nowrap; +} diff --git a/packages/application/src/shell.ts b/packages/application/src/shell.ts index 214f48f..b9c17a5 100644 --- a/packages/application/src/shell.ts +++ b/packages/application/src/shell.ts @@ -2137,11 +2137,24 @@ namespace Private { const tip = document.createElement('div'); tip.className = 'jp-title-ext'; - const tipImg = document.createElement('div'); - tipImg.className = 'jp-title-ext-tip-img'; - tipImg.innerHTML = cloudIcon.svgstr; - - tip.appendChild(tipImg); + const titleExtElement = document.getElementById( + 'jp-title-panel-title-ext' + ); + if (titleExtElement != null) { + const titleAttr = titleExtElement.title; + const tipImg = document.createElement('div'); + tipImg.className = 'jp-title-ext-tip-img'; + tipImg.innerHTML = cloudIcon.svgstr; + + if (titleAttr != null) { + const saveTip = document.createElement('span'); + saveTip.className = 'jp-title-ext-tip'; + saveTip.innerText = titleAttr.split('\n')[2]; + + tip.appendChild(tipImg); + tip.appendChild(saveTip); + } + } this.node.appendChild(tip); this.tip = tip; diff --git a/packages/application/style/core.css b/packages/application/style/core.css index 59296f6..0699de3 100644 --- a/packages/application/style/core.css +++ b/packages/application/style/core.css @@ -69,7 +69,7 @@ body { padding-left: calc( var(--jp-private-sidebar-tab-width) + var(--jp-border-width) ); - border-bottom: var(--jp-border-width) solid var(--jp-border-color0); + border-bottom: var(--jp-border-width) solid var(--jp-border-color2); /* Adjust min-height so open menus show up in the right place */ min-height: calc( diff --git a/packages/cell-toolbar/src/celltoolbartracker.ts b/packages/cell-toolbar/src/celltoolbartracker.ts index 18b29b1..9806f20 100644 --- a/packages/cell-toolbar/src/celltoolbartracker.ts +++ b/packages/cell-toolbar/src/celltoolbartracker.ts @@ -337,6 +337,10 @@ const defaultToolbarItems: ToolbarRegistry.IWidget[] = [ command: 'notebook:run-cell', name: 'run-cell' }, + { + command: 'notebook:interrupt-kernel', + name: 'interrupt' + }, { command: 'notebook:duplicate-below', name: 'duplicate-cell' diff --git a/packages/collaboration/src/menu.ts b/packages/collaboration/src/menu.ts index 8f19f19..e5930d3 100644 --- a/packages/collaboration/src/menu.ts +++ b/packages/collaboration/src/menu.ts @@ -114,7 +114,7 @@ export class RendererUserMenu extends MenuBar.Renderer { return h.div( { className: - 'lm-MenuBar-itemIcon p-MenuBar-itemIcon jp-MenuBar-CommonLabel', + 'lm-MenuBar-itemIcon p-MenuBar-itemIcon jp-MenuBar-CommonLabel-Active', onclick: async event => { let results: { token: string }[]; const isRunningUnderJupyterhub = @@ -237,7 +237,7 @@ export class RendererUserMenu extends MenuBar.Renderer { } } }, - 'Preview' + 'Publish' ); } } diff --git a/packages/collaboration/style/menu.css b/packages/collaboration/style/menu.css index 66d2504..841a508 100644 --- a/packages/collaboration/style/menu.css +++ b/packages/collaboration/style/menu.css @@ -19,7 +19,7 @@ width: 28px; height: 28px; text-align: center; - border-radius: 4px; + border-radius: 50%; margin: 0 16px; } @@ -32,6 +32,15 @@ margin: 0 4px; } +.jp-MenuBar-CommonLabel-Active { + height: 28px; + width: 70px; + text-align: center; + border-radius: 2px; + border: 1px solid var(--jp-brand-color1); + margin: 0 4px; +} + .jp-MenuBar-imageIcon img { width: 28px; border-radius: 100%; diff --git a/packages/completer/src/widget.ts b/packages/completer/src/widget.ts index 21fd8f4..25f777b 100644 --- a/packages/completer/src/widget.ts +++ b/packages/completer/src/widget.ts @@ -4,7 +4,7 @@ import { defaultSanitizer } from '@jupyterlab/apputils'; import { CodeEditor } from '@jupyterlab/codeeditor'; import { renderText } from '@jupyterlab/rendermime'; -import { HoverBox, LabIcon } from '@jupyterlab/ui-components'; +import { codeCheckIcon, HoverBox, LabIcon } from '@jupyterlab/ui-components'; import { IIterator, IterableOrArrayLike, toArray } from '@lumino/algorithm'; import { JSONExt, JSONObject } from '@lumino/coreutils'; import { IDisposable } from '@lumino/disposable'; @@ -324,6 +324,17 @@ export class Completer extends Widget { ul.appendChild(li); } node.appendChild(ul); + + // Add elixir-lsp logo & tip + let logoDiv = document.createElement('div'); + logoDiv.className = 'jp-Completer-footer'; + logoDiv.innerHTML = codeCheckIcon.svgstr; + let logoTip = document.createElement('span'); + logoTip.innerText = 'Powered by ElixirLsp'; + logoTip.className = 'jp-Completer-footer-tip'; + logoDiv.appendChild(logoTip); + node.appendChild(logoDiv); + return node; } diff --git a/packages/completer/style/base.css b/packages/completer/style/base.css index 2bac9a6..60a5945 100644 --- a/packages/completer/style/base.css +++ b/packages/completer/style/base.css @@ -15,6 +15,7 @@ box-shadow: var(--jp-elevation-z6); background: var(--jp-layout-color1); color: var(--jp-content-font-color1); + /*border: var(--jp-border-width) solid var(--jp-border-color1);*/ padding: 4px; display: flex; @@ -41,8 +42,20 @@ white-space: pre-wrap; } +.jp-Completer-footer { + position: absolute; + bottom: 4px; + padding-left: 12px; +} + +.jp-Completer-footer-tip { + color: #bcbcbc; + font-size: 10px; + margin-left: 4px; +} + .jp-Completer-list { - margin: 0; + margin: 0 0 24px; padding: 0; list-style-type: none; overflow-y: scroll; @@ -127,8 +140,10 @@ } .jp-Completer-item.jp-mod-active { - background: var(--jp-brand-color1); - color: white; + color: var(--jp-brand-color1); + font-weight: bold; + + /*color: white;*/ } .jp-Completer-item .jp-Completer-match mark { @@ -142,43 +157,43 @@ } .jp-Completer-type[data-color-index='1'] { - background: #1f77b4; + color: #1f77b4; } .jp-Completer-type[data-color-index='2'] { - background: #ff7f0e; + color: #ff7f0e; } .jp-Completer-type[data-color-index='3'] { - background: #2ca02c; + color: #2ca02c; } .jp-Completer-type[data-color-index='4'] { - background: #d62728; + color: #d62728; } .jp-Completer-type[data-color-index='5'] { - background: #9467bd; + color: #9467bd; } .jp-Completer-type[data-color-index='6'] { - background: #8c564b; + color: #8c564b; } .jp-Completer-type[data-color-index='7'] { - background: #e377c2; + color: #e377c2; } .jp-Completer-type[data-color-index='8'] { - background: #7f7f7f; + color: #7f7f7f; } .jp-Completer-type[data-color-index='9'] { - background: #bcbd22; + color: #bcbd22; } .jp-Completer-type[data-color-index='10'] { - background: #17becf; + color: #17becf; } .jp-Completer-loading-bar-container { diff --git a/packages/extensionmanager/style/base.css b/packages/extensionmanager/style/base.css index 27e2cbd..65ae9bd 100644 --- a/packages/extensionmanager/style/base.css +++ b/packages/extensionmanager/style/base.css @@ -37,7 +37,6 @@ .jp-extensionmanager-listview-wrapper { margin: 0; padding: 0; - padding-bottom: 8px; display: flex; flex-direction: column; flex: 0 0 auto; @@ -59,7 +58,6 @@ justify-content: space-between; flex: 0 0 auto; margin: 0; - padding-bottom: 8px; font-weight: 600; text-transform: uppercase; border-bottom: var(--jp-border-width) solid var(--jp-border-color2); @@ -321,14 +319,14 @@ .jp-extensionmanager-disclaimer-disable { background-color: var(--jp-brand-color1) !important; color: white !important; - border: 0; + border: 2px; background-image: none !important; } .jp-extensionmanager-disclaimer-enable { - background-color: var(--jp-error-color1) !important; + background-color: var(--jp-brand-color1) !important; color: white !important; - border: 0; + border: 2px; background-image: none !important; } diff --git a/packages/filebrowser/style/base.css b/packages/filebrowser/style/base.css index 469db34..c7c2773 100644 --- a/packages/filebrowser/style/base.css +++ b/packages/filebrowser/style/base.css @@ -70,6 +70,7 @@ flex: 0 0 auto; padding-left: 0; padding-right: 2px; + height: var(--jp-private-filebrowser-button-height); } .jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent { diff --git a/packages/logconsole-extension/style/base.css b/packages/logconsole-extension/style/base.css index 1faaab8..9c45c92 100644 --- a/packages/logconsole-extension/style/base.css +++ b/packages/logconsole-extension/style/base.css @@ -60,6 +60,8 @@ } /* Copied from the notebook cell type dropdown styling */ -.jp-LogConsole-toolbarLogLevelDropdown span { - top: 5px !important; +.jp-LogConsole-toolbarLogLevelDropdown span svg { + display: flex; + align-items: center; + padding: 8px; } diff --git a/packages/notebook-extension/schema/panel.json b/packages/notebook-extension/schema/panel.json index 722b5ee..e8cec4d 100644 --- a/packages/notebook-extension/schema/panel.json +++ b/packages/notebook-extension/schema/panel.json @@ -3,17 +3,10 @@ "description": "Notebook Panel settings.", "jupyter.lab.toolbars": { "Notebook": [ - { - "name": "insert", - "command": "notebook:insert-cell-below", - "icon": "ui-components:add", - "rank": 20 - }, + { "name": "executionProgress", "rank": 22 }, { "name": "spacer", "type": "spacer", "rank": 100 }, - { "name": "cellType", "rank": 200 }, - { "name": "kernelName", "rank": 1000 }, - { "name": "kernelStatus", "rank": 1001 }, - { "name": "executionProgress", "rank": 1002 } + { "name": "run", "command": "notebook:run-all-cells", "rank": 130 }, + { "name": "restart", "command": "kernelmenu:restart", "rank": 132 } ] }, "jupyter.lab.transform": true, diff --git a/packages/notebook/style/base.css b/packages/notebook/style/base.css index 900e129..4af0885 100644 --- a/packages/notebook/style/base.css +++ b/packages/notebook/style/base.css @@ -39,7 +39,7 @@ } .jp-Notebook { - padding: 10px 100px; + padding: 10px 8% 10px 5%; outline: none; overflow: auto; background: var(--jp-layout-color0); diff --git a/packages/notebook/style/executionindicator.css b/packages/notebook/style/executionindicator.css index 888a5e8..3804c43 100644 --- a/packages/notebook/style/executionindicator.css +++ b/packages/notebook/style/executionindicator.css @@ -15,39 +15,73 @@ .jp-Notebook-ExecutionIndicator { position: relative; - display: inline-block; - height: 100%; + + /*height: 100%;*/ + z-index: 9997; + width: 55vw; + display: flex; + border: var(--jp-border-width) solid #e0e0e0; + border-radius: 2px; + padding: 4px 16px; + align-items: center; +} + +.jp-Notebook-ExecutionIndicator[data-status='unknown'] { + position: relative; + + /*height: 100%;*/ z-index: 9997; + width: 55vw; + display: flex; + border: var(--jp-border-width) solid #e0e0e0; + border-radius: 2px; + padding: 4px 16px; + align-items: center; +} + +.jp-Notebook-ExecutionIndicator div { + display: flex; +} + +.jp-Notebook-ExecutionIndicator[data-status='unknown'] div .jp-icon3 { + fill: var(--jp-brand-color0); +} + +.jp-Notebook-ExecutionIndicator[data-status='idle'] svg circle { + stroke: var(--jp-success-color1); } .jp-Notebook-ExecutionIndicator-tooltip { - visibility: hidden; + /*visibility: hidden;*/ height: auto; width: fit-content; width: -moz-fit-content; - background-color: var(--jp-layout-color2); + + /*background-color: var(--jp-layout-color2);*/ color: var(--jp-ui-font-color1); text-align: justify; - border-radius: 6px; + + /*border-radius: 6px;*/ padding: 0 5px; position: fixed; - display: table; + + /*display: table;*/ } .jp-Notebook-ExecutionIndicator-tooltip.up { - transform: translateX(-50%) translateY(-100%) translateY(-32px); + /*transform: translateX(-50%) translateY(-100%) translateY(-32px);*/ } .jp-Notebook-ExecutionIndicator-tooltip.down { - transform: translateX(calc(-100% + 16px)) translateY(5px); + /*transform: translateX(calc(-100% + 16px)) translateY(5px);*/ } .jp-Notebook-ExecutionIndicator-tooltip.hidden { - display: none; + /*display: none;*/ } .jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip { - visibility: visible; + /*visibility: visible;*/ } .jp-Notebook-ExecutionIndicator span { @@ -56,6 +90,8 @@ color: var(--jp-ui-font-color1); line-height: 24px; display: block; + padding-left: 16px; + float: right; } .jp-Notebook-ExecutionIndicator-progress-bar { diff --git a/packages/notebook/style/toolbar.css b/packages/notebook/style/toolbar.css index f82eb6a..aa4321a 100644 --- a/packages/notebook/style/toolbar.css +++ b/packages/notebook/style/toolbar.css @@ -9,7 +9,7 @@ :root { --jp-notebook-toolbar-padding: 2px 5px 2px 2px; - --jp-private-toolbar-height: 44px; + --jp-private-toolbar-height: 54px; } /*----------------------------------------------------------------------------- diff --git a/packages/outputarea/style/base.css b/packages/outputarea/style/base.css index ec5ec54..4ff8c6f 100644 --- a/packages/outputarea/style/base.css +++ b/packages/outputarea/style/base.css @@ -23,7 +23,7 @@ .jp-OutputPrompt { display: table-cell; vertical-align: top; - color: var(--jp-cell-outprompt-font-color); + color: var(--jp-success-color1); font-family: var(--jp-cell-prompt-font-family); padding: 4px 0; margin-bottom: var(--jp-code-padding); diff --git a/packages/rendermime/style/base.css b/packages/rendermime/style/base.css index ee75f35..3eac99c 100644 --- a/packages/rendermime/style/base.css +++ b/packages/rendermime/style/base.css @@ -393,10 +393,11 @@ .jp-RenderedHTMLCommon pre, .jp-RenderedHTMLCommon code { border: 0; - background-color: var(--jp-layout-color0); + + /*background-color: var(--jp-layout-color0);*/ color: var(--jp-content-font-color1); font-family: var(--jp-code-font-family); - font-size: inherit; + font-size: 13px; line-height: var(--jp-code-line-height); padding: 0; white-space: pre-wrap; diff --git a/packages/statusbar-extension/src/index.ts b/packages/statusbar-extension/src/index.ts index 7e54577..d7731c7 100644 --- a/packages/statusbar-extension/src/index.ts +++ b/packages/statusbar-extension/src/index.ts @@ -35,7 +35,7 @@ const statusBar: JupyterFrontEndPlugin = { const trans = translator.load('jupyterlab'); const statusBar = new StatusBar(); statusBar.id = 'jp-main-statusbar'; - app.shell.add(statusBar, 'bottom'); + // app.shell.add(statusBar, 'bottom'); // If available, connect to the shell's layout modified signal. if (labShell) { diff --git a/packages/statusbar/src/style/statusbar.ts b/packages/statusbar/src/style/statusbar.ts index 1743061..f6ca052 100644 --- a/packages/statusbar/src/style/statusbar.ts +++ b/packages/statusbar/src/style/statusbar.ts @@ -14,7 +14,7 @@ const itemPadding = { const interactiveHover = { $nest: { '&:hover': { - backgroundColor: vars.hoverColor + // backgroundColor: vars.hoverColor } } }; diff --git a/packages/ui-components/style/icons/lsp/code-check.svg b/packages/ui-components/style/icons/lsp/code-check.svg index c469d86..6c2a514 100644 --- a/packages/ui-components/style/icons/lsp/code-check.svg +++ b/packages/ui-components/style/icons/lsp/code-check.svg @@ -1,5 +1,16 @@ - - + + Path 13 + + + + + + + + diff --git a/packages/ui-components/style/toolbar.css b/packages/ui-components/style/toolbar.css index a67c02a..c75d6d2 100644 --- a/packages/ui-components/style/toolbar.css +++ b/packages/ui-components/style/toolbar.css @@ -13,12 +13,14 @@ flex: 0 0 auto; display: flex; flex-direction: row; - border-bottom: var(--jp-border-width) solid #e0e0e0; + + /*border-bottom: var(--jp-border-width) solid #e0e0e0;*/ /*box-shadow: var(--jp-toolbar-box-shadow);*/ background: var(--jp-toolbar-background); min-height: var(--jp-toolbar-micro-height); - padding: 2px; + + /*padding: 2px;*/ z-index: 8; overflow-x: hidden; } @@ -46,6 +48,7 @@ font-size: var(--jp-ui-font-size1); line-height: var(--jp-private-toolbar-height); height: 100%; + align-items: center; } /* Toolbar buttons */ @@ -87,6 +90,33 @@ button.jp-ToolbarButtonComponent[title='Switch kernel'] { border: 1px solid #e0e0e0; } +button.jp-ToolbarButtonComponent[data-command='notebook:run-all-cells'] { + /*border: 1px solid var(--jp-brand-color1);*/ + background: var(--jp-brand-color1); + padding: 4px 16px; + height: 32px; +} + +button.jp-ToolbarButtonComponent[data-command='notebook:run-all-cells']:hover { + border: 1px solid var(--jp-brand-color1); +} + +button.jp-ToolbarButtonComponent[data-command='notebook:run-all-cells'] + .jp-ToolbarButtonComponent-label { + color: white; +} + +button.jp-ToolbarButtonComponent[data-command='notebook:run-all-cells']:hover + .jp-ToolbarButtonComponent-label { + color: var(--jp-ui-font-color0); +} + +button.jp-ToolbarButtonComponent[data-command='kernelmenu:restart'] { + border: 1px solid #e0e0e0; + height: 32px; + margin-left: 16px; +} + button.jp-ToolbarButtonComponent:disabled { opacity: 0.4; } @@ -114,6 +144,7 @@ button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label { #jp-main-dock-panel[data-mode='single-document'] .jp-MainAreaWidget > .jp-Toolbar { - border-bottom: 1px solid #e0e0e0; + /*border-bottom: 1px solid #e0e0e0;*/ box-shadow: none; + padding: 4px 5%; } diff --git a/pyproject.toml b/pyproject.toml index daf6dd8..0da641d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ dependencies = [ "ipykernel", "jinja2>=3.0.3", "jupyter_core", + "elixir-lsp>=1.5.1", "jupyter_server_ydoc>=0.1.9,<0.2.0", "elixirlab-server>=2.16.5", "elixir-shim>=0.2.2",