more-compute 0.1.3__py3-none-any.whl → 0.2.0__py3-none-any.whl

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 (55) hide show
  1. frontend/app/globals.css +322 -77
  2. frontend/app/layout.tsx +98 -82
  3. frontend/components/Cell.tsx +234 -95
  4. frontend/components/Notebook.tsx +430 -199
  5. frontend/components/{AddCellButton.tsx → cell/AddCellButton.tsx} +0 -2
  6. frontend/components/cell/MonacoCell.tsx +726 -0
  7. frontend/components/layout/ConnectionBanner.tsx +41 -0
  8. frontend/components/{Sidebar.tsx → layout/Sidebar.tsx} +16 -11
  9. frontend/components/modals/ConfirmModal.tsx +154 -0
  10. frontend/components/modals/SuccessModal.tsx +140 -0
  11. frontend/components/output/MarkdownRenderer.tsx +116 -0
  12. frontend/components/popups/ComputePopup.tsx +674 -365
  13. frontend/components/popups/MetricsPopup.tsx +11 -7
  14. frontend/components/popups/SettingsPopup.tsx +11 -13
  15. frontend/contexts/PodWebSocketContext.tsx +247 -0
  16. frontend/eslint.config.mjs +11 -0
  17. frontend/lib/monaco-themes.ts +160 -0
  18. frontend/lib/settings.ts +128 -26
  19. frontend/lib/themes.json +9973 -0
  20. frontend/lib/websocket-native.ts +19 -8
  21. frontend/lib/websocket.ts +59 -11
  22. frontend/next.config.ts +8 -0
  23. frontend/package-lock.json +1705 -3
  24. frontend/package.json +8 -1
  25. frontend/styling_README.md +18 -0
  26. kernel_run.py +161 -43
  27. more_compute-0.2.0.dist-info/METADATA +126 -0
  28. more_compute-0.2.0.dist-info/RECORD +100 -0
  29. morecompute/__version__.py +1 -0
  30. morecompute/execution/executor.py +31 -20
  31. morecompute/execution/worker.py +68 -7
  32. morecompute/models/__init__.py +31 -0
  33. morecompute/models/api_models.py +197 -0
  34. morecompute/notebook.py +50 -7
  35. morecompute/server.py +574 -94
  36. morecompute/services/data_manager.py +379 -0
  37. morecompute/services/lsp_service.py +335 -0
  38. morecompute/services/pod_manager.py +122 -20
  39. morecompute/services/pod_monitor.py +138 -0
  40. morecompute/services/prime_intellect.py +87 -63
  41. morecompute/utils/config_util.py +59 -0
  42. morecompute/utils/special_commands.py +11 -5
  43. morecompute/utils/zmq_util.py +51 -0
  44. frontend/components/MarkdownRenderer.tsx +0 -84
  45. frontend/components/popups/PythonPopup.tsx +0 -292
  46. more_compute-0.1.3.dist-info/METADATA +0 -173
  47. more_compute-0.1.3.dist-info/RECORD +0 -85
  48. /frontend/components/{CellButton.tsx → cell/CellButton.tsx} +0 -0
  49. /frontend/components/{ErrorModal.tsx → modals/ErrorModal.tsx} +0 -0
  50. /frontend/components/{CellOutput.tsx → output/CellOutput.tsx} +0 -0
  51. /frontend/components/{ErrorDisplay.tsx → output/ErrorDisplay.tsx} +0 -0
  52. {more_compute-0.1.3.dist-info → more_compute-0.2.0.dist-info}/WHEEL +0 -0
  53. {more_compute-0.1.3.dist-info → more_compute-0.2.0.dist-info}/entry_points.txt +0 -0
  54. {more_compute-0.1.3.dist-info → more_compute-0.2.0.dist-info}/licenses/LICENSE +0 -0
  55. {more_compute-0.1.3.dist-info → more_compute-0.2.0.dist-info}/top_level.txt +0 -0
frontend/app/globals.css CHANGED
@@ -25,21 +25,46 @@
25
25
  margin: 0;
26
26
  padding: 0;
27
27
  box-sizing: border-box;
28
+ font-family: inherit;
28
29
  }
29
30
 
