@genesislcap/rapid-design-system 15.24.2 → 15.25.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.
@@ -2,73 +2,83 @@
2
2
  // =============================================================================
3
3
  // AUTO-GENERATED FILE — DO NOT EDIT BY HAND.
4
4
  //
5
- // Source: flexlayout-react@0.8.19 /style/dark.css + flexlayout-react.overrides.css
5
+ // Source: flexlayout-react@0.10.8 /style/dark.css + flexlayout-react.overrides.css
6
6
  // Regenerate: pnpm --filter @genesislcap/rapid-design-system flexlayout:generate
7
7
  //
8
8
  // The package build regenerates this; CI's "Check working tree" step fails the
9
9
  // build if a flexlayout-react bump is not accompanied by a regenerated theme.
10
10
  // =============================================================================
11
11
  /** The flexlayout-react version this theme was generated against. */
12
- export const RAPID_FLEXLAYOUT_REACT_VERSION = '0.8.19';
12
+ export const RAPID_FLEXLAYOUT_REACT_VERSION = '0.10.8';
13
13
  /** Merged flexlayout-react base theme + Rapid Design System overrides. */
14
14
  export const FLEXLAYOUT_REACT_THEME_CSS = `/* ============================================================================
15
- * flexlayout-react base theme — VENDORED from flexlayout-react@0.8.19 (style/dark.css).
15
+ * flexlayout-react base theme — VENDORED from flexlayout-react@0.10.8 (style/dark.css).
16
16
  * ========================================================================== */
17
+ @charset "UTF-8";
17
18
  .flexlayout__layout {
18
- --color-text: #eeeeee;
19
- --color-background: black;
20
- --color-base: black;
21
- --color-1: rgb(17.85, 17.85, 17.85);
22
- --color-2: rgb(25.5, 25.5, 25.5);
23
- --color-3: rgb(38.25, 38.25, 38.25);
24
- --color-4: #333333;
25
- --color-5: rgb(63.75, 63.75, 63.75);
26
- --color-6: rgb(76.5, 76.5, 76.5);
27
- --color-drag1: rgb(207, 232, 255);
28
- --color-drag2: rgb(183, 209, 181);
29
- --color-drag1-background: rgba(128, 128, 128, 0.15);
30
- --color-drag2-background: rgba(128, 128, 128, 0.15);
31
- --font-size: medium;
32
- --font-family: Roboto, Arial, sans-serif;
33
- --color-overflow: gray;
34
- --color-icon: gray;
35
- --color-tabset-background: var(--color-1);
36
- --color-tabset-background-selected: var(--color-1);
37
- --color-tabset-background-maximized: var(--color-6);
38
- --color-tabset-divider-line: var(--color-4);
39
- --color-tabset-header-background: var(--color-1);
40
- --color-tabset-header: var(--color-text);
41
- --color-border-tab-content: var(--color-background);
42
- --color-border-background: var(--color-1);
43
- --color-border-divider-line: var(--color-4);
44
- --color-tab-content: var(--color-background);
45
- --color-tab-selected: var(--color-text);
46
- --color-tab-selected-background: var(--color-4);
47
- --color-tab-unselected: gray;
48
- --color-tab-unselected-background: transparent;
49
- --color-tab-textbox: var(--color-text);
50
- --color-tab-textbox-background: var(--color-3);
51
- --color-border-tab-selected: var(--color-text);
52
- --color-border-tab-selected-background: var(--color-4);
53
- --color-border-tab-unselected: gray;
54
- --color-border-tab-unselected-background: var(--color-2);
55
- --color-splitter: var(--color-2);
56
- --color-splitter-hover: var(--color-4);
57
- --color-splitter-drag: var(--color-5);
58
- --color-drag-rect-border: var(--color-4);
59
- --color-drag-rect-background: var(--color-1);
60
- --color-drag-rect: var(--color-text);
61
- --color-popup-border: var(--color-6);
62
- --color-popup-unselected: var(--color-text);
63
- --color-popup-unselected-background: var(--color-background);
64
- --color-popup-selected: var(--color-text);
65
- --color-popup-selected-background: var(--color-4);
66
- --color-edge-marker: gray;
67
- --color-edge-icon: #eee;
68
- --color-mini-scroll-indicator: rgba(128, 128, 128, 0.5);
69
- --color-mini-scroll-indicator-hovered: rgba(128, 128, 128, 0.8);
70
- --size-mini-scroll-indicator: 3px;
71
- --color-toolbar-button-hover: var(--color-4);
19
+ --color-text: var(--flexlayout-color-text, #eeeeee);
20
+ --color-background: var(--flexlayout-color-background, black);
21
+ --color-base: var(--flexlayout-color-base, black);
22
+ --color-1: var(--flexlayout-color-1, rgb(7%, 7%, 7%));
23
+ --color-2: var(--flexlayout-color-2, rgb(10%, 10%, 10%));
24
+ --color-3: var(--flexlayout-color-3, rgb(15%, 15%, 15%));
25
+ --color-4: var(--flexlayout-color-4, #333333);
26
+ --color-5: var(--flexlayout-color-5, rgb(25%, 25%, 25%));
27
+ --color-6: var(--flexlayout-color-6, rgb(30%, 30%, 30%));
28
+ --color-drag1: var(--flexlayout-color-drag1, rgb(207, 232, 255));
29
+ --color-drag2: var(--flexlayout-color-drag2, rgb(183, 209, 181));
30
+ --color-drag1-background: var(--flexlayout-color-drag1-background, rgba(128, 128, 128, 0.15));
31
+ --color-drag2-background: var(--flexlayout-color-drag2-background, rgba(128, 128, 128, 0.15));
32
+ --font-size: var(--flexlayout-font-size, medium);
33
+ --font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);
34
+ --font-weight: var(--flexlayout-font-weight, normal);
35
+ --splitter-size: var(--flexlayout-splitter-size, 8px);
36
+ --splitter-active-size: var(--flexlayout-splitter-active-size, 8px);
37
+ --splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);
38
+ --color-overflow: var(--flexlayout-color-overflow, gray);
39
+ --color-icon: var(--flexlayout-color-icon, gray);
40
+ --color-focus: var(--flexlayout-color-focus, #93c5fd);
41
+ --color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));
42
+ --color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));
43
+ --color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));
44
+ --color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-4));
45
+ --color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));
46
+ --color-border-background: var(--flexlayout-color-border-background, var(--color-1));
47
+ --color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-4));
48
+ --color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));
49
+ --color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));
50
+ --color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-4));
51
+ --color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);
52
+ --color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);
53
+ --color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));
54
+ --color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));
55
+ --color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));
56
+ --color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-4));
57
+ --color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);
58
+ --color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));
59
+ --color-splitter: var(--flexlayout-color-splitter, var(--color-2));
60
+ --color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));
61
+ --color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-5));
62
+ --color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));
63
+ --color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-4));
64
+ --color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-1));
65
+ --color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));
66
+ --color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));
67
+ --color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));
68
+ --color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));
69
+ --color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));
70
+ --color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-4));
71
+ --color-edge-marker: var(--flexlayout-color-edge-marker, gray);
72
+ --color-edge-icon: var(--flexlayout-color-edge-icon, #eee);
73
+ --color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, 0.5));
74
+ --color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, 0.8));
75
+ --size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);
76
+ --color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-4));
77
+ --color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background));
78
+ --color-tabgroup-pill-text: var(--flexlayout-color-tabgroup-pill-text, black);
79
+ --color-tabgroup-default: var(--flexlayout-color-tabgroup-default, #9e9e9e);
80
+ --color-tabgroup-menu-palette: var(--flexlayout-color-tabgroup-menu-palette, #d97a7a, #dd8a4a, #cbc688, #94b870, #7ab0b2, #7db6c6, #7895c4, #a394cf, #d187b2, #bf9e81);
81
+ --tabgroup-pill-radius: var(--flexlayout-tabgroup-pill-radius, 10px);
72
82
  }
73
83
 
74
84
  /*
@@ -81,9 +91,12 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
81
91
  bottom: 0;
82
92
  position: absolute;
83
93
  display: flex;
84
- overflow: hidden;
85
94
  background-color: var(--color-background);
86
95
  }
96
+ .flexlayout__layout_metrics {
97
+ position: absolute;
98
+ top: -30000px;
99
+ }
87
100
  .flexlayout__layout_overlay {
88
101
  left: 0;
89
102
  top: 0;
@@ -98,9 +111,9 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
98
111
  z-index: 100;
99
112
  display: flex;
100
113
  flex-direction: column;
101
- align-items: start;
114
+ align-items: flex-start;
102
115
  }
103
- .flexlayout__layout_moveables {
116
+ .flexlayout__layout_moveables_home {
104
117
  visibility: hidden;
105
118
  position: absolute;
106
119
  width: 100px;
@@ -128,6 +141,7 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
128
141
  min-width: 0;
129
142
  min-height: 0;
130
143
  flex-grow: 1;
144
+ position: relative;
131
145
  }
132
146
  .flexlayout__splitter {
133
147
  display: flex;
@@ -136,6 +150,41 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
136
150
  background-color: var(--color-splitter);
137
151
  touch-action: none;
138
152
  z-index: 10;
153
+ position: relative;
154
+ }
155
+ .flexlayout__splitter:focus-visible {
156
+ outline: 2px solid var(--color-focus);
157
+ outline-offset: -2px;
158
+ }
159
+ .flexlayout__splitter_horz {
160
+ width: var(--splitter-size);
161
+ min-width: var(--splitter-size);
162
+ }
163
+ .flexlayout__splitter_horz::before {
164
+ content: "";
165
+ position: absolute;
166
+ top: 0;
167
+ bottom: 0;
168
+ /* Center the hit area over the thin line */
169
+ left: 50%;
170
+ width: var(--splitter-active-size);
171
+ transform: translateX(-50%);
172
+ z-index: 1;
173
+ }
174
+ .flexlayout__splitter_vert {
175
+ height: var(--splitter-size);
176
+ min-height: var(--splitter-size);
177
+ }
178
+ .flexlayout__splitter_vert::before {
179
+ content: "";
180
+ position: absolute;
181
+ left: 0;
182
+ right: 0;
183
+ /* Center the hit area over the thin line */
184
+ top: 50%;
185
+ height: var(--splitter-active-size);
186
+ transform: translateY(-50%);
187
+ z-index: 1;
139
188
  }
140
189
  @media (hover: hover) {
141
190
  .flexlayout__splitter:hover {
@@ -155,8 +204,9 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
155
204
  background-color: var(--color-splitter-drag);
156
205
  }
157
206
  .flexlayout__splitter_handle {
158
- background-color: #ccc;
207
+ background-color: var(--color-splitter-handle);
159
208
  border-radius: 3px;
209
+ visibility: var(--splitter-handle-visibility);
160
210
  }
161
211
  .flexlayout__splitter_handle_horz {
162
212
  width: 3px;
@@ -166,10 +216,6 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
166
216
  width: 30px;
167
217
  height: 3px;
168
218
  }
169
- .flexlayout__splitter_extra {
170
- touch-action: none;
171
- background-color: transparent;
172
- }
173
219
  .flexlayout__outline_rect {
174
220
  position: absolute;
175
221
  pointer-events: none;
@@ -254,25 +300,15 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
254
300
  .flexlayout__tabset_leading {
255
301
  display: flex;
256
302
  }
257
- .flexlayout__tabset_header {
258
- display: flex;
259
- align-items: center;
260
- padding: 3px 3px 3px 5px;
261
- box-sizing: border-box;
262
- border-bottom: 1px solid var(--color-tabset-divider-line);
263
- color: var(--color-tabset-header);
264
- background-color: var(--color-tabset-header-background);
265
- font-size: var(--font-size);
266
- }
267
- .flexlayout__tabset_header_content {
268
- flex-grow: 1;
269
- }
270
303
  .flexlayout__tabset_tabbar_outer {
271
304
  box-sizing: border-box;
272
305
  background-color: var(--color-tabset-background);
273
306
  overflow: hidden;
274
307
  display: flex;
308
+ align-items: center;
309
+ min-height: 1.5em;
275
310
  font-size: var(--font-size);
311
+ font-weight: var(--font-weight);
276
312
  }
277
313
  .flexlayout__tabset_tabbar_outer_top {
278
314
  padding: 0px 2px 0px 2px;
@@ -299,6 +335,7 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
299
335
  padding-right: 4px;
300
336
  box-sizing: border-box;
301
337
  white-space: nowrap;
338
+ align-items: center;
302
339
  }
303
340
  .flexlayout__tabset_tabbar_inner_tab_container_top {
304
341
  border-top: 2px solid transparent;
@@ -319,12 +356,137 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
319
356
  white-space: nowrap;
320
357
  box-sizing: border-box;
321
358
  }
359
+ .flexlayout__group_pill {
360
+ display: inline-flex;
361
+ align-items: center;
362
+ gap: 0.35em;
363
+ padding: 2px 8px 2px 8px;
364
+ margin: 2px 2px;
365
+ border-radius: var(--tabgroup-pill-radius) 0 0 var(--tabgroup-pill-radius);
366
+ border: 1px solid var(--color-tabset-divider-line);
367
+ border-right: none;
368
+ background-color: var(--color-base);
369
+ color: var(--color-tabgroup-pill-text);
370
+ cursor: pointer;
371
+ user-select: none;
372
+ white-space: nowrap;
373
+ box-sizing: border-box;
374
+ }
375
+ .flexlayout__group_pill:focus-visible {
376
+ outline: 2px solid var(--color-focus);
377
+ }
378
+ .flexlayout__group_pill_collapsed {
379
+ border-radius: var(--tabgroup-pill-radius);
380
+ border-right: 1px solid var(--color-tabset-divider-line);
381
+ }
382
+ .flexlayout__group_pill_underline {
383
+ border-radius: var(--tabgroup-pill-radius);
384
+ border-right: 1px solid var(--color-tabset-divider-line);
385
+ }
386
+ .flexlayout__group_pill_name {
387
+ max-width: 10em;
388
+ overflow: hidden;
389
+ text-overflow: ellipsis;
390
+ }
391
+ .flexlayout__group_pill_name::before {
392
+ content: "​";
393
+ }
394
+ .flexlayout__group_pill_count {
395
+ opacity: 0.7;
396
+ font-size: 0.85em;
397
+ }
398
+ .flexlayout__group_end_marker {
399
+ display: inline-block;
400
+ border-radius: 0 var(--tabgroup-pill-radius) var(--tabgroup-pill-radius) 0;
401
+ border: 1px solid var(--color-tabset-divider-line);
402
+ border-left: none;
403
+ background-color: var(--color-base);
404
+ padding: 2px 7px 2px 7px;
405
+ margin: 2px 2px;
406
+ cursor: pointer;
407
+ box-sizing: border-box;
408
+ }
409
+ .flexlayout__group_end_marker::before {
410
+ content: "​";
411
+ }
412
+ .flexlayout__tab_button_grouped_underline {
413
+ position: relative;
414
+ }
415
+ .flexlayout__tab_button_grouped_underline::after {
416
+ content: "";
417
+ position: absolute;
418
+ left: 10px;
419
+ right: 10px;
420
+ bottom: 0;
421
+ height: var(--underline_height, 2px);
422
+ border-radius: calc(var(--underline_height, 2px) / 2);
423
+ background-color: var(--flexlayout-group-color, transparent);
424
+ pointer-events: none;
425
+ }
426
+ .flexlayout__group_rename {
427
+ display: flex;
428
+ gap: 8px;
429
+ align-items: center;
430
+ }
431
+ .flexlayout__group_rename_input {
432
+ padding: 3px;
433
+ border-radius: 5px;
434
+ border: 1px solid var(--color-popup-border);
435
+ background-color: var(--color-tab-textbox-background, var(--color-3));
436
+ color: var(--color-tab-textbox, var(--color-text));
437
+ }
438
+ .flexlayout__group_picker {
439
+ display: flex;
440
+ flex-wrap: wrap;
441
+ gap: 4px;
442
+ padding: 2px 0;
443
+ max-width: 18em;
444
+ }
445
+ .flexlayout__group_picker_item {
446
+ border: 1px solid var(--color-popup-border);
447
+ border-radius: 10px;
448
+ padding: 0 8px;
449
+ line-height: 1.6em;
450
+ font-size: 0.9em;
451
+ cursor: pointer;
452
+ background-color: var(--color-base);
453
+ color: var(--color-popup-unselected);
454
+ }
455
+ .flexlayout__group_picker_item:hover {
456
+ filter: brightness(0.95);
457
+ }
458
+ .flexlayout__group_color_picker {
459
+ display: flex;
460
+ flex-wrap: wrap;
461
+ align-items: center;
462
+ gap: 4px;
463
+ padding: 2px 0;
464
+ max-width: 14em;
465
+ }
466
+ .flexlayout__group_color_picker_swatch {
467
+ width: 18px;
468
+ height: 18px;
469
+ border-radius: 50%;
470
+ border: 1px solid var(--color-popup-border);
471
+ cursor: pointer;
472
+ padding: 0;
473
+ }
474
+ .flexlayout__group_color_picker_swatch:hover {
475
+ transform: scale(1.1);
476
+ }
477
+ .flexlayout__group_color_picker_custom {
478
+ display: inline-flex;
479
+ align-items: center;
480
+ }
481
+ .flexlayout__group_color_picker_custom input[type=color] {
482
+ cursor: pointer;
483
+ }
322
484
  .flexlayout__tab {
323
485
  overflow: hidden;
324
486
  box-sizing: border-box;
325
487
  background-color: var(--color-tab-content);
326
488
  color: var(--color-text);
327
- position: relative;
489
+ position: absolute;
328
490
  }
329
491
  .flexlayout__tab_moveable {
330
492
  position: relative;
@@ -343,12 +505,35 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
343
505
  bottom: 0;
344
506
  background-color: rgba(0, 0, 0, 0.2392156863);
345
507
  }
508
+ .flexlayout__tab_border_overlay {
509
+ z-index: 1000;
510
+ }
511
+ .flexlayout__tab_overlay_raised {
512
+ z-index: 1001;
513
+ }
514
+ .flexlayout__tab_layout_container {
515
+ position: relative;
516
+ height: 100%;
517
+ box-sizing: border-box;
518
+ }
519
+ .flexlayout__tab_layout_container_user {
520
+ position: relative;
521
+ flex-grow: 1;
522
+ box-sizing: border-box;
523
+ }
346
524
  .flexlayout__tab_button {
347
525
  display: flex;
348
526
  gap: 0.3em;
349
527
  align-items: center;
350
528
  box-sizing: border-box;
351
529
  padding: 3px 0.5em;
530
+ font-weight: var(--font-weight);
531
+ }
532
+ .flexlayout__tab_button:focus-visible {
533
+ outline: 2px solid var(--color-focus);
534
+ outline-offset: -2px;
535
+ }
536
+ .flexlayout__tab_button {
352
537
  cursor: pointer;
353
538
  }
354
539
  .flexlayout__tab_button_stretch {
@@ -384,6 +569,9 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
384
569
  .flexlayout__tab_button_leading {
385
570
  display: flex;
386
571
  }
572
+ .flexlayout__tab_button_pin {
573
+ display: flex;
574
+ }
387
575
  .flexlayout__tab_button_content {
388
576
  display: flex;
389
577
  text-wrap: nowrap;
@@ -392,6 +580,7 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
392
580
  border: none;
393
581
  font-family: var(--font-family);
394
582
  font-size: var(--font-size);
583
+ font-weight: var(--font-weight);
395
584
  color: var(--color-tab-textbox);
396
585
  background-color: var(--color-tab-textbox-background);
397
586
  border: 1px inset var(--color-1);
@@ -399,7 +588,8 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
399
588
  width: 10em;
400
589
  }
401
590
  .flexlayout__tab_button_textbox:focus {
402
- outline: none;
591
+ outline: 2px solid var(--color-focus);
592
+ outline-offset: -1px;
403
593
  }
404
594
  .flexlayout__tab_button_trailing {
405
595
  display: flex;
@@ -442,6 +632,10 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
442
632
  background-color: transparent;
443
633
  padding: 1px;
444
634
  }
635
+ .flexlayout__tab_toolbar_icon:focus-visible {
636
+ outline: 2px solid var(--color-focus);
637
+ outline-offset: -2px;
638
+ }
445
639
  .flexlayout__tab_toolbar_button {
446
640
  border: none;
447
641
  outline: none;
@@ -451,6 +645,10 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
451
645
  border-radius: 4px;
452
646
  padding: 1px;
453
647
  }
648
+ .flexlayout__tab_toolbar_button:focus-visible {
649
+ outline: 2px solid var(--color-focus);
650
+ outline-offset: -2px;
651
+ }
454
652
  @media (hover: hover) {
455
653
  .flexlayout__tab_toolbar_button:hover {
456
654
  background-color: var(--color-toolbar-button-hover);
@@ -466,8 +664,9 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
466
664
  box-sizing: border-box;
467
665
  overflow: hidden;
468
666
  display: flex;
469
- font-size: var(--font-size);
470
667
  font-family: var(--font-family);
668
+ font-size: var(--font-size);
669
+ font-weight: var(--font-weight);
471
670
  color: var(--color-border);
472
671
  background-color: var(--color-border-background);
473
672
  }
@@ -476,6 +675,34 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
476
675
  overflow: hidden;
477
676
  background-color: var(--color-border-tab-content);
478
677
  }
678
+ .flexlayout__border_tab_overlay {
679
+ position: absolute;
680
+ z-index: 100;
681
+ }
682
+ .flexlayout__border_tab_overlay_top {
683
+ top: 0;
684
+ left: 0;
685
+ right: 0;
686
+ flex-direction: column;
687
+ }
688
+ .flexlayout__border_tab_overlay_bottom {
689
+ bottom: 0;
690
+ left: 0;
691
+ right: 0;
692
+ flex-direction: column;
693
+ }
694
+ .flexlayout__border_tab_overlay_left {
695
+ left: 0;
696
+ top: 0;
697
+ bottom: 0;
698
+ flex-direction: row;
699
+ }
700
+ .flexlayout__border_tab_overlay_right {
701
+ right: 0;
702
+ top: 0;
703
+ bottom: 0;
704
+ flex-direction: row;
705
+ }
479
706
  .flexlayout__border_leading {
480
707
  display: flex;
481
708
  }
@@ -511,6 +738,7 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
511
738
  .flexlayout__border_inner_tab_container {
512
739
  white-space: nowrap;
513
740
  display: flex;
741
+ align-items: center;
514
742
  padding-left: 2px;
515
743
  padding-right: 2px;
516
744
  box-sizing: border-box;
@@ -525,6 +753,11 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
525
753
  transform-origin: top right;
526
754
  transform: rotate(-90deg);
527
755
  }
756
+ .flexlayout__border_inner_tab_container_left_down {
757
+ flex-direction: row;
758
+ transform-origin: top left;
759
+ transform: rotate(90deg);
760
+ }
528
761
  .flexlayout__border_tab_divider {
529
762
  width: 4px;
530
763
  }
@@ -537,6 +770,11 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
537
770
  margin: 2px 0px;
538
771
  box-sizing: border-box;
539
772
  white-space: nowrap;
773
+ font-weight: var(--font-weight);
774
+ }
775
+ .flexlayout__border_button:focus-visible {
776
+ outline: 2px solid var(--color-focus);
777
+ outline-offset: -2px;
540
778
  }
541
779
  .flexlayout__border_button--selected {
542
780
  background-color: var(--color-border-tab-selected-background);
@@ -592,6 +830,10 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
592
830
  border-radius: 4px;
593
831
  padding: 1px;
594
832
  }
833
+ .flexlayout__border_toolbar_button:focus-visible {
834
+ outline: 2px solid var(--color-focus);
835
+ outline-offset: -2px;
836
+ }
595
837
  @media (hover: hover) {
596
838
  .flexlayout__border_toolbar_button:hover {
597
839
  background-color: var(--color-toolbar-button-hover);
@@ -609,6 +851,7 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
609
851
  .flexlayout__popup_menu {
610
852
  font-size: var(--font-size);
611
853
  font-family: var(--font-family);
854
+ font-weight: var(--font-weight);
612
855
  }
613
856
  .flexlayout__popup_menu_item {
614
857
  padding: 2px 0.5em;
@@ -616,16 +859,35 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
616
859
  cursor: pointer;
617
860
  border-radius: 2px;
618
861
  }
862
+ .flexlayout__popup_menu_item.flexlayout__popup_menu_item_grouped {
863
+ border-left: 5px solid var(--flexlayout-group-color, var(--color-tabgroup-default));
864
+ padding-left: calc(0.5em - 5px);
865
+ border-radius: 0 !important;
866
+ }
867
+ .flexlayout__popup_menu_item:focus-visible {
868
+ outline: 2px solid var(--color-focus);
869
+ outline-offset: -2px;
870
+ }
619
871
  .flexlayout__popup_menu_item--selected {
620
872
  font-weight: 500;
621
873
  background-color: var(--color-tab-selected-background);
622
874
  color: var(--color-tab-selected);
623
875
  }
876
+ .flexlayout__popup_menu_item--disabled {
877
+ opacity: 0.4;
878
+ cursor: default;
879
+ pointer-events: none;
880
+ }
624
881
  @media (hover: hover) {
625
882
  .flexlayout__popup_menu_item:hover {
626
883
  background-color: var(--color-6);
627
884
  }
628
885
  }
886
+ .flexlayout__popup_menu_divider {
887
+ height: 1px;
888
+ margin: 4px 2px;
889
+ background-color: var(--color-popup-border);
890
+ }
629
891
  .flexlayout__popup_menu_container {
630
892
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
631
893
  border: 1px solid var(--color-popup-border);
@@ -633,12 +895,75 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
633
895
  background: var(--color-popup-unselected-background);
634
896
  border-radius: 3px;
635
897
  position: absolute;
636
- z-index: 1000;
898
+ z-index: 3000;
637
899
  max-height: 50%;
638
900
  min-width: 100px;
639
901
  overflow: auto;
640
902
  padding: 2px;
641
903
  }
904
+ .flexlayout__float_window {
905
+ box-sizing: border-box;
906
+ background-color: var(--color-tabset-background);
907
+ border-radius: 5px;
908
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
909
+ display: flex;
910
+ flex-direction: column;
911
+ overflow: hidden;
912
+ z-index: 2000;
913
+ }
914
+ .flexlayout__float_window_header {
915
+ display: flex;
916
+ align-items: center;
917
+ padding: 5px 5px;
918
+ background-color: var(--color-float-window-header-background);
919
+ border-bottom: 1px solid var(--color-tabset-divider-line);
920
+ cursor: move;
921
+ user-select: none;
922
+ font-family: var(--font-family);
923
+ font-size: 0.8em;
924
+ min-height: 15px;
925
+ }
926
+ .flexlayout__float_window_header_title {
927
+ overflow: hidden;
928
+ text-overflow: ellipsis;
929
+ white-space: nowrap;
930
+ }
931
+ .flexlayout__float_window_drag_handle {
932
+ display: flex;
933
+ align-items: center;
934
+ padding: 0 4px;
935
+ opacity: 0.7;
936
+ cursor: grab;
937
+ }
938
+ .flexlayout__float_window_drag_handle:hover {
939
+ opacity: 1;
940
+ }
941
+ .flexlayout__float_window_drag_handle:active {
942
+ cursor: grabbing;
943
+ }
944
+ .flexlayout__float_window_button {
945
+ display: flex;
946
+ align-items: center;
947
+ padding: 0 4px;
948
+ margin: 0;
949
+ border: none;
950
+ background: none;
951
+ opacity: 0.7;
952
+ cursor: pointer;
953
+ }
954
+ .flexlayout__float_window_button:hover {
955
+ opacity: 1;
956
+ }
957
+ .flexlayout__float_window_content {
958
+ position: relative;
959
+ overflow: auto;
960
+ flex-grow: 1;
961
+ display: flex;
962
+ flex-direction: column;
963
+ min-height: 0;
964
+ min-width: 0;
965
+ margin: 5px;
966
+ }
642
967
  .flexlayout__floating_window _body {
643
968
  height: 100%;
644
969
  }
@@ -664,11 +989,11 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
664
989
  }
665
990
  .flexlayout__border_sizer {
666
991
  position: absolute;
667
- top: -30000px;
668
992
  padding-top: 6px;
669
993
  padding-bottom: 5px;
670
994
  font-size: var(--font-size);
671
995
  font-family: var(--font-family);
996
+ font-weight: var(--font-weight);
672
997
  }
673
998
  .flexlayout__mini_scrollbar {
674
999
  position: absolute;
@@ -701,9 +1026,6 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
701
1026
  /*
702
1027
  dark theme overrides
703
1028
  */
704
- .flexlayout__tabset_header {
705
- box-shadow: inset 0 0 3px 0 rgba(136, 136, 136, 0.54);
706
- }
707
1029
  .flexlayout__tabset-selected {
708
1030
  background-image: linear-gradient(var(--color-background), var(--color-4));
709
1031
  }
@@ -772,6 +1094,8 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
772
1094
  --color-tab-selected-background: var(--accent-fill-rest);
773
1095
  --color-splitter-drag: var(--accent-fill-rest);
774
1096
  --color-splitter-hover: var(--accent-fill-hover);
1097
+
1098
+ --tabgroup-pill-radius: 9999px;
775
1099
  }
776
1100
 
777
1101
  .flexlayout__tabset-selected,
@@ -853,29 +1177,25 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
853
1177
  }
854
1178
 
855
1179
  .flexlayout__tab_button {
856
- border-right-style: solid;
857
- border-right-width: var(--tab-rest-border-width, 1px);
858
- border-right-color: var(--tab-rest-border-color, var(--neutral-stroke-rest));
859
1180
  padding: 0 calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);
860
1181
  gap: 8px;
861
-
862
- &:first-child {
863
- border-left-style: solid;
864
- border-left-width: var(--tab-rest-border-width, 1px);
865
- border-left-color: var(--tab-rest-border-color, var(--neutral-stroke-rest));
866
- }
1182
+ height: 100%;
867
1183
  }
868
1184
 
869
1185
  .flexlayout__tab_button--selected {
870
1186
  position: relative;
871
1187
  color: var(--accent-foreground-rest) !important;
872
1188
  background: var(--tab-active-background-color, var(--neutral-layer-card-container));
1189
+
1190
+ /*
1191
+ * Keep this border-* trio: themes that mark selection with an underline rather than a
1192
+ * background (corporate sets \`--tab-active-border-width: 0 0 2px 0\`) have nothing to
1193
+ * hang the underline on without it. Defaults to 0 because the spacers now draw the
1194
+ * separators — the old \`0 1px 0 0\` default would double up against them.
1195
+ */
873
1196
  border-style: solid;
874
- border-width: var(--tab-active-border-width, 0 1px 0 0);
1197
+ border-width: var(--tab-active-border-width, 0);
875
1198
  border-color: var(--tab-active-border-color, var(--neutral-stroke-rest));
876
- .flexlayout__tab_button_content {
877
- font-weight: 700;
878
- }
879
1199
  }
880
1200
 
881
1201
  .flexlayout__tab {
@@ -896,8 +1216,29 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
896
1216
  }
897
1217
  }
898
1218
 
899
- .flexlayout__tabset_tab_divider {
1219
+ /*
1220
+ * Tab separators live on flexlayout's own spacer elements, not as borders on the tab
1221
+ * buttons. flexlayout emits a spacer before every tab, group pill and end marker, plus a
1222
+ * trailing one, and every spacer carries \`_tab_spacer\` — \`_tab_divider\` is an extra class
1223
+ * on just the subset sitting between two tabs. Styling \`_tab_spacer\` therefore covers the
1224
+ * dividers too, and separates every element in the strip including the leading and
1225
+ * trailing edges. It also needs no positional selectors: the previous rule bordered the
1226
+ * buttons and reached the leading edge via \`:nth-of-type(2)\`, which assumed exactly one
1227
+ * leading spacer, and a leading group pill or \`tabGroupType: 'splitpill'\` pushes more.
1228
+ *
1229
+ * Driven by the same \`--tab-rest-border-*\` tokens the buttons used before, so the
1230
+ * separators stay consistent with rapid-tabs (tabs.styles.ts) and foundation-layout
1231
+ * (layout.styles.ts), which read the same pair. Set \`--tab-rest-border-color: transparent\`
1232
+ * (or \`--tab-rest-border-width: 0\`) to hide them.
1233
+ *
1234
+ * \`align-self: stretch\` is required because the tab container centres its items, so the
1235
+ * spacer would otherwise collapse to its content height and the line would not show.
1236
+ */
1237
+ .flexlayout__tabset_tab_spacer {
1238
+ align-self: stretch;
900
1239
  width: 0;
1240
+ border-left: var(--tab-rest-border-width, 1px) solid
1241
+ var(--tab-rest-border-color, var(--neutral-stroke-rest));
901
1242
  }
902
1243
 
903
1244
  .flexlayout__tab_button_trailing {
@@ -978,4 +1319,53 @@ export const FLEXLAYOUT_REACT_THEME_CSS = `/* ==================================
978
1319
  bottom: 8px;
979
1320
  left: 8px;
980
1321
  right: 8px;
1322
+ }
1323
+
1324
+ .flexlayout__mini_scrollbar_container {
1325
+ height: 100%;
1326
+ }
1327
+
1328
+ .flexlayout__group_pill {
1329
+ margin: 2px 0 2px 8px;
1330
+ height: calc(100% - 12px);
1331
+ font-size: 11px;
1332
+ + .flexlayout__tabset_tab_spacer {
1333
+ display: none;
1334
+ }
1335
+ }
1336
+
1337
+ .flexlayout__group_pill_collapsed {
1338
+ margin: 2px 8px;
1339
+ + .flexlayout__tabset_tab_spacer {
1340
+ display: block;
1341
+ }
1342
+ }
1343
+
1344
+ .flexlayout__group_end_marker {
1345
+ margin: 2px 8px 2px 0;
1346
+ height: calc(100% - 12px);
1347
+ }
1348
+
1349
+ .flexlayout__tab_button_grouped {
1350
+ &.flexlayout__tab_button {
1351
+ border-right: 0;
1352
+ height: auto;
1353
+ padding: 0 8px;
1354
+ height: calc(100% - 12px);
1355
+ border-top: 1px solid var(--neutral-stroke-rest);
1356
+ border-bottom: 1px solid var(--neutral-stroke-rest);
1357
+ border-right: 1px solid var(--neutral-stroke-rest);
1358
+ .flexlayout__tab_button_content {
1359
+ font-size: 11px;
1360
+ }
1361
+ + .flexlayout__tabset_tab_divider {
1362
+ display: none;
1363
+ }
1364
+ + .flexlayout__tabset_tab_spacer {
1365
+ display: none;
1366
+ }
1367
+ }
1368
+ &.flexlayout__tab_button--selected {
1369
+ border: 0;
1370
+ }
981
1371
  }`;