@ngx-stoui/core 21.0.5 → 21.0.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.
@@ -0,0 +1,541 @@
1
+ @charset "UTF-8";
2
+ /**
3
+ * EDS (Equinor Design System) Theme for @toolbox-web/grid
4
+ *
5
+ * Styles the toolbox grid to match Equinor's design system.
6
+ * Supports light/dark modes via the light-dark() CSS function.
7
+ * Uses EDS CSS variables (--eds_*) when available, with light-dark() fallbacks.
8
+ *
9
+ * Reference: https://eds.equinor.com/
10
+ * Grid Theming: https://toolboxjs.com/?path=/docs/grid-theming--docs
11
+ * Requires @toolbox-web/grid v1.3.1+
12
+ *
13
+ * Usage: "@ngx-stoui/core/toolbox-grid.css" in project.json styles array
14
+ */
15
+ /* ================================================================
16
+ * 1. Theme Variables
17
+ *
18
+ * Shared by tbw-grid and body-level panels (.tbw-filter-panel).
19
+ * Internal aliases (--_*) reduce repetition of EDS token + fallback pairs.
20
+ *
21
+ * NOTE: As of v1.3.1, the grid copies theme classes to filter panels
22
+ * rendered in document.body, so these variables cascade properly.
23
+ * ================================================================ */
24
+ tbw-grid,
25
+ .tbw-filter-panel {
26
+ /* --- EDS Token Aliases (cascade to all children) --- */
27
+ --_bg: var(--eds_ui_background__default, light-dark(#ffffff, #132634));
28
+ --_fg: var(--eds_text_static_icons__default, light-dark(#3d3d3d, #ffffff));
29
+ --_fg-muted: var(
30
+ --eds_text_static_icons__tertiary,
31
+ light-dark(#6f6f6f, #9ca6ac)
32
+ );
33
+ --_border: var(--eds_ui_background__medium, light-dark(#dcdcdc, #3e4f5c));
34
+ --_surface: var(--eds_ui_background__light, light-dark(#f7f7f7, #2e3f4d));
35
+ --_accent: var(
36
+ --eds_interactive_primary__resting,
37
+ light-dark(#007079, #97cace)
38
+ );
39
+ --_accent-fg: var(
40
+ --eds_text_static_icons__primary_white,
41
+ light-dark(#ffffff, #000000)
42
+ );
43
+ --_hover: var(
44
+ --eds_interactive_table__cell__fill_hover,
45
+ light-dark(#eaeaea, #324d62)
46
+ );
47
+ --_focus: var(--eds_interactive_focus, light-dark(#007079, #97cace));
48
+ --_radius: var(--eds_shape_button_border_radius, 4px);
49
+ /* --- Typography --- */
50
+ --tbw-font-family: Equinor, sans-serif;
51
+ --tbw-font-size: var(--sto-base-font-size, 13px);
52
+ --tbw-font-size-header: var(--sto-base-font-size, 13px);
53
+ --tbw-font-weight-header: 700;
54
+ /* --- Colors --- */
55
+ --tbw-color-bg: var(--_bg);
56
+ --tbw-color-fg: var(--_fg);
57
+ --tbw-color-fg-muted: var(--_fg-muted);
58
+ --tbw-color-panel-bg: var(--_surface);
59
+ /* --- Borders --- */
60
+ --tbw-color-border: var(--_border);
61
+ --tbw-color-border-strong: var(--_border);
62
+ --tbw-row-divider: 1px solid var(--_border);
63
+ --tbw-color-border-cell: transparent;
64
+ --tbw-color-border-header: var(--_border);
65
+ --tbw-border-radius: var(--_radius);
66
+ --tbw-selection-border-style: dashed;
67
+ --tbw-selection-border-width: 1px;
68
+ /* --- Header --- */
69
+ --tbw-color-header-bg: var(
70
+ --eds_interactive_table__header__fill_resting,
71
+ light-dark(#f7f7f7, #2e3f4d)
72
+ );
73
+ --tbw-color-header-fg: var(--_fg);
74
+ --tbw-header-text-transform: none;
75
+ --tbw-header-letter-spacing: normal;
76
+ /* --- Row & Cell States --- */
77
+ --tbw-color-row-alt: var(--_bg);
78
+ --tbw-color-row-hover: var(--_hover);
79
+ --tbw-color-selection: var(
80
+ --eds_interactive_primary__selected_highlight,
81
+ light-dark(#e6faec, #007079)
82
+ );
83
+ --tbw-color-active-row-bg: var(
84
+ --eds_interactive_table__cell__fill_activated,
85
+ light-dark(#e6faec, #243746)
86
+ );
87
+ --tbw-editing-row-outline-width: 1px;
88
+ /* --- Accent --- */
89
+ --tbw-color-accent: var(--_accent);
90
+ --tbw-color-accent-fg: var(--_accent-fg);
91
+ /* --- Dimensions --- */
92
+ --tbw-row-height: var(
93
+ --eds_clickbound_default__base,
94
+ calc(var(--sto-base-font-size, 13px) * 2.923)
95
+ );
96
+ --tbw-header-height: var(
97
+ --eds_clickbound_default__base,
98
+ calc(var(--sto-base-font-size, 13px) * 2.923)
99
+ );
100
+ --tbw-cell-padding: 0 var(--eds_spacing_medium, 8px);
101
+ --tbw-cell-padding-header: 0 var(--eds_spacing_medium, 8px);
102
+ --tbw-button-padding: 0.375rem 0.625rem;
103
+ /* --- Focus --- */
104
+ --tbw-focus-outline: 0.5px dotted var(--_focus);
105
+ --tbw-focus-outline-offset: -1px;
106
+ /* --- Resize Handle --- */
107
+ --tbw-resize-handle-color: transparent;
108
+ --tbw-resize-handle-color-hover: var(--_accent);
109
+ /* --- Sort & Filter Display (v1.5.0+) --- */
110
+ --tbw-sort-indicator-color: var(--_fg-muted);
111
+ --tbw-sort-indicator-active-color: var(--_accent);
112
+ --tbw-filter-btn-display: none;
113
+ --tbw-sort-indicator-display: none;
114
+ /* --- Shadows --- */
115
+ --tbw-color-shadow: light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.3));
116
+ /* --- Filter Panel Variables --- */
117
+ --tbw-filter-panel-bg: var(--_bg);
118
+ --tbw-filter-panel-fg: var(--_fg);
119
+ --tbw-filter-panel-border: var(--_border);
120
+ --tbw-filter-panel-radius: var(--_radius);
121
+ --tbw-filter-panel-shadow: light-dark(
122
+ rgba(0, 0, 0, 0.15),
123
+ rgba(0, 0, 0, 0.4)
124
+ );
125
+ --tbw-filter-input-bg: var(--_bg);
126
+ --tbw-filter-input-border: var(--_border);
127
+ --tbw-filter-input-radius: var(--_radius);
128
+ --tbw-filter-input-focus: var(--_focus);
129
+ --tbw-filter-accent: var(--_accent);
130
+ --tbw-filter-accent-fg: var(--_accent-fg);
131
+ --tbw-filter-hover: var(--_surface);
132
+ --tbw-filter-muted: var(--_fg-muted);
133
+ --tbw-filter-divider: var(--_border);
134
+ --tbw-filter-active-color: var(--_accent);
135
+ /* --- Filter Button (v1.3.1+) --- */
136
+ --tbw-filter-btn-padding: 8px 16px;
137
+ --tbw-filter-btn-font-weight: 500;
138
+ --tbw-filter-btn-min-height: var(--eds_clickbound_default__base, 48px);
139
+ --tbw-filter-search-padding: 6px 8px;
140
+ --tbw-filter-item-height: 36px;
141
+ /* --- Panel Layout --- */
142
+ --tbw-panel-padding: var(--eds_spacing_medium_small, 12px);
143
+ --tbw-panel-gap: var(--eds_spacing_small, 8px);
144
+ --tbw-animation-duration: 150ms;
145
+ }
146
+
147
+ /* ================================================================
148
+ * 2. Grid Styles
149
+ *
150
+ * All tbw-grid-scoped rules: compact mode, cell styling,
151
+ * editor hosts, and Angular Material overrides.
152
+ * ================================================================ */
153
+ tbw-grid {
154
+ /* --- Compact Mode --- */
155
+ }
156
+ tbw-grid.eds-compact {
157
+ --tbw-row-height: calc(var(--sto-base-font-size, 13px) * 1.385);
158
+ --tbw-header-height: calc(var(--sto-base-font-size, 13px) * 1.769);
159
+ }
160
+ tbw-grid {
161
+ /* --- Angular Material overrides for in-grid editors --- */
162
+ --mat-checkbox-state-layer-size: 20px;
163
+ --mdc-filled-text-field-container-color: transparent;
164
+ --mdc-filled-text-field-active-indicator-color: transparent;
165
+ --mdc-filled-text-field-hover-active-indicator-color: transparent;
166
+ --mdc-filled-text-field-focus-active-indicator-color: transparent;
167
+ --mdc-outlined-text-field-outline-color: transparent;
168
+ --mdc-outlined-text-field-focus-outline-color: transparent;
169
+ --mdc-outlined-text-field-hover-outline-color: transparent;
170
+ }
171
+ tbw-grid .mat-mdc-icon-button.mat-mdc-button-base {
172
+ --mdc-icon-button-state-layer-size: 28px;
173
+ --mat-icon-button-state-layer-size: 28px;
174
+ }
175
+ tbw-grid {
176
+ /* --- Toolbar --- */
177
+ }
178
+ tbw-grid .tbw-toolbar-content-slot {
179
+ display: flex;
180
+ place-items: center;
181
+ }
182
+ tbw-grid {
183
+ /* --- Filter button icon --- */
184
+ }
185
+ tbw-grid .tbw-filter-btn .material-icons-outlined {
186
+ font-size: 1.2em;
187
+ width: 1.2em;
188
+ height: 1.2em;
189
+ }
190
+ tbw-grid {
191
+ /* --- Cell defaults --- */
192
+ }
193
+ tbw-grid .cell {
194
+ line-height: 1em;
195
+ }
196
+ tbw-grid {
197
+ /* --- Numeric alignment --- */
198
+ }
199
+ tbw-grid .cell[data-type=number] {
200
+ text-align: right;
201
+ }
202
+ tbw-grid {
203
+ /* --- Data cell styling & editor host --- */
204
+ }
205
+ tbw-grid [part=cell], tbw-grid .data-grid-row .cell {
206
+ font-weight: 500;
207
+ height: var(--tbw-row-height);
208
+ }
209
+ tbw-grid [part=cell].editing, tbw-grid .data-grid-row .cell.editing {
210
+ padding: 2px 1px;
211
+ position: relative;
212
+ }
213
+ tbw-grid [part=cell].cell-focus, tbw-grid .data-grid-row .cell.cell-focus {
214
+ background: rgba(from var(--tbw-color-accent) r g b/8%);
215
+ }
216
+ tbw-grid [part=cell], tbw-grid .data-grid-row .cell {
217
+ /* Editor host — visual boundary for all editor types */
218
+ }
219
+ tbw-grid [part=cell] .tbw-editor-host, tbw-grid .data-grid-row .cell .tbw-editor-host {
220
+ border: 1px solid var(--_border);
221
+ background: var(--eds_ui_background__default, light-dark(#ffffff, #243746));
222
+ display: flex;
223
+ align-items: center;
224
+ width: 100%;
225
+ height: 100%;
226
+ box-sizing: border-box;
227
+ padding: var(--tbw-cell-padding, 0 6px);
228
+ }
229
+ tbw-grid [part=cell] .tbw-editor-host:has(.mat-form-field-invalid), tbw-grid .data-grid-row .cell .tbw-editor-host:has(.mat-form-field-invalid) {
230
+ border-color: var(--tbw-invalid-border-color);
231
+ }
232
+ tbw-grid [part=cell] .tbw-editor-host:focus-within, tbw-grid .data-grid-row .cell .tbw-editor-host:focus-within {
233
+ box-shadow: inset 0 -2px 0 0 var(--_accent);
234
+ outline: none;
235
+ }
236
+ tbw-grid [part=cell] .tbw-editor-host, tbw-grid .data-grid-row .cell .tbw-editor-host {
237
+ /* Framework component hosts: transparent for flex layout.
238
+ :where() for zero specificity so component :host styles can override.
239
+ Excludes form elements and custom editor boxes. */
240
+ }
241
+ tbw-grid [part=cell] .tbw-editor-host > :where(:not(input, select, textarea, [contenteditable], .tbw-editor-box)), tbw-grid .data-grid-row .cell .tbw-editor-host > :where(:not(input, select, textarea, [contenteditable], .tbw-editor-box)) {
242
+ display: contents;
243
+ }
244
+ tbw-grid [part=cell] .tbw-editor-host > .tbw-editor-box, tbw-grid .data-grid-row .cell .tbw-editor-host > .tbw-editor-box {
245
+ display: flex;
246
+ align-items: center;
247
+ width: 100%;
248
+ height: 100%;
249
+ }
250
+ tbw-grid [part=cell] .tbw-editor-host, tbw-grid .data-grid-row .cell .tbw-editor-host {
251
+ /* Simple text/number inputs */
252
+ }
253
+ tbw-grid [part=cell] .tbw-editor-host > input[type=text], tbw-grid [part=cell] .tbw-editor-host > input[type=number], tbw-grid .data-grid-row .cell .tbw-editor-host > input[type=text], tbw-grid .data-grid-row .cell .tbw-editor-host > input[type=number] {
254
+ border: none;
255
+ background: transparent;
256
+ font: inherit;
257
+ color: inherit;
258
+ padding: 0 4px;
259
+ outline: none;
260
+ width: 100%;
261
+ height: 100%;
262
+ }
263
+ tbw-grid [part=cell] .tbw-editor-host, tbw-grid .data-grid-row .cell .tbw-editor-host {
264
+ /* Native select */
265
+ }
266
+ tbw-grid [part=cell] .tbw-editor-host > select, tbw-grid .data-grid-row .cell .tbw-editor-host > select {
267
+ appearance: base-select;
268
+ border: none;
269
+ background: transparent;
270
+ font: inherit;
271
+ color: inherit;
272
+ padding: 0 4px;
273
+ outline: none;
274
+ width: 100%;
275
+ height: 100%;
276
+ cursor: pointer;
277
+ place-items: center;
278
+ }
279
+ tbw-grid [part=cell] .tbw-editor-host > select::picker(select), tbw-grid .data-grid-row .cell .tbw-editor-host > select::picker(select) {
280
+ appearance: base-select;
281
+ border: none;
282
+ border-radius: 4px;
283
+ padding: 8px 0;
284
+ overscroll-behavior: contain;
285
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
286
+ }
287
+ tbw-grid [part=cell] .tbw-editor-host > select option, tbw-grid .data-grid-row .cell .tbw-editor-host > select option {
288
+ font: inherit;
289
+ padding: 8px 16px;
290
+ min-height: 36px;
291
+ display: flex;
292
+ align-items: center;
293
+ border-radius: 0;
294
+ }
295
+ tbw-grid [part=cell] .tbw-editor-host > select option:hover, tbw-grid .data-grid-row .cell .tbw-editor-host > select option:hover {
296
+ background-color: light-dark(rgba(0, 0, 0, 0.04), rgba(255, 255, 255, 0.08));
297
+ }
298
+ tbw-grid [part=cell] .tbw-editor-host > select option:checked, tbw-grid .data-grid-row .cell .tbw-editor-host > select option:checked {
299
+ background-color: light-dark(rgba(0, 112, 121, 0.12), rgba(151, 202, 206, 0.2));
300
+ color: inherit;
301
+ }
302
+ tbw-grid {
303
+ /* --- Material form field stripping inside editor hosts ---
304
+ Lower specificity than cell-scoped rules above; strips
305
+ Angular Material chrome so .tbw-editor-host provides visuals. */
306
+ }
307
+ tbw-grid .tbw-editor-host .mat-mdc-form-field {
308
+ width: 100%;
309
+ height: 100%;
310
+ }
311
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-text-field-wrapper {
312
+ padding: 0 4px;
313
+ background: transparent;
314
+ height: 100%;
315
+ display: flex;
316
+ align-items: center;
317
+ }
318
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-form-field-flex {
319
+ height: 100%;
320
+ display: flex;
321
+ align-items: center;
322
+ }
323
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-form-field-focus-overlay {
324
+ display: none;
325
+ }
326
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mdc-line-ripple {
327
+ display: none;
328
+ }
329
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-form-field-infix {
330
+ padding: 0;
331
+ min-height: unset;
332
+ width: 100%;
333
+ display: flex;
334
+ align-items: center;
335
+ border: 0;
336
+ }
337
+ tbw-grid .tbw-editor-host .mat-mdc-form-field input.mat-mdc-input-element {
338
+ height: auto;
339
+ line-height: normal;
340
+ }
341
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-select {
342
+ height: 100%;
343
+ display: flex;
344
+ align-items: center;
345
+ }
346
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-select-trigger {
347
+ height: 100%;
348
+ display: flex;
349
+ align-items: center;
350
+ }
351
+ tbw-grid .tbw-editor-host .mat-mdc-form-field .mat-mdc-select-value {
352
+ display: flex;
353
+ align-items: center;
354
+ }
355
+ tbw-grid .tbw-editor-host .mat-mdc-form-field-subscript-wrapper {
356
+ display: none;
357
+ }
358
+ tbw-grid .tbw-editor-host .editor-checkbox {
359
+ display: flex;
360
+ align-items: center;
361
+ justify-content: center;
362
+ height: 100%;
363
+ }
364
+ tbw-grid .tbw-editor-host .mat-mdc-option.mdc-list-item {
365
+ background: var(--mat-autocomplete-background-color, var(--mat-sys-surface-container));
366
+ }
367
+
368
+ /* Compact mode when applied from a parent element */
369
+ .eds-compact tbw-grid {
370
+ --tbw-row-height: calc(var(--sto-base-font-size, 13px) * 1.385);
371
+ --tbw-header-height: calc(var(--sto-base-font-size, 13px) * 1.769);
372
+ }
373
+
374
+ /* ================================================================
375
+ * 3. Filter Panel Styles
376
+ * ================================================================ */
377
+ .tbw-filter-panel {
378
+ max-width: none;
379
+ max-height: none;
380
+ /* EDS underline inputs */
381
+ }
382
+ .tbw-filter-panel .tbw-filter-search-input, .tbw-filter-panel .tbw-filter-range-input, .tbw-filter-panel .tbw-filter-date-input {
383
+ height: var(--tbw-row-height);
384
+ border: none;
385
+ border-radius: 0;
386
+ box-shadow: inset 0px -1px 0px 0px var(--_fg-muted);
387
+ background: var(--_surface);
388
+ outline: 1px solid transparent;
389
+ outline-offset: 0px;
390
+ }
391
+ .tbw-filter-panel {
392
+ /* EDS-styled checkboxes */
393
+ }
394
+ .tbw-filter-panel .tbw-filter-checkbox {
395
+ appearance: none;
396
+ -webkit-appearance: none;
397
+ width: 18px;
398
+ height: 18px;
399
+ border: 2px solid var(--_fg-muted);
400
+ border-radius: 2px;
401
+ background: transparent;
402
+ cursor: pointer;
403
+ position: relative;
404
+ flex-shrink: 0;
405
+ transition: background-color 150ms, border-color 150ms;
406
+ }
407
+ .tbw-filter-panel .tbw-filter-checkbox:checked {
408
+ background-color: var(--_accent);
409
+ border-color: var(--_accent);
410
+ }
411
+ .tbw-filter-panel .tbw-filter-checkbox:checked::after {
412
+ content: "";
413
+ position: absolute;
414
+ left: 4px;
415
+ top: 1px;
416
+ width: 5px;
417
+ height: 9px;
418
+ border: solid var(--_accent-fg);
419
+ border-width: 0 2px 2px 0;
420
+ transform: rotate(45deg);
421
+ }
422
+ .tbw-filter-panel .tbw-filter-checkbox:indeterminate {
423
+ background-color: var(--_accent);
424
+ border-color: var(--_accent);
425
+ }
426
+ .tbw-filter-panel .tbw-filter-checkbox:indeterminate::after {
427
+ content: "";
428
+ position: absolute;
429
+ left: 2px;
430
+ top: 6px;
431
+ width: 10px;
432
+ height: 2px;
433
+ background: var(--_accent-fg);
434
+ }
435
+ .tbw-filter-panel .tbw-filter-checkbox:hover {
436
+ border-color: var(--eds_interactive_primary__hover, light-dark(#004f55, #ade2e6));
437
+ }
438
+ .tbw-filter-panel .tbw-filter-checkbox:focus-visible {
439
+ outline: 2px solid var(--_focus);
440
+ outline-offset: 2px;
441
+ }
442
+ .tbw-filter-panel .tbw-filter-value-item {
443
+ gap: 8px;
444
+ }
445
+
446
+ /* Search input with specificity escalation for filter panel context */
447
+ .tbw-filter-search-input,
448
+ .tbw-filter-panel .tbw-filter-search-input {
449
+ font-size: 1rem;
450
+ font-weight: 400;
451
+ letter-spacing: 0.025em;
452
+ line-height: 1.5em;
453
+ min-height: 36px;
454
+ box-sizing: border-box;
455
+ border-top: 0;
456
+ border-left: 0;
457
+ border-right: 0;
458
+ background: var(--eds_ui_background__light, light-dark(#f7f7f7, #2e3f4d));
459
+ }
460
+
461
+ /* ================================================================
462
+ * 4. Context Menu
463
+ *
464
+ * Appended to document.body (outside tbw-grid).
465
+ * CSS variables are copied from tbw-grid at render time.
466
+ * ================================================================ */
467
+ .tbw-context-menu {
468
+ --tbw-context-menu-bg: var(
469
+ --eds_ui_background__default,
470
+ light-dark(#ffffff, #132634)
471
+ );
472
+ --tbw-context-menu-fg: var(
473
+ --eds_text_static_icons__default,
474
+ light-dark(#3d3d3d, #ffffff)
475
+ );
476
+ --tbw-context-menu-border: var(
477
+ --eds_ui_background__medium,
478
+ light-dark(#dcdcdc, #3e4f5c)
479
+ );
480
+ --tbw-context-menu-hover: var(
481
+ --eds_interactive_table__cell__fill_hover,
482
+ light-dark(#eaeaea, #324d62)
483
+ );
484
+ --tbw-context-menu-danger: var(--eds_interactive_danger__resting, #eb0000);
485
+ --tbw-context-menu-muted: var(
486
+ --eds_text_static_icons__tertiary,
487
+ light-dark(#6f6f6f, #9ca6ac)
488
+ );
489
+ --tbw-context-menu-font-size: 0.873rem;
490
+ --tbw-context-menu-font-family: Equinor, sans-serif;
491
+ --tbw-context-menu-icon-size: 1.2rem;
492
+ --tbw-context-menu-item-padding: 8px 16px;
493
+ --tbw-context-menu-item-gap: 8px;
494
+ --tbw-context-menu-radius: var(--eds_shape_button_border_radius, 4px);
495
+ --tbw-context-menu-shadow: 0 2px 8px
496
+ light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.3));
497
+ }
498
+ .tbw-context-menu .tbw-context-menu-shortcut kbd {
499
+ background: var(--eds_ui_background__light, light-dark(#f7f7f7, #2e3f4d));
500
+ border: 1px solid var(--eds_ui_background__medium, light-dark(#dcdcdc, #3e4f5c));
501
+ border-radius: 4px;
502
+ padding: 2px 6px;
503
+ font-family: "Equinor Mono", "Consolas", "Courier New", monospace;
504
+ font-size: 0.75rem;
505
+ line-height: 1.4;
506
+ }
507
+ .tbw-context-menu .tbw-context-menu-icon .material-icons {
508
+ font-size: var(--tbw-context-menu-icon-size, 20px);
509
+ line-height: 1;
510
+ vertical-align: middle;
511
+ }
512
+ .tbw-context-menu .tbw-context-menu-item.danger .tbw-context-menu-icon .material-icons {
513
+ color: inherit;
514
+ }
515
+
516
+ /* ================================================================
517
+ * 5. Overlay Panel (BaseOverlayEditor)
518
+ * ================================================================ */
519
+ .tbw-overlay-panel {
520
+ --tbw-overlay-bg: var(
521
+ --eds_ui_background__default,
522
+ light-dark(#ffffff, #132634)
523
+ );
524
+ --tbw-overlay-border: var(
525
+ --eds_ui_background__medium,
526
+ light-dark(#dcdcdc, #3e4f5c)
527
+ );
528
+ --tbw-overlay-shadow: 0 4px 12px
529
+ light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.4));
530
+ color: var(--eds_text_static_icons__default, light-dark(#3d3d3d, #ffffff));
531
+ }
532
+
533
+ /* ================================================================
534
+ * 6. Dark Mode
535
+ * ================================================================ */
536
+ body.sto-dark-theme tbw-grid,
537
+ body.sto-dark-theme .tbw-filter-panel,
538
+ body.sto-dark-theme .tbw-context-menu,
539
+ body.sto-dark-theme .tbw-overlay-panel {
540
+ color-scheme: dark;
541
+ }