react-open-source-grid 1.5.3 → 1.5.7

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 (89) hide show
  1. package/dist/lib/App.d.ts +3 -0
  2. package/dist/lib/chunk-FG3FLQAE.js +296 -0
  3. package/dist/lib/components/AccessibilityDemo.d.ts +8 -0
  4. package/dist/lib/components/ApiReferencePage.d.ts +2 -0
  5. package/dist/lib/components/BenchmarkDemo.d.ts +2 -0
  6. package/dist/lib/components/CellRenderersDemo.d.ts +16 -0
  7. package/dist/lib/components/CodeBlock.d.ts +10 -0
  8. package/dist/lib/components/ColumnFiltersDemo.d.ts +5 -0
  9. package/dist/lib/components/CompleteApiReferencePage.d.ts +2 -0
  10. package/dist/lib/components/ContextMenuDemo.d.ts +12 -0
  11. package/dist/lib/components/DataGrid/ARCHITECTURE.md.d.ts +288 -0
  12. package/dist/lib/components/DataGrid/AdvancedFilterBuilder.d.ts +12 -0
  13. package/dist/lib/components/DataGrid/CellRenderers.d.ts +64 -0
  14. package/dist/lib/components/DataGrid/ColumnChooser.d.ts +12 -0
  15. package/dist/lib/components/DataGrid/ColumnFilters.d.ts +16 -0
  16. package/dist/lib/components/DataGrid/ContextMenu.d.ts +10 -0
  17. package/dist/lib/components/DataGrid/DataGrid.d.ts +22 -0
  18. package/dist/lib/components/DataGrid/DensityToggle.d.ts +23 -0
  19. package/dist/lib/components/DataGrid/DragHandle.d.ts +7 -0
  20. package/dist/lib/components/DataGrid/DraggableRow.d.ts +14 -0
  21. package/dist/lib/components/DataGrid/ExportMenu.d.ts +12 -0
  22. package/dist/lib/components/DataGrid/FacetedSearch.d.ts +29 -0
  23. package/dist/lib/components/DataGrid/FilteredSearchBar.d.ts +36 -0
  24. package/dist/lib/components/DataGrid/FocusTrap.d.ts +12 -0
  25. package/dist/lib/components/DataGrid/GridApiDemo.d.ts +6 -0
  26. package/dist/lib/components/DataGrid/GridBody.d.ts +42 -0
  27. package/dist/lib/components/DataGrid/GridFooter.d.ts +18 -0
  28. package/dist/lib/components/DataGrid/GridHeader.d.ts +18 -0
  29. package/dist/lib/components/DataGrid/GridPagination.d.ts +10 -0
  30. package/dist/lib/components/DataGrid/GroupByPanel.d.ts +9 -0
  31. package/dist/lib/components/DataGrid/GroupRow.d.ts +31 -0
  32. package/dist/lib/components/DataGrid/InfiniteScrollDataGrid.d.ts +39 -0
  33. package/dist/lib/components/DataGrid/LayoutPresetsManager.d.ts +11 -0
  34. package/dist/lib/components/DataGrid/MarketDataEngine.d.ts +165 -0
  35. package/dist/lib/components/DataGrid/MarketDataGrid.d.ts +33 -0
  36. package/dist/lib/components/DataGrid/MarketDataGridUtils.d.ts +13 -0
  37. package/dist/lib/components/DataGrid/ScreenReaderAnnouncer.d.ts +8 -0
  38. package/dist/lib/components/DataGrid/ServerSideDataSource.d.ts +136 -0
  39. package/dist/lib/components/DataGrid/ThemeSelector.d.ts +12 -0
  40. package/dist/lib/components/DataGrid/Tooltip.d.ts +15 -0
  41. package/dist/lib/components/DataGrid/TreeRow.d.ts +31 -0
  42. package/dist/lib/components/DataGrid/VirtualScroller.d.ts +35 -0
  43. package/dist/lib/components/DataGrid/WebSocketMockFeed.d.ts +121 -0
  44. package/dist/lib/components/DataGrid/aggregationUtils.d.ts +25 -0
  45. package/dist/lib/components/DataGrid/contextMenuUtils.d.ts +36 -0
  46. package/dist/lib/components/DataGrid/demos/TooltipDemo.d.ts +1 -0
  47. package/dist/lib/components/DataGrid/densityModes.d.ts +42 -0
  48. package/dist/lib/components/DataGrid/dragRowUtils.d.ts +98 -0
  49. package/dist/lib/components/DataGrid/exportUtils.d.ts +30 -0
  50. package/dist/lib/components/DataGrid/filterUtils.d.ts +17 -0
  51. package/dist/lib/components/DataGrid/gridApi.d.ts +142 -0
  52. package/dist/lib/components/DataGrid/gridApi.types.d.ts +348 -0
  53. package/dist/lib/components/DataGrid/gridReducer.d.ts +4 -0
  54. package/dist/lib/components/DataGrid/groupingUtils.d.ts +17 -0
  55. package/dist/lib/components/DataGrid/index.d.ts +41 -0
  56. package/dist/lib/components/DataGrid/layoutPersistence.d.ts +95 -0
  57. package/dist/lib/components/DataGrid/themes.d.ts +113 -0
  58. package/dist/lib/components/DataGrid/treeDataUtils.d.ts +97 -0
  59. package/dist/lib/components/DataGrid/types.d.ts +536 -0
  60. package/dist/lib/components/DataGrid/useContextMenu.d.ts +31 -0
  61. package/dist/lib/components/DataGrid/useDensityMode.d.ts +36 -0
  62. package/dist/lib/components/DataGrid/useFocusTrap.d.ts +14 -0
  63. package/dist/lib/components/DataGrid/useMarketData.d.ts +57 -0
  64. package/dist/lib/components/DataGrid/useScreenReaderAnnouncements.d.ts +23 -0
  65. package/dist/lib/components/DataGrid/useTooltip.d.ts +21 -0
  66. package/dist/lib/components/DemoGridPage.d.ts +3 -0
  67. package/dist/lib/components/DensityModeDemo.d.ts +12 -0
  68. package/dist/lib/components/FacetedSearchDemo.d.ts +8 -0
  69. package/dist/lib/components/FeatureGallery.d.ts +2 -0
  70. package/dist/lib/components/FilteredSearchDemo.d.ts +7 -0
  71. package/dist/lib/components/GridApiDemoPage.d.ts +2 -0
  72. package/dist/lib/components/HomePage.d.ts +1 -0
  73. package/dist/lib/components/InfiniteScrollDemo.d.ts +13 -0
  74. package/dist/lib/components/LayoutPersistenceDemo.d.ts +2 -0
  75. package/dist/lib/components/LiveMarketDemo.d.ts +18 -0
  76. package/dist/lib/components/MarketDataExamples.d.ts +42 -0
  77. package/dist/lib/components/RowDraggingDemo.d.ts +3 -0
  78. package/dist/lib/components/RowPinningDemo.d.ts +12 -0
  79. package/dist/lib/components/ThemesDemo.d.ts +17 -0
  80. package/dist/lib/components/TooltipDemo.d.ts +1 -0
  81. package/dist/lib/components/TreeDataDemo.d.ts +3 -0
  82. package/dist/lib/components/VirtualScrollDemo.d.ts +13 -0
  83. package/dist/lib/index.cjs +12233 -0
  84. package/dist/lib/index.css +591 -0
  85. package/dist/lib/index.d.ts +2 -0
  86. package/dist/lib/index.js +11827 -0
  87. package/dist/lib/layoutPersistence-2MPTAEYI.js +20 -0
  88. package/dist/lib/main.d.ts +1 -0
  89. package/package.json +7 -3
