@datalayer/core 0.0.16 → 0.0.18

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.
Files changed (133) hide show
  1. package/README.md +9 -13
  2. package/lib/client/auth/AuthenticationManager.d.ts +95 -0
  3. package/lib/client/auth/AuthenticationManager.js +214 -0
  4. package/lib/client/auth/index.d.ts +8 -0
  5. package/lib/client/auth/index.js +17 -0
  6. package/lib/client/auth/storage.d.ts +154 -0
  7. package/lib/client/auth/storage.js +447 -0
  8. package/lib/client/auth/strategies.d.ts +54 -0
  9. package/lib/client/auth/strategies.js +238 -0
  10. package/lib/client/auth/types.d.ts +151 -0
  11. package/lib/{examples/index.js → client/auth/types.js} +4 -2
  12. package/lib/client/base.d.ts +3 -0
  13. package/lib/client/base.js +9 -0
  14. package/lib/client/index.d.ts +1 -0
  15. package/lib/client/index.js +2 -0
  16. package/lib/components/auth/Login.d.ts +40 -0
  17. package/lib/components/auth/Login.js +173 -0
  18. package/lib/components/auth/Login.stories.d.ts +54 -0
  19. package/lib/components/auth/Login.stories.js +104 -0
  20. package/lib/components/auth/LoginToken.d.ts +16 -0
  21. package/lib/components/auth/LoginToken.js +63 -0
  22. package/lib/components/auth/index.d.ts +5 -0
  23. package/lib/components/auth/index.js +16 -0
  24. package/lib/components/avatars/BoringAvatar.d.ts +6 -15
  25. package/lib/components/avatars/BoringAvatar.js +30 -34
  26. package/lib/components/avatars/BoringAvatar.stories.d.ts +7 -16
  27. package/lib/components/avatars/UserProfileAvatar.d.ts +1 -6
  28. package/lib/components/avatars/UserProfileAvatar.js +3 -8
  29. package/lib/components/buttons/DownloadCSVButton.d.ts +2 -7
  30. package/lib/components/buttons/DownloadCSVButton.js +1 -5
  31. package/lib/components/buttons/DownloadJsonButton.d.ts +3 -10
  32. package/lib/components/buttons/DownloadJsonButton.js +1 -7
  33. package/lib/components/buttons/UploadButton.d.ts +1 -4
  34. package/lib/components/buttons/UploadButton.js +3 -7
  35. package/lib/components/chat/ChatComponent.d.ts +4 -0
  36. package/lib/components/chat/ChatComponent.js +143 -0
  37. package/lib/components/chat/MessagePart.d.ts +11 -0
  38. package/lib/components/chat/MessagePart.js +23 -0
  39. package/lib/components/chat/display/DynamicToolPart.d.ts +6 -0
  40. package/lib/components/chat/display/DynamicToolPart.js +5 -0
  41. package/lib/components/chat/display/ReasoningPart.d.ts +6 -0
  42. package/lib/components/chat/display/ReasoningPart.js +58 -0
  43. package/lib/components/chat/display/TextPart.d.ts +9 -0
  44. package/lib/components/chat/display/TextPart.js +93 -0
  45. package/lib/components/chat/display/ToolPart.d.ts +6 -0
  46. package/lib/components/chat/display/ToolPart.js +148 -0
  47. package/lib/components/chat/display/index.d.ts +4 -0
  48. package/lib/components/chat/display/index.js +13 -0
  49. package/lib/components/chat/handler.d.ts +8 -0
  50. package/lib/components/chat/handler.js +43 -0
  51. package/lib/components/chat/index.d.ts +4 -0
  52. package/lib/components/chat/index.js +13 -0
  53. package/lib/components/display/CenteredSpinner.d.ts +1 -4
  54. package/lib/components/display/CenteredSpinner.js +1 -5
  55. package/lib/components/display/HorizontalCenter.d.ts +1 -4
  56. package/lib/components/display/HorizontalCenter.js +1 -5
  57. package/lib/components/flashes/FlashClosable.d.ts +1 -4
  58. package/lib/components/flashes/FlashClosable.js +1 -5
  59. package/lib/components/flashes/FlashDisclaimer.js +1 -1
  60. package/lib/components/index.d.ts +2 -1
  61. package/lib/components/index.js +2 -1
  62. package/lib/components/notebooks/JupyterNotebook.d.ts +1 -6
  63. package/lib/components/notebooks/JupyterNotebook.js +1 -5
  64. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +4 -0
  65. package/lib/components/runtimes/RuntimeSimplePicker.js +3 -3
  66. package/lib/components/snapshots/RuntimeSnapshotMenu.d.ts +1 -4
  67. package/lib/components/snapshots/RuntimeSnapshotMenu.js +1 -5
  68. package/lib/config/Configuration.js +1 -1
  69. package/lib/examples/CellExample.js +11 -47
  70. package/lib/examples/lexical-theme.css +436 -0
  71. package/lib/examples/notebooks/Matplotlib.ipynb.json +1 -1
  72. package/lib/examples/notebooks/NotebookExample1.ipynb.json +1 -1
  73. package/lib/hooks/useAIJupyterChat.d.ts +36 -0
  74. package/lib/hooks/useAIJupyterChat.js +53 -0
  75. package/lib/hooks/useBackdrop.d.ts +4 -4
  76. package/lib/hooks/useBackdrop.js +5 -9
  77. package/lib/hooks/useCache.d.ts +5 -1
  78. package/lib/hooks/useCache.js +126 -58
  79. package/lib/hooks/useMobile.d.ts +1 -0
  80. package/lib/hooks/useMobile.js +26 -0
  81. package/lib/hooks/useScreenshot.d.ts +3 -5
  82. package/lib/hooks/useScreenshot.js +1 -8
  83. package/lib/hooks/useUpload.js +29 -21
  84. package/lib/index.d.ts +1 -0
  85. package/lib/index.js +8 -4
  86. package/lib/models/Outbound.d.ts +2 -0
  87. package/lib/models/Outbound.js +3 -1
  88. package/lib/state/substates/CoreState.js +1 -1
  89. package/lib/state/substates/IAMState.js +15 -6
  90. package/lib/stateful/index.d.ts +0 -1
  91. package/lib/stateful/index.js +0 -1
  92. package/lib/stateful/runtimes/actions.d.ts +1 -1
  93. package/lib/stateful/runtimes/actions.js +1 -1
  94. package/lib/theme/DatalayerTheme.d.ts +2 -2
  95. package/lib/theme/DatalayerTheme.js +4 -4
  96. package/lib/theme/DatalayerThemeProvider.js +2 -2
  97. package/lib/tools/adapters/agui/AgUIToolAdapter.d.ts +75 -0
  98. package/lib/tools/adapters/agui/AgUIToolAdapter.js +244 -0
  99. package/lib/tools/adapters/agui/index.d.ts +10 -0
  100. package/lib/tools/adapters/agui/index.js +19 -0
  101. package/lib/tools/adapters/agui/lexicalHooks.d.ts +27 -0
  102. package/lib/tools/adapters/agui/lexicalHooks.js +64 -0
  103. package/lib/tools/adapters/agui/notebookHooks.d.ts +27 -0
  104. package/lib/tools/adapters/agui/notebookHooks.js +61 -0
  105. package/lib/tools/index.d.ts +6 -0
  106. package/lib/tools/index.js +18 -0
  107. package/lib/types.d.ts +5 -0
  108. package/lib/types.js +5 -0
  109. package/lib/utils/cli/index.d.ts +4 -0
  110. package/lib/utils/cli/index.js +13 -0
  111. package/lib/utils/cli/query.d.ts +6 -0
  112. package/lib/utils/cli/query.js +26 -0
  113. package/lib/utils/index.d.ts +1 -0
  114. package/lib/utils/index.js +1 -0
  115. package/package.json +62 -5
  116. package/style/base.css +4 -0
  117. package/lib/examples/DatalayerNotebookExample.d.ts +0 -16
  118. package/lib/examples/DatalayerNotebookExample.js +0 -75
  119. package/lib/examples/NativeNavigationExample.d.ts +0 -8
  120. package/lib/examples/NativeNavigationExample.js +0 -97
  121. package/lib/examples/NotebookMutationsKernel.d.ts +0 -2
  122. package/lib/examples/NotebookMutationsKernel.js +0 -115
  123. package/lib/examples/NotebookMutationsServiceManager.d.ts +0 -2
  124. package/lib/examples/NotebookMutationsServiceManager.js +0 -107
  125. package/lib/examples/ReactRouterExample.d.ts +0 -6
  126. package/lib/examples/ReactRouterExample.js +0 -175
  127. package/lib/examples/example-selector.d.ts +0 -22
  128. package/lib/examples/example-selector.js +0 -45
  129. package/lib/examples/index.d.ts +0 -2
  130. package/lib/examples/main.d.ts +0 -1
  131. package/lib/examples/main.js +0 -153
  132. package/lib/examples/notebooks/OutputIPyWidgetsExample.d.ts +0 -145
  133. package/lib/examples/notebooks/OutputIPyWidgetsExample.js +0 -153
