jupyterlab_mechanicum_dark_theme 1.0.1

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.
@@ -0,0 +1,504 @@
1
+ /* -----------------------------------------------------------------------------
2
+ | Copyright (c) Konrad Jelen.
3
+ | Distributed under the terms of the Modified BSD License.
4
+ |---------------------------------------------------------------------------- */
5
+
6
+ /*
7
+ * The ornament of the Mechanicum theme: cloth, gold thread, iron and seals.
8
+ *
9
+ * Two rules keep the theme usable:
10
+ * - text areas (editor, notebook, terminal, file list rows) stay flat and dark;
11
+ * ornament sits on the frame around them
12
+ * - nothing moves, and no large area is brighter than the crimson of the cloth
13
+ *
14
+ * The theme sets no font family: text keeps the font of JupyterLab.
15
+ */
16
+
17
+ :root {
18
+ --mech-gold: #cba552;
19
+ --mech-gold-bright: #e3c878;
20
+ --mech-gold-dark: #8a6a2c;
21
+ --mech-crimson: #7d241e;
22
+ --mech-crimson-dark: #4f1512;
23
+ --mech-iron: #14100f;
24
+ }
25
+
26
+ /* only the background: selected code keeps its colours */
27
+ ::selection {
28
+ background: var(--mech-crimson);
29
+ }
30
+
31
+ /* ---------------------------------------------------------------------------
32
+ * Cloth: the frame of the application is crimson cloth
33
+ * ------------------------------------------------------------------------- */
34
+
35
+ #jp-top-panel,
36
+ .jp-Toolbar,
37
+ .lm-Menu,
38
+ .jp-Dialog-content,
39
+ #jp-left-stack > .lm-Widget,
40
+ #jp-right-stack > .lm-Widget,
41
+ .lm-CommandPalette,
42
+ .jp-LauncherCard {
43
+ background-image: url('./images/cloth.jpg');
44
+ background-size: 128px 128px;
45
+ }
46
+
47
+ /* ---------------------------------------------------------------------------
48
+ * Top bar: the emblem, the menu in capitals, and a frieze of mottos
49
+ * ------------------------------------------------------------------------- */
50
+
51
+ /* the frieze shows in the free middle of the bar: the menu at the left and the items at the right stay on plain cloth */
52
+ #jp-top-panel {
53
+ background-image:
54
+ linear-gradient(
55
+ 90deg,
56
+ var(--jp-layout-color1) 0,
57
+ var(--jp-layout-color1) 520px,
58
+ rgba(36, 22, 21, 0) 680px
59
+ ),
60
+ linear-gradient(
61
+ 270deg,
62
+ var(--jp-layout-color1) 0,
63
+ var(--jp-layout-color1) 270px,
64
+ rgba(36, 22, 21, 0) 400px
65
+ ),
66
+ url('./images/frieze.svg'), url('./images/cloth.jpg');
67
+ background-position:
68
+ 0 0,
69
+ 0 0,
70
+ right center,
71
+ 0 0;
72
+ background-repeat: no-repeat, no-repeat, repeat-x, repeat;
73
+ background-size:
74
+ auto,
75
+ auto,
76
+ auto 100%,
77
+ 128px 128px;
78
+ border-bottom: 1px solid var(--mech-gold-dark);
79
+ }
80
+
81
+ #jp-menu-panel,
82
+ #jp-top-bar,
83
+ #jp-top-panel .lm-MenuBar {
84
+ background: transparent;
85
+ }
86
+
87
+ /* stylelint-disable selector-id-pattern */
88
+
89
+ /* contain: the whole emblem shows, whatever height the bar has */
90
+ #jp-MainLogo {
91
+ background: url('./images/emblem.png') center / contain no-repeat;
92
+ }
93
+
94
+ #jp-MainLogo > * {
95
+ visibility: hidden;
96
+ }
97
+ /* stylelint-enable selector-id-pattern */
98
+
99
+ .lm-MenuBar-item {
100
+ font-size: 11.5px;
101
+ letter-spacing: 0.09em;
102
+ text-transform: uppercase;
103
+ }
104
+
105
+ .lm-MenuBar-item.lm-mod-active,
106
+ .lm-MenuBar.lm-mod-active .lm-MenuBar-item.lm-mod-active {
107
+ background: var(--mech-crimson);
108
+ color: #f6ecce;
109
+ }
110
+
111
+ /* menus: a cloth with a stitched hem */
112
+ .lm-Menu {
113
+ border: 1px solid var(--mech-gold-dark);
114
+ outline: 1px dashed rgba(203, 165, 82, 0.45);
115
+ outline-offset: -4px;
116
+ padding: 5px 4px;
117
+ }
118
+
119
+ .lm-Menu-item.lm-mod-active {
120
+ background: var(--mech-crimson);
121
+ color: #f6ecce;
122
+ }
123
+
124
+ .lm-Menu-item[data-type='separator'] > div::after {
125
+ border-top: 1px dashed var(--mech-gold-dark);
126
+ }
127
+
128
+ /* ---------------------------------------------------------------------------
129
+ * Main area tabs: crimson banners on plain iron
130
+ * ------------------------------------------------------------------------- */
131
+
132
+ .lm-DockPanel-tabBar {
133
+ background: var(--mech-iron);
134
+ }
135
+
136
+ .lm-DockPanel-tabBar .lm-TabBar-tab {
137
+ background: #1d1312;
138
+ color: var(--jp-ui-font-color2);
139
+ letter-spacing: 0.03em;
140
+ }
141
+
142
+ .lm-DockPanel-tabBar .lm-TabBar-tab:hover:not(.lm-mod-current) {
143
+ background: var(--mech-crimson-dark);
144
+ color: var(--jp-ui-font-color0);
145
+ }
146
+
147
+ .lm-DockPanel-tabBar .lm-TabBar-tab.lm-mod-current {
148
+ background: linear-gradient(#872a22, #5c1a16);
149
+ border-color: var(--mech-gold-dark);
150
+ box-shadow: inset 0 0 0 1px rgba(227, 200, 120, 0.28);
151
+ color: #f6ecce;
152
+ }
153
+
154
+ /* stylelint-disable no-descending-specificity */
155
+
156
+ /* ---------------------------------------------------------------------------
157
+ * Activity bars: plain iron
158
+ * ------------------------------------------------------------------------- */
159
+
160
+ .jp-SideBar.lm-TabBar {
161
+ background: var(--mech-iron);
162
+ }
163
+
164
+ .jp-SideBar .lm-TabBar-tab {
165
+ border-bottom: 1px solid rgba(138, 106, 44, 0.35);
166
+ }
167
+
168
+ .jp-SideBar .lm-TabBar-tab:hover:not(.lm-mod-current) {
169
+ background: rgba(79, 21, 18, 0.9);
170
+ }
171
+
172
+ .jp-SideBar .lm-TabBar-tab.lm-mod-current {
173
+ background: var(--mech-crimson);
174
+ box-shadow: inset 0 0 0 1px rgba(227, 200, 120, 0.5);
175
+ }
176
+
177
+ /* stylelint-enable no-descending-specificity */
178
+
179
+ /* ---------------------------------------------------------------------------
180
+ * Side panels: titles in gold capitals over an embroidered band
181
+ * ------------------------------------------------------------------------- */
182
+
183
+ .jp-AccordionPanel-title,
184
+ .jp-SidePanel-header,
185
+ .jp-stack-panel-header,
186
+ .jp-extensionmanager-headerText {
187
+ letter-spacing: 0.1em;
188
+ color: var(--mech-gold);
189
+ }
190
+
191
+ .jp-AccordionPanel-title {
192
+ background:
193
+ linear-gradient(
194
+ 90deg,
195
+ var(--mech-crimson-dark) 0,
196
+ var(--mech-crimson-dark) 45%,
197
+ rgba(79, 21, 18, 0.2) 100%
198
+ ),
199
+ url('./images/band.svg') right center / 20px 12px repeat-x,
200
+ var(--mech-crimson-dark);
201
+ border-top: 1px solid var(--mech-gold-dark);
202
+ border-bottom: 1px solid var(--mech-gold-dark);
203
+ }
204
+
205
+ .jp-DirListing-header {
206
+ background: var(--mech-crimson-dark);
207
+ border-bottom: 1px solid var(--mech-gold-dark);
208
+ letter-spacing: 0.08em;
209
+ text-transform: uppercase;
210
+ font-size: 11px;
211
+ color: var(--mech-gold);
212
+ }
213
+
214
+ /* selected rows: crimson with a gold thread, in place of a bright gold block */
215
+ .jp-DirListing-item.jp-mod-selected,
216
+ .jp-DirListing-item.jp-mod-selected.jp-mod-running {
217
+ background: var(--mech-crimson);
218
+ box-shadow: inset 3px 0 0 var(--mech-gold);
219
+ color: #f6ecce;
220
+ }
221
+
222
+ .jp-DirListing-item.jp-mod-selected .jp-DirListing-itemModified,
223
+ .jp-DirListing-item.jp-mod-selected .jp-DirListing-itemFileSize {
224
+ color: #e6d9b8;
225
+ }
226
+
227
+ .lm-CommandPalette-item.lm-mod-active,
228
+ .jp-Completer-item.jp-mod-active,
229
+ .jp-PluginList li.jp-mod-selected,
230
+ .jp-TableOfContents-content .jp-tocItem-active,
231
+ .jp-RunningSessions-item.jp-mod-selected {
232
+ background: var(--mech-crimson);
233
+ color: #f6ecce;
234
+ }
235
+
236
+ .lm-CommandPalette-header {
237
+ letter-spacing: 0.1em;
238
+ color: var(--mech-gold);
239
+ border-bottom: 1px dashed var(--mech-gold-dark);
240
+ }
241
+
242
+ .jp-BreadCrumbs {
243
+ letter-spacing: 0.03em;
244
+ }
245
+
246
+ /* ---------------------------------------------------------------------------
247
+ * Launcher: a steel strip with the Cog Mechanicum above the cards, cards as
248
+ * stitched patches. The three images of the strip come from tools/strip.py
249
+ * ------------------------------------------------------------------------- */
250
+
251
+ .jp-Launcher-content::before {
252
+ content: '';
253
+ display: block;
254
+ height: 68px;
255
+ margin: 6px 0 10px;
256
+ background:
257
+ url('./images/strip-centre.jpg') center / auto 100% no-repeat,
258
+ url('./images/strip-cap.jpg') left center / auto 100% no-repeat,
259
+ url('./images/strip-cap.jpg') right center / auto 100% no-repeat,
260
+ url('./images/strip-plate.jpg') left center / auto 100% repeat-x;
261
+ }
262
+
263
+ .jp-Launcher-cwd h3,
264
+ .jp-Launcher-sectionTitle {
265
+ letter-spacing: 0.12em;
266
+ text-transform: uppercase;
267
+ color: var(--mech-gold);
268
+ }
269
+
270
+ .jp-Launcher-sectionHeader {
271
+ background: url('./images/band.svg') left bottom / 20px 12px repeat-x;
272
+ border-bottom: 0;
273
+ padding-bottom: 14px;
274
+ }
275
+
276
+ .jp-LauncherCard {
277
+ position: relative;
278
+ background-color: var(--mech-crimson-dark);
279
+ border: 1px solid var(--mech-gold-dark);
280
+ border-radius: 3px;
281
+ outline: 1px dashed rgba(203, 165, 82, 0.5);
282
+ outline-offset: -5px;
283
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.6);
284
+ }
285
+
286
+ .jp-LauncherCard::before,
287
+ .jp-LauncherCard::after {
288
+ content: '';
289
+ position: absolute;
290
+ top: 8px;
291
+ width: 11px;
292
+ height: 11px;
293
+ background: url('./images/cog.svg') center / contain no-repeat;
294
+ opacity: 0.75;
295
+ }
296
+
297
+ .jp-LauncherCard::before {
298
+ left: 8px;
299
+ }
300
+
301
+ .jp-LauncherCard::after {
302
+ right: 8px;
303
+ }
304
+
305
+ .jp-LauncherCard:hover {
306
+ background-color: var(--mech-crimson);
307
+ outline-color: var(--mech-gold-bright);
308
+ }
309
+
310
+ .jp-LauncherCard-label {
311
+ letter-spacing: 0.04em;
312
+ color: var(--jp-ui-font-color0);
313
+ }
314
+
315
+ /* the main area while no tab is open: a hanging of the cult */
316
+ #jp-main-dock-panel {
317
+ background:
318
+ url('./images/hanging.png') center / auto min(52%, 380px) no-repeat,
319
+ var(--jp-layout-color0);
320
+ }
321
+
322
+ /* ---------------------------------------------------------------------------
323
+ * Notebook and rendered text: an illuminated manuscript
324
+ * ------------------------------------------------------------------------- */
325
+
326
+ .jp-RenderedHTMLCommon h1,
327
+ .jp-RenderedHTMLCommon h2,
328
+ .jp-RenderedHTMLCommon h3 {
329
+ letter-spacing: 0.04em;
330
+ }
331
+
332
+ .jp-RenderedHTMLCommon h1 {
333
+ color: var(--mech-gold-bright);
334
+ font-variant: small-caps;
335
+ padding-bottom: 16px;
336
+ background: url('./images/band.svg') left bottom / 20px 12px repeat-x;
337
+ }
338
+
339
+ .jp-RenderedHTMLCommon h2 {
340
+ color: var(--mech-gold);
341
+ border-bottom: 1px dashed var(--mech-gold-dark);
342
+ padding-bottom: 4px;
343
+ }
344
+
345
+ .jp-RenderedHTMLCommon h3 {
346
+ color: #e2a58f;
347
+ }
348
+
349
+ .jp-RenderedHTMLCommon hr {
350
+ height: 12px;
351
+ border: 0;
352
+ background: url('./images/band.svg') center / 20px 12px repeat-x;
353
+ }
354
+
355
+ .jp-RenderedHTMLCommon blockquote {
356
+ margin-left: 0;
357
+ padding: 6px 14px;
358
+ border-left: 3px solid var(--mech-crimson);
359
+ background: rgba(214, 198, 159, 0.06);
360
+ color: var(--jp-content-font-color1);
361
+ font-style: italic;
362
+ }
363
+
364
+ .jp-RenderedHTMLCommon :not(pre) > code {
365
+ background: var(--jp-layout-color1);
366
+ border: 1px solid var(--jp-layout-color2);
367
+ border-radius: 2px;
368
+ color: var(--mech-gold-bright);
369
+ padding: 0 3px;
370
+ }
371
+
372
+ .jp-RenderedHTMLCommon thead {
373
+ background: var(--mech-crimson-dark);
374
+ border-bottom: 1px solid var(--mech-gold-dark);
375
+ color: var(--mech-gold-bright);
376
+ letter-spacing: 0.04em;
377
+ }
378
+
379
+ .jp-RenderedHTMLCommon strong {
380
+ color: var(--jp-content-font-color0);
381
+ }
382
+
383
+ .jp-RenderedHTMLCommon h1::first-letter {
384
+ color: #dc7560;
385
+ font-size: 1.3em;
386
+ }
387
+
388
+ .jp-RenderedHTMLCommon ul > li::marker {
389
+ content: '\2699 ';
390
+ color: var(--mech-gold-dark);
391
+ }
392
+
393
+ .jp-InputPrompt,
394
+ .jp-OutputPrompt {
395
+ font-size: 12px;
396
+ }
397
+
398
+ /* the active cell: a crimson ribbon with a gold stitch, and a seal beside its prompt */
399
+ .jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
400
+ background:
401
+ linear-gradient(var(--mech-gold) 55%, rgba(203, 165, 82, 0) 0) center top /
402
+ 2px 9px repeat-y,
403
+ var(--mech-crimson);
404
+ }
405
+
406
+ .jp-Notebook .jp-Cell.jp-mod-active .jp-InputArea-prompt {
407
+ background: url('./images/seal.svg') 3px 4px / 12px 16px no-repeat;
408
+ }
409
+
410
+ /* ---------------------------------------------------------------------------
411
+ * Dialogs: a stitched cloth with a purity seal
412
+ * ------------------------------------------------------------------------- */
413
+
414
+ .jp-Dialog-content {
415
+ position: relative;
416
+ border: 1px solid var(--mech-gold-dark);
417
+ outline: 1px dashed rgba(203, 165, 82, 0.5);
418
+ outline-offset: -6px;
419
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.85);
420
+ }
421
+
422
+ .jp-Dialog-content::after {
423
+ content: '';
424
+ position: absolute;
425
+ top: 10px;
426
+ right: 14px;
427
+ width: 24px;
428
+ height: 33px;
429
+ background: url('./images/seal.svg') center / contain no-repeat;
430
+ pointer-events: none;
431
+ }
432
+
433
+ .jp-Dialog-header {
434
+ letter-spacing: 0.1em;
435
+ text-transform: uppercase;
436
+ color: var(--mech-gold-bright);
437
+ padding-right: 34px;
438
+ }
439
+
440
+ button.jp-Dialog-button.jp-mod-styled {
441
+ border-radius: 2px;
442
+ letter-spacing: 0.08em;
443
+ text-transform: uppercase;
444
+ }
445
+
446
+ button.jp-Dialog-button.jp-mod-accept {
447
+ border: 1px solid var(--mech-gold);
448
+ color: #f6ecce;
449
+ }
450
+
451
+ button.jp-Dialog-button.jp-mod-reject {
452
+ border: 1px solid var(--jp-layout-color4);
453
+ color: var(--jp-ui-font-color0);
454
+ }
455
+
456
+ button.jp-Dialog-button.jp-mod-warn {
457
+ border: 1px solid var(--jp-error-color2);
458
+ color: #f6ecce;
459
+ }
460
+
461
+ /* ---------------------------------------------------------------------------
462
+ * Status bar: iron, with the binary cant running through it
463
+ * ------------------------------------------------------------------------- */
464
+
465
+ #jp-main-statusbar,
466
+ .jp-StatusBar-Widget {
467
+ background:
468
+ linear-gradient(
469
+ 90deg,
470
+ var(--mech-iron) 0,
471
+ var(--mech-iron) 44%,
472
+ rgba(20, 16, 15, 0) 50%,
473
+ rgba(20, 16, 15, 0) 66%,
474
+ var(--mech-iron) 72%
475
+ ),
476
+ url('./images/binary.svg') center / auto 100% repeat-x,
477
+ var(--mech-iron);
478
+ border-top: 1px solid var(--mech-gold-dark);
479
+ }
480
+
481
+ /* ---------------------------------------------------------------------------
482
+ * Small parts
483
+ * ------------------------------------------------------------------------- */
484
+
485
+ .jp-Toolbar {
486
+ border-bottom: 1px solid rgba(138, 106, 44, 0.55);
487
+ }
488
+
489
+ .jp-Tooltip,
490
+ .jp-Completer,
491
+ .jp-HoverBox {
492
+ border: 1px solid var(--mech-gold-dark);
493
+ }
494
+
495
+ /* stylelint-disable selector-class-pattern */
496
+ .jp-Notification-Toast,
497
+ .Toastify__toast {
498
+ border: 1px solid var(--mech-gold-dark);
499
+ outline: 1px dashed rgba(203, 165, 82, 0.4);
500
+ outline-offset: -4px;
501
+ }
502
+ /* stylelint-enable selector-class-pattern */
503
+
504
+ /* EOF */