@@ -0,0 +1,591 @@
1
+ /* src/index.css */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
7
+ html,
8
+ body,
9
+ #root {
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+ body {
14
+ margin: 0;
15
+ padding: 0;
16
+ font-family:
17
+ -apple-system,
18
+ BlinkMacSystemFont,
19
+ "Segoe UI",
20
+ "Roboto",
21
+ "Oxygen",
22
+ "Ubuntu",
23
+ "Cantarell",
24
+ "Fira Sans",
25
+ "Droid Sans",
26
+ "Helvetica Neue",
27
+ sans-serif;
28
+ font-size: 14px;
29
+ line-height: 1.6;
30
+ color: #333333;
31
+ background-color: #fafafa;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ }
35
+ input,
36
+ button,
37
+ textarea,
38
+ select {
39
+ font-family: inherit;
40
+ font-size: inherit;
41
+ }
42
+ button {
43
+ cursor: pointer;
44
+ border: none;
45
+ background: none;
46
+ padding: 0;
47
+ margin: 0;
48
+ }
49
+ :root {
50
+ --color-primary: #0066cc;
51
+ --color-primary-light: #e8f0ff;
52
+ --color-primary-dark: #004ca3;
53
+ --color-neutral-dark: #1a1a1a;
54
+ --color-neutral-light: #f5f5f5;
55
+ --color-border: #d9d9d9;
56
+ --color-border-light: #efefef;
57
+ --color-bg-hover: #f0f0f0;
58
+ --color-text-primary: #262626;
59
+ --color-text-secondary: #666666;
60
+ --grid-border: #e5e7eb;
61
+ --grid-border-width: 1px;
62
+ --grid-border-radius: 6px;
63
+ --grid-bg: #ffffff;
64
+ --grid-bg-alt: #f9fafb;
65
+ --grid-header-bg: #f3f4f6;
66
+ --grid-footer-bg: #f9fafb;
67
+ --grid-text: #111827;
68
+ --grid-text-secondary: #6b7280;
69
+ --grid-text-muted: #9ca3af;
70
+ --grid-header-text: #374151;
71
+ --grid-primary: #3b82f6;
72
+ --grid-selected: rgba(59, 130, 246, 0.08);
73
+ --grid-hover: #f9fafb;
74
+ --grid-active: #eff6ff;
75
+ --grid-cell-padding: 10px 12px;
76
+ --grid-header-padding: 10px 12px;
77
+ --grid-font-size: 13px;
78
+ --grid-font-size-sm: 12px;
79
+ --grid-header-font-weight: 600;
80
+ --grid-shadow-light: 0 1px 3px 0 rgba(0, 0, 0, 0.08);
81
+ --grid-text-inverse: #ffffff;
82
+ }
83
+ ::-webkit-scrollbar {
84
+ width: 8px;
85
+ height: 8px;
86
+ }
87
+ ::-webkit-scrollbar-track {
88
+ background: #f1f1f1;
89
+ }
90
+ ::-webkit-scrollbar-thumb {
91
+ background: #c1c1c1;
92
+ border-radius: 4px;
93
+ }
94
+ ::-webkit-scrollbar-thumb:hover {
95
+ background: #a1a1a1;
96
+ }
97
+ .virtual-scroller-container {
98
+ scrollbar-width: thin;
99
+ scrollbar-color: #c1c1c1 #f1f1f1;
100
+ }
101
+ .virtual-scroller-container::-webkit-scrollbar {
102
+ -webkit-appearance: none;
103
+ width: 12px;
104
+ height: 12px;
105
+ }
106
+ .virtual-scroller-container::-webkit-scrollbar-track {
107
+ background: #f1f1f1;
108
+ border-radius: 0;
109
+ }
110
+ .virtual-scroller-container::-webkit-scrollbar-thumb {
111
+ background: #c1c1c1;
112
+ border-radius: 6px;
113
+ border: 2px solid #f1f1f1;
114
+ }
115
+ .virtual-scroller-container::-webkit-scrollbar-thumb:hover {
116
+ background: #a1a1a1;
117
+ }
118
+ @keyframes pulse {
119
+ 0%, 100% {
120
+ opacity: 1;
121
+ }
122
+ 50% {
123
+ opacity: 0.5;
124
+ }
125
+ }
126
+
127
+ /* src/components/DataGrid/ContextMenu.css */
128
+ .context-menu {
129
+ position: fixed;
130
+ background: var(--context-menu-bg, #ffffff);
131
+ border: 1px solid var(--context-menu-border, #d0d0d0);
132
+ border-radius: 6px;
133
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
134
+ min-width: 200px;
135
+ max-width: 320px;
136
+ padding: 4px 0;
137
+ z-index: 10000;
138
+ font-family:
139
+ -apple-system,
140
+ BlinkMacSystemFont,
141
+ "Segoe UI",
142
+ Roboto,
143
+ "Helvetica Neue",
144
+ Arial,
145
+ sans-serif;
146
+ font-size: 14px;
147
+ line-height: 1.5;
148
+ color: var(--context-menu-text, #333333);
149
+ user-select: none;
150
+ animation: contextMenuFadeIn 0.12s ease-out;
151
+ }
152
+ @keyframes contextMenuFadeIn {
153
+ from {
154
+ opacity: 0;
155
+ transform: scale(0.95);
156
+ }
157
+ to {
158
+ opacity: 1;
159
+ transform: scale(1);
160
+ }
161
+ }
162
+ .context-menu-item {
163
+ display: flex;
164
+ align-items: center;
165
+ padding: 8px 12px;
166
+ cursor: pointer;
167
+ transition: background-color 0.1s ease;
168
+ gap: 8px;
169
+ position: relative;
170
+ }
171
+ .context-menu-item:hover:not(.disabled) {
172
+ background-color: var(--context-menu-hover-bg, #f0f0f0);
173
+ }
174
+ .context-menu-item:active:not(.disabled) {
175
+ background-color: var(--context-menu-active-bg, #e5e5e5);
176
+ }
177
+ .context-menu-item.disabled {
178
+ opacity: 0.4;
179
+ cursor: not-allowed;
180
+ }
181
+ .context-menu-item.danger {
182
+ color: var(--context-menu-danger, #dc3545);
183
+ }
184
+ .context-menu-item.danger:hover:not(.disabled) {
185
+ background-color: var(--context-menu-danger-hover-bg, #fff0f0);
186
+ }
187
+ .context-menu-icon {
188
+ font-size: 16px;
189
+ width: 20px;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ flex-shrink: 0;
194
+ }
195
+ .context-menu-label {
196
+ flex: 1;
197
+ white-space: nowrap;
198
+ overflow: hidden;
199
+ text-overflow: ellipsis;
200
+ }
201
+ .context-menu-shortcut {
202
+ font-size: 12px;
203
+ color: var(--context-menu-shortcut, #888888);
204
+ margin-left: auto;
205
+ padding-left: 16px;
206
+ }
207
+ .context-menu-arrow {
208
+ margin-left: auto;
209
+ font-size: 10px;
210
+ color: var(--context-menu-arrow, #888888);
211
+ }
212
+ .context-menu-separator {
213
+ height: 1px;
214
+ background-color: var(--context-menu-separator, #e0e0e0);
215
+ margin: 4px 0;
216
+ }
217
+ @media (prefers-color-scheme: dark) {
218
+ .context-menu {
219
+ --context-menu-bg: #2a2a2a;
220
+ --context-menu-border: #404040;
221
+ --context-menu-text: #e0e0e0;
222
+ --context-menu-hover-bg: #3a3a3a;
223
+ --context-menu-active-bg: #4a4a4a;
224
+ --context-menu-separator: #404040;
225
+ --context-menu-shortcut: #999999;
226
+ --context-menu-arrow: #999999;
227
+ --context-menu-danger: #ff6b6b;
228
+ --context-menu-danger-hover-bg: #3a2a2a;
229
+ }
230
+ }
231
+ .data-grid.theme-quartz .context-menu {
232
+ --context-menu-bg: #ffffff;
233
+ --context-menu-border: #c5c5c5;
234
+ --context-menu-text: #000000;
235
+ --context-menu-hover-bg: #e6f2ff;
236
+ --context-menu-active-bg: #cce5ff;
237
+ }
238
+ .data-grid.theme-alpine .context-menu {
239
+ --context-menu-bg: #f8f9fa;
240
+ --context-menu-border: #dee2e6;
241
+ --context-menu-text: #212529;
242
+ --context-menu-hover-bg: #e9ecef;
243
+ --context-menu-active-bg: #dee2e6;
244
+ }
245
+ .data-grid.theme-balham .context-menu {
246
+ --context-menu-bg: #ffffff;
247
+ --context-menu-border: #bdc3c7;
248
+ --context-menu-text: #2c3e50;
249
+ --context-menu-hover-bg: #ecf0f1;
250
+ --context-menu-active-bg: #d5dbdb;
251
+ }
252
+ .data-grid.theme-material .context-menu {
253
+ --context-menu-bg: #ffffff;
254
+ --context-menu-border: #e0e0e0;
255
+ --context-menu-text: #212121;
256
+ --context-menu-hover-bg: #f5f5f5;
257
+ --context-menu-active-bg: #eeeeee;
258
+ border-radius: 4px;
259
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
260
+ }
261
+ .context-menu-item:focus {
262
+ outline: 2px solid var(--context-menu-focus, #0066cc);
263
+ outline-offset: -2px;
264
+ }
265
+ .context-menu-item:focus:not(:focus-visible) {
266
+ outline: none;
267
+ }
268
+
269
+ /* src/components/DataGrid/MarketDataGrid.css */
270
+ .market-data-grid {
271
+ width: 100%;
272
+ height: 100%;
273
+ overflow: auto;
274
+ font-family:
275
+ -apple-system,
276
+ BlinkMacSystemFont,
277
+ "Segoe UI",
278
+ Roboto,
279
+ Oxygen,
280
+ Ubuntu,
281
+ Cantarell,
282
+ sans-serif;
283
+ font-size: 13px;
284
+ background: #ffffff;
285
+ border: 1px solid #e0e0e0;
286
+ }
287
+ .market-grid-header {
288
+ position: sticky;
289
+ top: 0;
290
+ z-index: 10;
291
+ background: #f5f5f5;
292
+ border-bottom: 2px solid #d0d0d0;
293
+ }
294
+ .market-grid-header-row {
295
+ display: flex;
296
+ min-width: 100%;
297
+ }
298
+ .market-grid-header-cell {
299
+ padding: 10px 12px;
300
+ font-weight: 600;
301
+ color: #333;
302
+ border-right: 1px solid #e0e0e0;
303
+ white-space: nowrap;
304
+ overflow: hidden;
305
+ text-overflow: ellipsis;
306
+ user-select: none;
307
+ }
308
+ .market-grid-header-cell:last-child {
309
+ border-right: none;
310
+ }
311
+ .market-grid-body {
312
+ min-width: 100%;
313
+ }
314
+ .market-grid-row {
315
+ display: flex;
316
+ border-bottom: 1px solid #f0f0f0;
317
+ transition: background-color 0.1s ease;
318
+ cursor: pointer;
319
+ }
320
+ .market-grid-row:hover {
321
+ background-color: #f9f9f9;
322
+ }
323
+ .market-grid-row:active {
324
+ background-color: #f0f0f0;
325
+ }
326
+ .market-grid-cell {
327
+ padding: 8px 12px;
328
+ border-right: 1px solid #f5f5f5;
329
+ white-space: nowrap;
330
+ overflow: hidden;
331
+ text-overflow: ellipsis;
332
+ display: flex;
333
+ align-items: center;
334
+ position: relative;
335
+ }
336
+ .market-grid-cell:last-child {
337
+ border-right: none;
338
+ }
339
+ .numeric-cell {
340
+ justify-content: flex-end;
341
+ font-variant-numeric: tabular-nums;
342
+ font-family:
343
+ "Monaco",
344
+ "Menlo",
345
+ "Consolas",
346
+ monospace;
347
+ }
348
+ @keyframes flashUp {
349
+ 0% {
350
+ background-color: rgba(76, 175, 80, 0);
351
+ }
352
+ 20% {
353
+ background-color: rgba(76, 175, 80, 0.4);
354
+ }
355
+ 100% {
356
+ background-color: rgba(76, 175, 80, 0);
357
+ }
358
+ }
359
+ @keyframes flashDown {
360
+ 0% {
361
+ background-color: rgba(244, 67, 54, 0);
362
+ }
363
+ 20% {
364
+ background-color: rgba(244, 67, 54, 0.4);
365
+ }
366
+ 100% {
367
+ background-color: rgba(244, 67, 54, 0);
368
+ }
369
+ }
370
+ .cell-flash-up {
371
+ animation: flashUp 500ms ease-out;
372
+ }
373
+ .cell-flash-down {
374
+ animation: flashDown 500ms ease-out;
375
+ }
376
+ .change-positive {
377
+ color: #4caf50;
378
+ font-weight: 600;
379
+ }
380
+ .change-negative {
381
+ color: #f44336;
382
+ font-weight: 600;
383
+ }
384
+ .market-grid-cell[data-field=bid] {
385
+ color: #2196f3;
386
+ font-weight: 500;
387
+ }
388
+ .market-grid-cell[data-field=ask] {
389
+ color: #ff5722;
390
+ font-weight: 500;
391
+ }
392
+ .market-grid-cell[data-field=price] {
393
+ font-weight: 700;
394
+ font-size: 14px;
395
+ }
396
+ .market-grid-cell[data-field=volume],
397
+ .market-grid-cell[data-field=size] {
398
+ color: #666;
399
+ font-size: 12px;
400
+ }
401
+ .market-grid-cell[data-field=symbol],
402
+ .market-grid-cell[data-field=id] {
403
+ font-weight: 700;
404
+ color: #1976d2;
405
+ font-family:
406
+ "Monaco",
407
+ "Menlo",
408
+ "Consolas",
409
+ monospace;
410
+ }
411
+ .density-compact .market-grid-header-cell {
412
+ padding: 6px 8px;
413
+ font-size: 12px;
414
+ }
415
+ .density-compact .market-grid-cell {
416
+ padding: 4px 8px;
417
+ font-size: 12px;
418
+ }
419
+ .density-compact .market-grid-cell[data-field=price] {
420
+ font-size: 13px;
421
+ }
422
+ .density-compact .market-grid-row {
423
+ min-height: 28px;
424
+ }
425
+ .market-grid-cell[data-field=high] {
426
+ color: #4caf50;
427
+ }
428
+ .market-grid-cell[data-field=low] {
429
+ color: #f44336;
430
+ }
431
+ .market-data-grid.loading {
432
+ opacity: 0.6;
433
+ pointer-events: none;
434
+ }
435
+ .market-data-grid.loading::after {
436
+ content: "";
437
+ position: absolute;
438
+ top: 50%;
439
+ left: 50%;
440
+ transform: translate(-50%, -50%);
441
+ width: 40px;
442
+ height: 40px;
443
+ border: 4px solid #f3f3f3;
444
+ border-top: 4px solid #2196f3;
445
+ border-radius: 50%;
446
+ animation: spin 1s linear infinite;
447
+ }
448
+ @keyframes spin {
449
+ 0% {
450
+ transform: translate(-50%, -50%) rotate(0deg);
451
+ }
452
+ 100% {
453
+ transform: translate(-50%, -50%) rotate(360deg);
454
+ }
455
+ }
456
+ .market-data-grid.paused {
457
+ border: 2px solid #ff9800;
458
+ }
459
+ .market-data-grid.paused::before {
460
+ content: "PAUSED";
461
+ position: absolute;
462
+ top: 10px;
463
+ right: 10px;
464
+ padding: 4px 12px;
465
+ background: #ff9800;
466
+ color: white;
467
+ border-radius: 4px;
468
+ font-size: 11px;
469
+ font-weight: 700;
470
+ z-index: 1000;
471
+ letter-spacing: 1px;
472
+ }
473
+ .market-data-grid.throttled {
474
+ border: 2px solid #f44336;
475
+ }
476
+ .market-data-grid.throttled::before {
477
+ content: "THROTTLED";
478
+ position: absolute;
479
+ top: 10px;
480
+ right: 10px;
481
+ padding: 4px 12px;
482
+ background: #f44336;
483
+ color: white;
484
+ border-radius: 4px;
485
+ font-size: 11px;
486
+ font-weight: 700;
487
+ z-index: 1000;
488
+ letter-spacing: 1px;
489
+ }
490
+ .market-data-grid::-webkit-scrollbar {
491
+ width: 12px;
492
+ height: 12px;
493
+ }
494
+ .market-data-grid::-webkit-scrollbar-track {
495
+ background: #f5f5f5;
496
+ }
497
+ .market-data-grid::-webkit-scrollbar-thumb {
498
+ background: #ccc;
499
+ border-radius: 6px;
500
+ }
501
+ .market-data-grid::-webkit-scrollbar-thumb:hover {
502
+ background: #999;
503
+ }
504
+ .market-data-wrapper {
505
+ position: relative;
506
+ width: 100%;
507
+ height: 100%;
508
+ }
509
+ .market-metrics-overlay {
510
+ position: absolute;
511
+ top: 10px;
512
+ left: 10px;
513
+ background: rgba(0, 0, 0, 0.75);
514
+ color: #0f0;
515
+ padding: 8px 12px;
516
+ border-radius: 4px;
517
+ font-family:
518
+ "Monaco",
519
+ "Menlo",
520
+ "Consolas",
521
+ monospace;
522
+ font-size: 11px;
523
+ z-index: 1000;
524
+ pointer-events: none;
525
+ line-height: 1.6;
526
+ }
527
+ .market-metrics-overlay .metric {
528
+ display: flex;
529
+ justify-content: space-between;
530
+ gap: 12px;
531
+ }
532
+ .market-metrics-overlay .metric-label {
533
+ color: #888;
534
+ }
535
+ .market-metrics-overlay .metric-value {
536
+ color: #0f0;
537
+ font-weight: 700;
538
+ }
539
+ .market-metrics-overlay .metric-value.warning {
540
+ color: #ff9800;
541
+ }
542
+ .market-metrics-overlay .metric-value.critical {
543
+ color: #f44336;
544
+ }
545
+ .connection-status {
546
+ position: absolute;
547
+ top: 10px;
548
+ right: 120px;
549
+ padding: 4px 10px;
550
+ border-radius: 12px;
551
+ font-size: 11px;
552
+ font-weight: 700;
553
+ z-index: 1000;
554
+ letter-spacing: 0.5px;
555
+ }
556
+ .connection-status.connected {
557
+ background: #4caf50;
558
+ color: white;
559
+ }
560
+ .connection-status.connecting {
561
+ background: #ff9800;
562
+ color: white;
563
+ }
564
+ .connection-status.disconnected {
565
+ background: #f44336;
566
+ color: white;
567
+ }
568
+ .connection-status.reconnecting {
569
+ background: #ff9800;
570
+ color: white;
571
+ animation: pulse 1s ease-in-out infinite;
572
+ }
573
+ @keyframes pulse {
574
+ 0%, 100% {
575
+ opacity: 1;
576
+ }
577
+ 50% {
578
+ opacity: 0.5;
579
+ }
580
+ }
581
+ @media (max-width: 768px) {
582
+ .market-data-grid {
583
+ font-size: 11px;
584
+ }
585
+ .market-grid-cell {
586
+ padding: 6px 8px;
587
+ }
588
+ .market-grid-header-cell {
589
+ padding: 8px 8px;
590
+ }
591
+ }
@@ -0,0 +1,2 @@
1
+ import './index.css';
2
+ export * from './components/DataGrid/index';