30
31
  :root {
31
- --mc-background: #E9E7E3;
32
-
33
32
  /* Font Family Custom Properties */
34
33
  --font-sans: 'CustomFont', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
35
34
  --font-mono: 'VeraMono', 'CustomMono', 'Fira Code', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace;
36
35
  --font-display: 'DisplayFont', 'Inter', system-ui, sans-serif;
36
+
37
+ /* Default theme colors - will be overridden by theme system */
38
+ --mc-background: #E9E7E3;
37
39
  --mc-cell-background: #F4EEE7;
38
40
  --mc-text-color: #575042;
39
41
  --mc-markdown-color: #372E25;
40
42
  --mc-markdown-heading-color: #624204;
41
43
  --mc-markdown-paragraph-color: #575042;
42
44
  --mc-line-number-color: #9ca3af;
45
+
46
+ /* Primary/Secondary colors */
47
+ --mc-primary: #3b82f6;
48
+ --mc-primary-hover: #2563eb;
49
+ --mc-secondary: #DBC7A8;
50
+ --mc-secondary-hover: #E2DACC;
51
+
52
+ /* UI element colors */
53
+ --mc-border: #DBC7A8;
54
+ --mc-border-hover: #C4B59A;
55
+ --mc-sidebar-background: #f8fafc;
56
+ --mc-sidebar-foreground: #4b5563;
57
+ --mc-button-background: #3b82f6;
58
+ --mc-button-foreground: #ffffff;
59
+ --mc-input-background: #ffffff;
60
+ --mc-input-border: #e5e7eb;
61
+
62
+ /* Output colors */
63
+ --mc-output-background: #f8f8f8;
64
+ --mc-output-text-color: #000000;
65
+ --mc-output-border: #e5e7eb;
66
+
67
+ /* Legacy */
43
68
  --text-secondary: #6b7280;
44
69
  }
45
70
 
@@ -56,8 +81,7 @@
56
81
  }
57
82
 