@@ -0,0 +1,436 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+
6
+ /**
7
+ * Lexical Editor Theme - Integrated with JupyterReactTheme
8
+ *
9
+ * This theme uses CSS variables from:
10
+ * - JupyterLab theme (--jp-* variables)
11
+ * - Primer design system (--bgColor-*, --fgColor-*, --borderColor-*, etc.)
12
+ * - Automatically adapts to light/dark mode via JupyterReactTheme
13
+ *
14
+ * Based on Lexical's theming guide: https://lexical.dev/docs/getting-started/theming
15
+ */
16
+
17
+ /* ============================================
18
+ Text Formatting
19
+ ============================================ */
20
+
21
+ .lexical-theme-bold {
22
+ font-weight: bold;
23
+ }
24
+
25
+ .lexical-theme-italic {
26
+ font-style: italic;
27
+ }
28
+
29
+ .lexical-theme-underline {
30
+ text-decoration: underline;
31
+ }
32
+
33
+ .lexical-theme-strikethrough {
34
+ text-decoration: line-through;
35
+ }
36
+
37
+ .lexical-theme-code {
38
+ background-color: var(--jp-layout-color2, var(--bgColor-neutral-muted));
39
+ border-radius: 3px;
40
+ padding: 2px 4px;
41
+ font-family: var(
42
+ --jp-code-font-family,
43
+ 'Monaco',
44
+ 'Menlo',
45
+ 'Ubuntu Mono',
46
+ 'Consolas',
47
+ monospace
48
+ );
49
+ font-size: var(--jp-code-font-size, 0.9em);
50
+ color: var(--jp-mirror-editor-keyword-color, var(--fgColor-accent));
51
+ }
52
+
53
+ .lexical-theme-subscript {
54
+ font-size: 0.8em;
55
+ vertical-align: sub;
56
+ }
57
+
58
+ .lexical-theme-superscript {
59
+ font-size: 0.8em;
60
+ vertical-align: super;
61
+ }
62
+
63
+ /* ============================================
64
+ Block Elements
65
+ ============================================ */
66
+
67
+ .lexical-theme-paragraph {
68
+ margin: 0;
69
+ padding: 8px 0;
70
+ line-height: var(--jp-content-line-height, 1.6);
71
+ color: var(--jp-ui-font-color1, var(--fgColor-default));
72
+ }
73
+
74
+ .lexical-theme-heading-h1 {
75
+ font-size: var(--jp-content-heading-font-size1, 2em);
76
+ font-weight: 600;
77
+ margin: 0.67em 0;
78
+ line-height: var(--jp-content-heading-line-height, 1.3);
79
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
80
+ }
81
+
82
+ .lexical-theme-heading-h2 {
83
+ font-size: var(--jp-content-heading-font-size2, 1.5em);
84
+ font-weight: 600;
85
+ margin: 0.75em 0;
86
+ line-height: var(--jp-content-heading-line-height, 1.3);
87
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
88
+ }
89
+
90
+ .lexical-theme-heading-h3 {
91
+ font-size: var(--jp-content-heading-font-size3, 1.25em);
92
+ font-weight: 600;
93
+ margin: 0.83em 0;
94
+ line-height: var(--jp-content-heading-line-height, 1.3);
95
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
96
+ }
97
+
98
+ .lexical-theme-heading-h4 {
99
+ font-size: var(--jp-content-heading-font-size4, 1.1em);
100
+ font-weight: 600;
101
+ margin: 1em 0;
102
+ line-height: var(--jp-content-heading-line-height, 1.3);
103
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
104
+ }
105
+
106
+ .lexical-theme-heading-h5 {
107
+ font-size: var(--jp-content-heading-font-size5, 1em);
108
+ font-weight: 600;
109
+ margin: 1.33em 0;
110
+ line-height: var(--jp-content-heading-line-height, 1.3);
111
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
112
+ }
113
+
114
+ .lexical-theme-heading-h6 {
115
+ font-size: 0.875em;
116
+ font-weight: 600;
117
+ margin: 1.67em 0;
118
+ line-height: var(--jp-content-heading-line-height, 1.3);
119
+ color: var(--jp-ui-font-color1, var(--fgColor-muted));
120
+ }
121
+
122
+ .lexical-theme-quote {
123
+ margin: 16px 0;
124
+ padding: 8px 16px;
125
+ border-left: 4px solid
126
+ var(--jp-border-color2, var(--borderColor-accent-emphasis));
127
+ background-color: var(--jp-layout-color2, var(--bgColor-neutral-muted));
128
+ font-style: italic;
129
+ color: var(--jp-ui-font-color2, var(--fgColor-muted));
130
+ }
131
+
132
+ /* ============================================
133
+ Lists
134
+ ============================================ */
135
+
136
+ .lexical-theme-list-ul {
137
+ margin: 8px 0;
138
+ padding-left: 24px;
139
+ list-style-type: disc;
140
+ color: var(--jp-ui-font-color1, var(--fgColor-default));
141
+ }
142
+
143
+ .lexical-theme-list-ol {
144
+ margin: 8px 0;
145
+ padding-left: 24px;
146
+ list-style-type: decimal;
147
+ color: var(--jp-ui-font-color1, var(--fgColor-default));
148
+ }
149
+
150
+ .lexical-theme-list-listitem {
151
+ margin: 4px 0;
152
+ line-height: var(--jp-content-line-height, 1.6);
153
+ }
154
+
155
+ .lexical-theme-list-nested-listitem {
156
+ list-style-type: none;
157
+ }
158
+
159
+ .lexical-theme-list-checklist {
160
+ padding-left: 4px;
161
+ list-style-type: none;
162
+ }
163
+
164
+ .lexical-theme-list-listitemChecked {
165
+ text-decoration: line-through;
166
+ opacity: 0.7;
167
+ }
168
+
169
+ .lexical-theme-list-listitemUnchecked {
170
+ text-decoration: none;
171
+ }
172
+
173
+ /* ============================================
174
+ Code Blocks
175
+ ============================================ */
176
+
177
+ /* Code blocks styled like Jupyter cells */
178
+ code.lexical-theme-code-block,
179
+ code.lexical-theme-code-block[spellcheck],
180
+ code.lexical-theme-code-block[data-highlight-language] {
181
+ background-color: #f7f7f7 !important;
182
+ background: #f7f7f7 !important;
183
+ border: 1px solid #d3d3d3 !important;
184
+ border-radius: 6px !important;
185
+ border-left: 3px solid #0366d6 !important;
186
+ padding: 8px 16px 8px 70px !important;
187
+ margin: 16px 0 0 0 !important;
188
+ overflow-x: auto !important;
189
+ font-family: var(
190
+ --jp-code-font-family,
191
+ 'Monaco',
192
+ 'Menlo',
193
+ 'Ubuntu Mono',
194
+ monospace
195
+ ) !important;
196
+ font-size: 13px !important;
197
+ line-height: 1.6 !important;
198
+ color: #24292e !important;
199
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
200
+ display: block !important;
201
+ min-height: 50px !important;
202
+ position: relative !important;
203
+ }
204
+
205
+ /* Display line numbers from data-gutter attribute */
206
+ code.lexical-theme-code-block::before {
207
+ content: attr(data-gutter);
208
+ position: absolute !important;
209
+ left: 0 !important;
210
+ top: 0 !important;
211
+ bottom: 0 !important;
212
+ width: 50px !important;
213
+ padding: 8px 8px 8px 0 !important;
214
+ color: #999 !important;
215
+ text-align: right !important;
216
+ white-space: pre !important;
217
+ font-family: monospace !important;
218
+ font-size: 13px !important;
219
+ line-height: 1.6 !important;
220
+ background-color: #f7f7f7 !important;
221
+ border-right: 1px solid #e1e4e8 !important;
222
+ }
223
+
224
+ /* Force transparent background on all child elements */
225
+ code.lexical-theme-code-block *,
226
+ code.lexical-theme-code-block span,
227
+ code.lexical-theme-code-block span[class*='lexical-theme-code-token'],
228
+ code.lexical-theme-code-block span[data-lexical-text],
229
+ code.lexical-theme-code-block br {
230
+ background-color: transparent !important;
231
+ background: transparent !important;
232
+ }
233
+
234
+ code.lexical-theme-code-block:hover {
235
+ border-color: #66afe9 !important;
236
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15) !important;
237
+ }
238
+
239
+ /* Code syntax highlighting tokens using JupyterLab CodeMirror colors */
240
+ .lexical-theme-code-tokenComment {
241
+ color: var(--jp-mirror-editor-comment-color, var(--fgColor-muted));
242
+ }
243
+
244
+ .lexical-theme-code-tokenPunctuation {
245
+ color: var(--jp-content-font-color1, var(--fgColor-default));
246
+ }
247
+
248
+ .lexical-theme-code-tokenProperty {
249
+ color: var(--jp-mirror-editor-attribute-color, var(--fgColor-accent));
250
+ }
251
+
252
+ .lexical-theme-code-tokenSelector {
253
+ color: var(--jp-mirror-editor-builtin-color, var(--fgColor-done));
254
+ }
255
+
256
+ .lexical-theme-code-tokenOperator {
257
+ color: var(--jp-mirror-editor-operator-color, var(--fgColor-danger));
258
+ }
259
+
260
+ .lexical-theme-code-tokenAttr {
261
+ color: var(--jp-mirror-editor-attribute-color, var(--fgColor-accent));
262
+ }
263
+
264
+ .lexical-theme-code-tokenVariable {
265
+ color: var(--jp-mirror-editor-variable-color, var(--fgColor-attention));
266
+ }
267
+
268
+ .lexical-theme-code-tokenFunction {
269
+ color: var(--jp-mirror-editor-def-color, var(--fgColor-done));
270
+ }
271
+
272
+ .lexical-theme-code-tokenKeyword {
273
+ color: var(--jp-mirror-editor-keyword-color, var(--fgColor-danger));
274
+ }
275
+
276
+ .lexical-theme-code-tokenString {
277
+ color: var(--jp-mirror-editor-string-color, var(--fgColor-success));
278
+ }
279
+
280
+ .lexical-theme-code-tokenNumber {
281
+ color: var(--jp-mirror-editor-number-color, var(--fgColor-accent));
282
+ }
283
+
284
+ .lexical-theme-code-tokenBoolean {
285
+ color: var(--jp-mirror-editor-number-color, var(--fgColor-accent));
286
+ }
287
+
288
+ .lexical-theme-code-tokenRegex {
289
+ color: var(--jp-mirror-editor-string-color, var(--fgColor-success));
290
+ }
291
+
292
+ /* ============================================
293
+ Links
294
+ ============================================ */
295
+
296
+ .lexical-theme-link {
297
+ color: var(--jp-content-link-color, var(--fgColor-accent));
298
+ text-decoration: none;
299
+ cursor: pointer;
300
+ }
301
+
302
+ .lexical-theme-link:hover {
303
+ text-decoration: underline;
304
+ color: var(--jp-content-link-color, var(--fgColor-accent));
305
+ }
306
+
307
+ .lexical-theme-autolink {
308
+ color: var(--jp-content-link-color, var(--fgColor-accent));
309
+ text-decoration: none;
310
+ }
311
+
312
+ .lexical-theme-autolink:hover {
313
+ text-decoration: underline;
314
+ }
315
+
316
+ /* ============================================
317
+ Tables
318
+ ============================================ */
319
+
320
+ .lexical-theme-table {
321
+ border-collapse: collapse;
322
+ border: 1px solid var(--jp-border-color2, var(--borderColor-default));
323
+ margin: 16px 0;
324
+ width: 100%;
325
+ }
326
+
327
+ .lexical-theme-tableCell {
328
+ border: 1px solid var(--jp-border-color2, var(--borderColor-default));
329
+ padding: 8px 12px;
330
+ min-width: 75px;
331
+ vertical-align: top;
332
+ color: var(--jp-ui-font-color1, var(--fgColor-default));
333
+ }
334
+
335
+ .lexical-theme-tableCellHeader {
336
+ background-color: var(--jp-layout-color2, var(--bgColor-neutral-muted));
337
+ border: 1px solid var(--jp-border-color2, var(--borderColor-default));
338
+ padding: 8px 12px;
339
+ font-weight: 600;
340
+ text-align: left;
341
+ color: var(--jp-ui-font-color0, var(--fgColor-default));
342
+ }
343
+
344
+ /* ============================================
345
+ Special Nodes
346
+ ============================================ */
347
+
348
+ .lexical-theme-hashtag {
349
+ color: var(--jp-brand-color1, var(--fgColor-accent));
350
+ background-color: var(--jp-layout-color2, var(--bgColor-accent-muted));
351
+ border-radius: 3px;
352
+ padding: 2px 4px;
353
+ cursor: pointer;
354
+ }
355
+
356
+ .lexical-theme-image {
357
+ max-width: 100%;
358
+ height: auto;
359
+ margin: 16px 0;
360
+ border-radius: var(--jp-border-radius, 6px);
361
+ }
362
+
363
+ .lexical-theme-hr {
364
+ border: none;
365
+ border-top: 2px solid var(--jp-border-color2, var(--borderColor-default));
366
+ margin: 24px 0;
367
+ }
368
+
369
+ .lexical-theme-mark {
370
+ background-color: var(--jp-warn-color3, rgba(255, 212, 0, 0.4));
371
+ padding: 2px 0;
372
+ }
373
+
374
+ /* ============================================
375
+ Jupyter-specific Nodes
376
+ ============================================ */
377
+
378
+ /* Jupyter cells are styled by the jupyter-lexical components themselves.
379
+ Do not add theme CSS here as it conflicts with the component's internal styling.
380
+ The JupyterCellNode, JupyterInputNode, and JupyterOutputNode components
381
+ handle their own styling and theming. */
382
+
383
+ /* ============================================
384
+ Editor Container Styles
385
+ ============================================ */
386
+
387
+ .lexical-editor-content {
388
+ min-height: 450px;
389
+ outline: none;
390
+ padding: 16px;
391
+ font-family: var(
392
+ --jp-ui-font-family,
393
+ -apple-system,
394
+ BlinkMacSystemFont,
395
+ 'Segoe UI',
396
+ Helvetica,
397
+ Arial,
398
+ sans-serif
399
+ );
400
+ font-size: var(--jp-ui-font-size1, 16px);
401
+ line-height: var(--jp-content-line-height, 1.6);
402
+ color: var(--jp-ui-font-color1, var(--fgColor-default));
403
+ background-color: var(--jp-layout-color1, var(--bgColor-default));
404
+ }
405
+
406
+ .lexical-editor-content:focus {
407
+ outline: none;
408
+ }
409
+
410
+ .lexical-editor-inner {
411
+ position: relative;
412
+ background-color: var(--jp-layout-color1, var(--bgColor-default));
413
+ }
414
+
415
+ /* ============================================
416
+ Placeholder
417
+ ============================================ */
418
+
419
+ .lexical-theme-placeholder {
420
+ color: var(--jp-ui-font-color3, var(--fgColor-muted));
421
+ overflow: hidden;
422
+ position: absolute;
423
+ text-overflow: ellipsis;
424
+ top: 16px;
425
+ left: 16px;
426
+ font-size: var(--jp-ui-font-size1, 16px);
427
+ user-select: none;
428
+ pointer-events: none;
429
+ }
430
+
431
+ /* ============================================
432
+ Dark Mode Adjustments
433
+ ============================================ */
434
+
435
+ /* Dark mode is handled automatically via CSS variables from JupyterReactTheme */
436
+ /* The --jp-* and Primer variables change based on colormode */