58
83
  body {
59
- font-family:
60
- -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
84
+ font-family: 'Fira', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
61
85
  background-color: var(--mc-background);
62
86
  color: var(--mc-text-color);
63
87
  line-height: 1.6;
@@ -70,6 +94,66 @@ body {
70
94
  display: flex;
71
95
  }
72
96
 
97
+ /* Connection Status Banner */
98
+ .connection-banner {
99
+ position: fixed;
100
+ top: 12px;
101
+ left: 50%;
102
+ transform: translateX(-50%);
103
+ z-index: 1001;
104
+ padding: 6px 16px;
105
+ border-radius: 20px;
106
+ animation: fadeIn 0.3s ease-out;
107
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
108
+ backdrop-filter: blur(8px);
109
+ font-size: 11px;
110
+ font-weight: 500;
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 6px;
114
+ }
115
+
116
+ .connection-banner.provisioning {
117
+ background: rgba(251, 191, 36, 0.95);
118
+ color: #78350f;
119
+ }
120
+
121
+ .connection-banner.deploying {
122
+ background: rgba(251, 191, 36, 0.95);
123
+ color: #78350f;
124
+ }
125
+
126
+ .connection-banner.connected {
127
+ background: rgba(16, 185, 129, 0.95);
128
+ color: #064e3b;
129
+ }
130
+
131
+ .connection-message {
132
+ display: flex;
133
+ align-items: center;
134
+ gap: 4px;
135
+ }
136
+
137
+ .connection-status-text {
138
+ font-weight: 600;
139
+ font-size: 11px;
140
+ }
141
+
142
+ .connection-subtitle {
143
+ display: none;
144
+ }
145
+
146
+ @keyframes fadeIn {
147
+ 0% {
148
+ opacity: 0;
149
+ transform: translateX(-50%) translateY(-10px);
150
+ }
151
+ 100% {
152
+ opacity: 1;
153
+ transform: translateX(-50%) translateY(0);
154
+ }
155
+ }
156
+
73
157
  /* Kernel Status Banner */
74
158
  .kernel-banner {
75
159
  position: fixed;
@@ -244,7 +328,7 @@ body {
244
328
  left: 0;
245
329
  right: 0;
246
330
  height: 1px;
247
- background: #DBC7A8;
331
+ background: var(--mc-secondary);
248
332
  opacity: 0;
249
333
  transition: opacity 0.2s ease;
250
334
  }
@@ -310,20 +394,20 @@ body {
310
394
  align-items: center;
311
395
  justify-content: center;
312
396
  gap: 8px;
313
- padding: 8px 16px;
314
- border: 1px solid #DBC7A8;
315
- background: #fff;
397
+ padding: 8px 48px;
398
+ border: 1px solid var(--mc-border);
399
+ background: var(--mc-cell-background);
316
400
  cursor: pointer;
317
401
  font-size: 14px;
318
402
  font-weight: 500;
319
403
  border-radius: 8px;
320
- color: #575042;
404
+ color: var(--mc-text-color);
321
405
  font-family: 'Fira';
322
406
  letter-spacing: -0.02em;
323
407
  }
324
408
 
325
409
  .cell-type-option:hover {
326
- background: #E9E7E3;
410
+ background: var(--mc-secondary);
327
411
  cursor: pointer;
328
412
  }
329
413
 
@@ -382,19 +466,26 @@ body {
382
466
  margin: 20px 0;
383
467
  padding: 0;
384
468
  background: var(--mc-cell-background);
385
- border: 2px solid #DBC7A8;
469
+ border: 2px solid var(--mc-border);
386
470
  border-radius: 0.5px;
387
471
  transition: all 0.2s ease;
388
- overflow: hidden;
472
+ overflow: visible;
473
+ z-index: 1; /* Create stacking context but keep low */
474
+ }
475
+
476
+ /* Active cell should be above others to show autocomplete */
477
+ .cell.active {
478
+ z-index: 10;
389
479
  }
390
480
 
391
481
  .cell:hover {
392
- box-shadow: 2px 4px 0 #E2DACC;
482
+ box-shadow: 2px 4px 0 var(--mc-secondary-hover);
393
483
  }
394
484
 
395
485
  .cell.active {
396
- border-color: #3b82f6;
397
- box-shadow: 0 0 0 1px #3b82f6;
486
+ border-color: var(--mc-primary);
487
+ box-shadow: 0 0 0 1px var(--mc-primary);
488
+ z-index: 10 !important; /* Ensure active cell and its widgets appear above others */
398
489
  }
399
490
 
400
491
  /* Markdown display mode - no borders or background */
@@ -773,8 +864,8 @@ body {
773
864
 
774
865
  /* Cell Output */
775
866
  .cell-output {
776
- border-top: 1px solid #f3f4f6;
777
- background: #fafafa;
867
+ border-top: 1px solid var(--mc-output-border);
868
+ background: var(--mc-output-background);
778
869
  }
779
870
 
780
871
  .output-content {
@@ -782,7 +873,7 @@ body {
782
873
  }
783
874
 
784
875
  .output-stream {
785
- background: #f9fafb;
876
+ background: var(--mc-output-background);
786
877
  padding: 12px 16px;
787
878
  margin: 8px 0;
788
879
  border-radius: 6px;
@@ -790,12 +881,13 @@ body {
790
881
  font-size: 13px;
791
882
  white-space: pre-wrap;
792
883
  word-wrap: break-word;
793
- border-left: 3px solid #e5e7eb;
884
+ border-left: 3px solid var(--mc-output-border);
885
+ color: var(--mc-output-text-color);
794
886
  }
795
887
 
796
888
  .output-stream.stdout {
797
- color: #374151;
798
- border-left-color: #6b7280;
889
+ color: var(--mc-output-text-color);
890
+ border-left-color: var(--mc-primary);
799
891
  }
800
892
 
801
893
  .output-stream.stderr {
@@ -805,15 +897,16 @@ body {
805
897
  }
806
898
 
807
899
  .output-result {
808
- background: var(--mc-cell-background);
900
+ background: var(--mc-output-background);
809
901
  padding: 12px 16px;
810
902
  margin: 8px 0;
811
903
  border-radius: 6px;
812
- border: 1px solid #e5e7eb;
904
+ border: 1px solid var(--mc-output-border);
813
905
  font-family: 'Fira', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
814
906
  font-size: 13px;
815
907
  white-space: pre-wrap;
816
908
  word-wrap: break-word;
909
+ color: var(--mc-output-text-color);
817
910
  }
818
911
 
819
912
  .output-error {
@@ -891,11 +984,11 @@ body {
891
984
  /* Sidebar Styles */
892
985
  .sidebar {
893
986
  width: 60px;
894
- background: #f8fafc;
895
- border-right: 1px solid #e2e8f0;
987
+ background: var(--mc-sidebar-background);
988
+ border-right: 1px solid var(--mc-border);
896
989
  display: flex;
897
990
  flex-direction: column;
898
- padding: 16px 0;
991
+ padding: 8px 0;
899
992
  position: fixed;
900
993
  left: 0;
901
994
  top: 0;
@@ -903,11 +996,23 @@ body {
903
996
  z-index: 50;
904
997
  }
905
998
 
999
+ .sidebar-active-indicator {
1000
+ position: absolute;
1001
+ right: 0;
1002
+ top: 8px;
1003
+ width: 3px;
1004
+ height: 40px;
1005
+ background: var(--mc-primary);
1006
+ border-radius: 2px 0 0 2px;
1007
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1008
+ z-index: 1;
1009
+ }
1010
+
906
1011
  .sidebar-item {
907
1012
  position: relative;
908
- width: 48px;
909
- height: 48px;
910
- margin: 4px auto;
1013
+ width: 40px;
1014
+ height: 40px;
1015
+ margin: 2px auto;
911
1016
  border-radius: 8px;
912
1017
  display: flex;
913
1018
  align-items: center;
@@ -917,20 +1022,16 @@ body {
917
1022
  }
918
1023
 
919
1024
  .sidebar-item:hover {
920
- background: #e2e8f0;
921
- }
922
-
923
- .sidebar-item.active {
924
- background: #3b82f6;
1025
+ background: var(--mc-secondary);
925
1026
  }
926
1027
 
927
- .sidebar-item.active .sidebar-icon {
928
- filter: brightness(0) invert(1);
1028
+ .sidebar-item.active .sidebar-icon-wrapper {
1029
+ color: var(--mc-primary);
929
1030
  }
930
1031
 
931
1032
  .sidebar-icon {
932
- width: 20px;
933
- height: 20px;
1033
+ width: 16px;
1034
+ height: 16px;
934
1035
  opacity: 0.7;
935
1036
  transition: opacity 0.2s ease;
936
1037
  }
@@ -944,8 +1045,9 @@ body {
944
1045
  left: 60px;
945
1046
  top: 50%;
946
1047
  transform: translateY(-50%);
947
- background: #1f2937;
948
- color: white;
1048
+ background: var(--mc-sidebar-background);
1049
+ color: var(--mc-sidebar-foreground);
1050
+ border: 1px solid var(--mc-border);
949
1051
  padding: 6px 8px;
950
1052
  border-radius: 4px;
951
1053
  font-size: 12px;
@@ -965,14 +1067,24 @@ body {
965
1067
  display: flex;
966
1068
  align-items: center;
967
1069
  justify-content: center;
968
- width: 24px;
969
- height: 24px;
970
- color: #4b5563;
1070
+ width: 100%;
1071
+ height: 100%;
1072
+ color: var(--mc-sidebar-foreground);
1073
+ opacity: 0.7;
1074
+ transition: all 0.2s ease;
1075
+ }
1076
+
1077
+ .sidebar-item:hover .sidebar-icon-wrapper {
1078
+ opacity: 1;
1079
+ }
1080
+
1081
+ .sidebar-item.active .sidebar-icon-wrapper {
1082
+ opacity: 1;
971
1083
  }
972
1084
 
973
1085
  .sidebar-icon-image {
974
- width: 18px;
975
- height: 18px;
1086
+ width: 16px;
1087
+ height: 16px;
976
1088
  }
977
1089
 
978
1090
  /* Main content adjustment */
@@ -989,7 +1101,7 @@ body {
989
1101
  width: min(480px, calc(100vw - 60px));
990
1102
  height: 100vh;
991
1103
  background: var(--mc-background);
992
- border-right: 1px solid #e2e8f0;
1104
+ border-right: 1px solid var(--mc-border);
993
1105
  box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1);
994
1106
  z-index: 40;
995
1107
  display: flex;
@@ -1011,20 +1123,21 @@ body {
1011
1123
  justify-content: space-between;
1012
1124
  margin-bottom: 20px;
1013
1125
  padding-bottom: 12px;
1014
- border-bottom: 1px solid #e5e7eb;
1126
+ border-bottom: 1px solid var(--mc-border);
1015
1127
  }
1016
1128
 
1017
1129
  .popup-title {
1018
1130
  font-size: 18px;
1019
1131
  font-weight: 600;
1020
- color: #1f2937;
1132
+ color: var(--mc-text-color);
1021
1133
  }
1022
1134
 
1023
1135
  .popup-close {
1024
1136
  background: none;
1025
1137
  border: none;
1026
1138
  font-size: 20px;
1027
- color: #6b7280;
1139
+ color: var(--mc-text-color);
1140
+ opacity: 0.6;
1028
1141
  cursor: pointer;
1029
1142
  padding: 4px;
1030
1143
  border-radius: 4px;
@@ -1032,8 +1145,8 @@ body {
1032
1145
  }
1033
1146
 
1034
1147
  .popup-close:hover {
1035
- background: #f3f4f6;
1036
- color: #374151;
1148
+ background: var(--mc-secondary);
1149
+ opacity: 1;
1037
1150
  }
1038
1151
 
1039
1152
  /* File Browser Styles */
@@ -1059,7 +1172,7 @@ body {
1059
1172
  .file-toolbar-btn {
1060
1173
  background: var(--mc-cell-background);
1061
1174
  color: var(--mc-text-color);
1062
- border: 1px solid #e5e7eb;
1175
+ border: 1px solid var(--mc-border);
1063
1176
  padding: 6px 10px;
1064
1177
  border-radius: 6px;
1065
1178
  font-size: 12px;
@@ -1074,17 +1187,17 @@ body {
1074
1187
 
1075
1188
  /* Icon-only variant (bordered, compact) */
1076
1189
  .file-toolbar-btn.icon {
1077
- border: 1px solid #e5e7eb;
1190
+ border: 1px solid var(--mc-border);
1078
1191
  background: var(--mc-cell-background);
1079
1192
  padding: 6px;
1080
1193
  }
1081
1194
 
1082
1195
  .file-toolbar-btn.icon:hover {
1083
- background: #f3f4f6;
1196
+ background: var(--mc-secondary);
1084
1197
  }
1085
1198
 
1086
1199
  .file-toolbar-btn:hover:not(:disabled) {
1087
- background: #e5e7eb;
1200
+ background: var(--mc-secondary);
1088
1201
  }
1089
1202
 
1090
1203
  .file-toolbar-btn:disabled {
@@ -1137,8 +1250,8 @@ body {
1137
1250
  }
1138
1251
 
1139
1252
  .file-item:hover {
1140
- background: #f3f4f6;
1141
- border-color: #e5e7eb;
1253
+ background: var(--mc-secondary);
1254
+ border-color: var(--mc-border);
1142
1255
  }
1143
1256
 
1144
1257
  .file-icon {
@@ -1219,20 +1332,20 @@ body {
1219
1332
  justify-content: space-between;
1220
1333
  padding: 12px;
1221
1334
  margin: 8px 0;
1222
- border: 1px solid #e5e7eb;
1335
+ border: 1px solid var(--mc-border);
1223
1336
  border-radius: 6px;
1224
1337
  cursor: pointer;
1225
1338
  transition: all 0.2s ease;
1226
1339
  }
1227
1340
 
1228
1341
  .env-item:hover {
1229
- border-color: #3b82f6;
1230
- background: #f8fafc;
1342
+ border-color: var(--mc-primary);
1343
+ background: var(--mc-secondary);
1231
1344
  }
1232
1345
 
1233
1346
  .env-item.active {
1234
- border-color: #3b82f6;
1235
- background: #eff6ff;
1347
+ border-color: var(--mc-primary);
1348
+ background: var(--mc-secondary-hover);
1236
1349
  }
1237
1350
 
1238
1351
  .env-info {
@@ -1262,11 +1375,12 @@ body {
1262
1375
  height: 400px;
1263
1376
  font-family: 'Fira', 'SF Mono', Monaco, monospace;
1264
1377
  font-size: 13px;
1265
- border: 1px solid #e5e7eb;
1378
+ border: 1px solid var(--mc-border);
1266
1379
  border-radius: 6px;
1267
1380
  padding: 12px;
1268
1381
  resize: vertical;
1269
- background: #f9fafb;
1382
+ background: var(--mc-input-background);
1383
+ color: var(--mc-text-color);
1270
1384
  }
1271
1385
 
1272
1386
  .settings-actions {
@@ -1287,22 +1401,22 @@ body {
1287
1401
  }
1288
1402
 
1289
1403
  .btn-primary {
1290
- background: #3b82f6;
1291
- color: white;
1404
+ background: var(--mc-primary) !important;
1405
+ color: var(--mc-button-foreground) !important;
1292
1406
  }
1293
1407
 
1294
1408
  .btn-primary:hover {
1295
- background: #2563eb;
1409
+ background: var(--mc-primary-hover) !important;
1296
1410
  }
1297
1411
 
1298
1412
  .btn-secondary {
1299
- background: #f3f4f6;
1300
- color: #374151;
1301
- border: 1px solid #d1d5db;
1413
+ background: var(--mc-secondary);
1414
+ color: var(--mc-text-color);
1415
+ border: 1px solid var(--mc-border);
1302
1416
  }
1303
1417
 
1304
1418
  .btn-secondary:hover {
1305
- background: #e5e7eb;
1419
+ background: var(--mc-secondary-hover);
1306
1420
  }
1307
1421
 
1308
1422
  /* Metrics Popup Styles */
@@ -1317,19 +1431,20 @@ body {
1317
1431
  }
1318
1432
 
1319
1433
  .metric-panel {
1320
- border: 1px solid #e5e7eb;
1434
+ border: 1px solid var(--mc-border);
1321
1435
  border-radius: 8px;
1322
1436
  background: var(--mc-cell-background);
1323
1437
  }
1324
1438
 
1325
1439
  .metric-panel-header {
1326
1440
  padding: 8px 12px;
1327
- border-bottom: 1px solid #e5e7eb;
1441
+ border-bottom: 1px solid var(--mc-border);
1328
1442
  }
1329
1443
 
1330
1444
  .metric-panel-title {
1331
1445
  font-size: 12px;
1332
- color: #6b7280;
1446
+ color: var(--mc-text-color);
1447
+ opacity: 0.7;
1333
1448
  font-weight: 600;
1334
1449
  }
1335
1450
 
@@ -1345,7 +1460,8 @@ body {
1345
1460
 
1346
1461
  .metric-big-value .subtitle {
1347
1462
  font-size: 12px;
1348
- color: #6b7280;
1463
+ color: var(--mc-text-color);
1464
+ opacity: 0.6;
1349
1465
  }
1350
1466
 
1351
1467
  .mini-chart {
@@ -1431,8 +1547,8 @@ body {
1431
1547
  align-items: center;
1432
1548
  gap: 8px;
1433
1549
  flex: 1;
1434
- background: var(--mc-cell-background);
1435
- border: 1px solid #e5e7eb;
1550
+ background: var(--mc-input-background);
1551
+ border: 1px solid var(--mc-input-border);
1436
1552
  border-radius: 8px;
1437
1553
  padding: 8px 10px;
1438
1554
  }
@@ -1535,3 +1651,132 @@ body {
1535
1651
  font-style: normal;
1536
1652
  font-display: swap;
1537
1653
  }
1654
+
1655
+ /* Monaco Editor Styling - Match CodeMirror */
1656
+ .monaco-editor-container {
1657
+ position: relative;
1658
+ min-height: 100px;
1659
+ border-radius: 4px;
1660
+ overflow: visible !important;
1661
+ z-index: auto;
1662
+ }
1663
+
1664
+ .monaco-editor-container.code-editor-container {
1665
+ min-height: 100px;
1666
+ }
1667
+
1668
+ .monaco-editor-container.markdown-editor-container {
1669
+ min-height: 60px;
1670
+ }
1671
+
1672
+ /* Monaco editor wrapper - use theme background */
1673
+ .monaco-editor {
1674
+ position: relative !important;
1675
+ z-index: 1 !important;
1676
+ }
1677
+
1678
+ .monaco-editor .overflow-guard {
1679
+ border-radius: 0px !important;
1680
+ }
1681
+
1682
+ /* Use theme background */
1683
+ .monaco-editor .monaco-editor-background,
1684
+ .monaco-editor .inputarea.ime-input {
1685
+ background: var(--mc-cell-background) !important;
1686
+ }
1687
+
1688
+ /* Monaco line numbers - match CodeMirror styling */
1689
+ .monaco-editor .margin {
1690
+ background: var(--mc-cell-background) !important;
1691
+ }
1692
+
1693
+ .monaco-editor .line-numbers {
1694
+ color: var(--mc-line-number-color) !important;
1695
+ font-size: 11px !important;
1696
+ font-family: 'Fira', 'SF Mono', Monaco, monospace;
1697
+ }
1698
+
1699
+ .monaco-editor .margin-view-overlays {
1700
+ background: var(--mc-cell-background) !important;
1701
+ border-right: 1px solid #e5e7eb !important;
1702
+ }
1703
+
1704
+ /* Remove all line highlights */
1705
+ .monaco-editor .current-line,
1706
+ .monaco-editor .current-line-exact {
1707
+ background: transparent !important;
1708
+ border: none !important;
1709
+ }
1710
+
1711
+ .monaco-editor .view-overlays .current-line {
1712
+ background: transparent !important;
1713
+ }
1714
+
1715
+ /* Monaco editor scrollbar styling */
1716
+ .monaco-editor .monaco-scrollable-element > .scrollbar {
1717
+ background: transparent;
1718
+ }
1719
+
1720
+ .monaco-editor .monaco-scrollable-element > .scrollbar > .slider {
1721
+ background: rgba(0, 0, 0, 0.2);
1722
+ border-radius: 3px;
1723
+ }
1724
+
1725
+ .monaco-editor .monaco-scrollable-element > .scrollbar > .slider:hover {
1726
+ background: rgba(0, 0, 0, 0.3);
1727
+ }
1728
+
1729
+ /* Monaco suggestion widget styling */
1730
+ .monaco-editor .suggest-widget {
1731
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
1732
+ border-radius: 6px !important;
1733
+ z-index: 1000 !important; /* High z-index within active cell's stacking context */
1734
+ pointer-events: auto !important;
1735
+ position: absolute !important; /* Position within cell, not fixed */
1736
+ }
1737
+
1738
+ .monaco-editor .suggest-widget .monaco-list .monaco-list-row {
1739
+ padding: 6px 8px !important;
1740
+ min-height: 28px !important;
1741
+ }
1742
+
1743
+ /* The theme colors handle foreground/background, but ensure hover works */
1744
+ .monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover {
1745
+ cursor: pointer !important;
1746
+ }
1747
+
1748
+ /* Monaco hover widget styling */
1749
+ .monaco-editor .monaco-hover {
1750
+ border: 1px solid #e5e7eb !important;
1751
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
1752
+ border-radius: 6px !important;
1753
+ background: white !important;
1754
+ z-index: 100000 !important;
1755
+ }
1756
+
1757
+ /* Monaco parameter hints */
1758
+ .monaco-editor .parameter-hints-widget {
1759
+ border: 1px solid #e5e7eb !important;
1760
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
1761
+ border-radius: 6px !important;
1762
+ z-index: 100000 !important;
1763
+ }
1764
+
1765
+ /* Ensure cell content doesn't clip widgets */
1766
+ .cell-content {
1767
+ overflow: visible !important;
1768
+ }
1769
+
1770
+ /* Ensure Monaco renders properly in cells - match CodeMirror padding */
1771
+ .cell .monaco-editor-container {
1772
+ background: transparent;
1773
+ padding: 0;
1774
+ }
1775
+
1776
+ /* Monaco padding is handled via editor options - no CSS padding needed */
1777
+
1778
+ /* Fix cell input padding for Monaco */
1779
+ .cell-input {
1780
+ padding: 0 !important;
1781
+ overflow: visible;
1782
+ }