@aptre/flex-layout 0.3.4 → 0.4.0

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 (70) hide show
  1. package/README.md +13 -0
  2. package/dist/Layout.e2e.test.d.ts +1 -0
  3. package/dist/Layout.test.d.ts +1 -0
  4. package/dist/OptimizedLayout.e2e.test.d.ts +1 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.mjs +199 -52
  7. package/dist/model/IJsonModel.d.ts +4 -4
  8. package/dist/test/setup.d.ts +8 -0
  9. package/dist/test/unit-setup.d.ts +1 -0
  10. package/dist/view/Layout.d.ts +2 -0
  11. package/dist/view/OptimizedLayout.d.ts +29 -0
  12. package/package.json +119 -102
  13. package/tsconfig.json +18 -18
  14. package/typedoc/assets/hierarchy.js +1 -1
  15. package/typedoc/assets/main.js +5 -5
  16. package/typedoc/assets/navigation.js +1 -1
  17. package/typedoc/assets/search.js +1 -1
  18. package/typedoc/assets/style.css +251 -228
  19. package/typedoc/classes/Action.html +4 -4
  20. package/typedoc/classes/Actions.html +74 -74
  21. package/typedoc/classes/BorderNode.html +25 -25
  22. package/typedoc/classes/BorderSet.html +2 -2
  23. package/typedoc/classes/DockLocation.html +10 -10
  24. package/typedoc/classes/DropInfo.html +7 -7
  25. package/typedoc/classes/Layout.html +96 -96
  26. package/typedoc/classes/LayoutWindow.html +12 -12
  27. package/typedoc/classes/Model.html +42 -42
  28. package/typedoc/classes/Node.html +12 -12
  29. package/typedoc/classes/Orientation.html +6 -6
  30. package/typedoc/classes/Rect.html +26 -26
  31. package/typedoc/classes/RowNode.html +16 -16
  32. package/typedoc/classes/TabNode.html +39 -39
  33. package/typedoc/classes/TabSetNode.html +39 -39
  34. package/typedoc/enums/CLASSES.html +94 -94
  35. package/typedoc/enums/I18nLabel.html +11 -11
  36. package/typedoc/enums/ICloseType.html +4 -4
  37. package/typedoc/functions/OptimizedLayout.html +18 -0
  38. package/typedoc/functions/findJsonNodeById.html +4 -4
  39. package/typedoc/functions/walkJsonModel.html +3 -3
  40. package/typedoc/hierarchy.html +1 -1
  41. package/typedoc/index.html +1 -1
  42. package/typedoc/interfaces/IBorderAttributes.html +25 -25
  43. package/typedoc/interfaces/IDraggable.html +1 -1
  44. package/typedoc/interfaces/IDropTarget.html +1 -1
  45. package/typedoc/interfaces/IGlobalAttributes.html +99 -99
  46. package/typedoc/interfaces/IIcons.html +9 -9
  47. package/typedoc/interfaces/IJsonBorderNode.html +27 -27
  48. package/typedoc/interfaces/IJsonModel.html +5 -5
  49. package/typedoc/interfaces/IJsonPopout.html +3 -3
  50. package/typedoc/interfaces/IJsonRect.html +5 -5
  51. package/typedoc/interfaces/IJsonRowNode.html +8 -8
  52. package/typedoc/interfaces/IJsonTabNode.html +53 -53
  53. package/typedoc/interfaces/IJsonTabSetNode.html +52 -52
  54. package/typedoc/interfaces/ILayoutProps.html +41 -39
  55. package/typedoc/interfaces/IOptimizedLayoutProps.html +42 -0
  56. package/typedoc/interfaces/IRowAttributes.html +7 -7
  57. package/typedoc/interfaces/ITabAttributes.html +53 -53
  58. package/typedoc/interfaces/ITabRenderValues.html +7 -7
  59. package/typedoc/interfaces/ITabSetAttributes.html +47 -47
  60. package/typedoc/interfaces/ITabSetRenderValues.html +7 -7
  61. package/typedoc/interfaces/VisitorResult.html +5 -5
  62. package/typedoc/types/DragRectRenderCallback.html +1 -1
  63. package/typedoc/types/IBorderLocation.html +1 -1
  64. package/typedoc/types/ITabLocation.html +1 -1
  65. package/typedoc/types/JsonNode.html +2 -2
  66. package/typedoc/types/ModelVisitor.html +5 -5
  67. package/typedoc/types/NodeMouseEvent.html +1 -1
  68. package/typedoc/types/ShowOverflowMenuCallback.html +1 -1
  69. package/typedoc/types/TabSetPlaceHolderCallback.html +1 -1
  70. package/typedoc/variables/FlexLayoutVersion.html +1 -1
@@ -1,14 +1,33 @@
1
1
  @layer typedoc {
2
+ :root {
3
+ --dim-toolbar-contents-height: 2.5rem;
4
+ --dim-toolbar-border-bottom-width: 1px;
5
+ --dim-header-height: calc(
6
+ var(--dim-toolbar-border-bottom-width) +
7
+ var(--dim-toolbar-contents-height)
8
+ );
9
+
10
+ /* 0rem For mobile; unit is required for calculation in `calc` */
11
+ --dim-container-main-margin-y: 0rem;
12
+
13
+ --dim-footer-height: 3.5rem;
14
+
15
+ --modal-animation-duration: 0.2s;
16
+ }
17
+
2
18
  :root {
3
19
  /* Light */
4
20
  --light-color-background: #f2f4f8;
5
21
  --light-color-background-secondary: #eff0f1;
6
- --light-color-warning-text: #222;
22
+ /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */
23
+ --light-color-background-active: #d6d8da;
7
24
  --light-color-background-warning: #e6e600;
25
+ --light-color-warning-text: #222;
8
26
  --light-color-accent: #c5c7c9;
9
- --light-color-active-menu-item: var(--light-color-accent);
27
+ --light-color-active-menu-item: var(--light-color-background-active);
10
28
  --light-color-text: #222;
11
- --light-color-text-aside: #6e6e6e;
29
+ --light-color-contrast-text: #000;
30
+ --light-color-text-aside: #5e5e5e;
12
31
 
13
32
  --light-color-icon-background: var(--light-color-background);
14
33
  --light-color-icon-text: var(--light-color-text);
@@ -56,15 +75,20 @@
56
75
 
57
76
  --light-external-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='10' height='10'><path fill-opacity='0' stroke='%23000' stroke-width='10' d='m43,35H5v60h60V57M45,5v10l10,10-30,30 20,20 30-30 10,10h10V5z'/></svg>");
58
77
  --light-color-scheme: light;
78
+ }
59
79
 
80
+ :root {
60
81
  /* Dark */
61
82
  --dark-color-background: #2b2e33;
62
83
  --dark-color-background-secondary: #1e2024;
84
+ /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */
85
+ --dark-color-background-active: #5d5d6a;
63
86
  --dark-color-background-warning: #bebe00;
64
87
  --dark-color-warning-text: #222;
65
88
  --dark-color-accent: #9096a2;
66
- --dark-color-active-menu-item: #5d5d6a;
89
+ --dark-color-active-menu-item: var(--dark-color-background-active);
67
90
  --dark-color-text: #f5f5f5;
91
+ --dark-color-contrast-text: #ffffff;
68
92
  --dark-color-text-aside: #dddddd;
69
93
 
70
94
  --dark-color-icon-background: var(--dark-color-background-secondary);
@@ -119,11 +143,13 @@
119
143
  --color-background-secondary: var(
120
144
  --light-color-background-secondary
121
145
  );
146
+ --color-background-active: var(--light-color-background-active);
122
147
  --color-background-warning: var(--light-color-background-warning);
123
148
  --color-warning-text: var(--light-color-warning-text);
124
149
  --color-accent: var(--light-color-accent);
125
150
  --color-active-menu-item: var(--light-color-active-menu-item);
126
151
  --color-text: var(--light-color-text);
152
+ --color-contrast-text: var(--light-color-contrast-text);
127
153
  --color-text-aside: var(--light-color-text-aside);
128
154
 
129
155
  --color-icon-background: var(--light-color-icon-background);
@@ -179,11 +205,13 @@
179
205
  --color-background-secondary: var(
180
206
  --dark-color-background-secondary
181
207
  );
208
+ --color-background-active: var(--dark-color-background-active);
182
209
  --color-background-warning: var(--dark-color-background-warning);
183
210
  --color-warning-text: var(--dark-color-warning-text);
184
211
  --color-accent: var(--dark-color-accent);
185
212
  --color-active-menu-item: var(--dark-color-active-menu-item);
186
213
  --color-text: var(--dark-color-text);
214
+ --color-contrast-text: var(--dark-color-contrast-text);
187
215
  --color-text-aside: var(--dark-color-text-aside);
188
216
 
189
217
  --color-icon-background: var(--dark-color-icon-background);
@@ -233,23 +261,17 @@
233
261
  }
234
262
  }
235
263
 
236
- html {
237
- color-scheme: var(--color-scheme);
238
- }
239
-
240
- body {
241
- margin: 0;
242
- }
243
-
244
264
  :root[data-theme="light"] {
245
265
  --color-background: var(--light-color-background);
246
266
  --color-background-secondary: var(--light-color-background-secondary);
267
+ --color-background-active: var(--light-color-background-active);
247
268
  --color-background-warning: var(--light-color-background-warning);
248
269
  --color-warning-text: var(--light-color-warning-text);
249
270
  --color-icon-background: var(--light-color-icon-background);
250
271
  --color-accent: var(--light-color-accent);
251
272
  --color-active-menu-item: var(--light-color-active-menu-item);
252
273
  --color-text: var(--light-color-text);
274
+ --color-contrast-text: var(--light-color-contrast-text);
253
275
  --color-text-aside: var(--light-color-text-aside);
254
276
  --color-icon-text: var(--light-color-icon-text);
255
277
 
@@ -299,12 +321,14 @@
299
321
  :root[data-theme="dark"] {
300
322
  --color-background: var(--dark-color-background);
301
323
  --color-background-secondary: var(--dark-color-background-secondary);
324
+ --color-background-active: var(--dark-color-background-active);
302
325
  --color-background-warning: var(--dark-color-background-warning);
303
326
  --color-warning-text: var(--dark-color-warning-text);
304
327
  --color-icon-background: var(--dark-color-icon-background);
305
328
  --color-accent: var(--dark-color-accent);
306
329
  --color-active-menu-item: var(--dark-color-active-menu-item);
307
330
  --color-text: var(--dark-color-text);
331
+ --color-contrast-text: var(--dark-color-contrast-text);
308
332
  --color-text-aside: var(--dark-color-text-aside);
309
333
  --color-icon-text: var(--dark-color-icon-text);
310
334
 
@@ -351,6 +375,13 @@
351
375
  --color-scheme: var(--dark-color-scheme);
352
376
  }
353
377
 
378
+ html {
379
+ color-scheme: var(--color-scheme);
380
+ @media (prefers-reduced-motion: no-preference) {
381
+ scroll-behavior: smooth;
382
+ }
383
+ }
384
+
354
385
  *:focus-visible,
355
386
  .tsd-accordion-summary:focus-visible svg {
356
387
  outline: 2px solid var(--color-focus-outline);
@@ -421,16 +452,19 @@
421
452
  border-top: 1px solid var(--color-accent);
422
453
  padding-top: 1rem;
423
454
  padding-bottom: 1rem;
424
- max-height: 3.5rem;
455
+ max-height: var(--dim-footer-height);
425
456
  }
426
457
  footer > p {
427
458
  margin: 0 1em;
428
459
  }
429
460
 
430
461
  .container-main {
431
- margin: 0 auto;
462
+ margin: var(--dim-container-main-margin-y) auto;
432
463
  /* toolbar, footer, margin */
433
- min-height: calc(100vh - 41px - 56px - 4rem);
464
+ min-height: calc(
465
+ 100svh - var(--dim-header-height) - var(--dim-footer-height) -
466
+ 2 * var(--dim-container-main-margin-y)
467
+ );
434
468
  }
435
469
 
436
470
  @keyframes fade-in {
@@ -450,29 +484,6 @@
450
484
  opacity: 0;
451
485
  }
452
486
  }
453
- @keyframes fade-in-delayed {
454
- 0% {
455
- opacity: 0;
456
- }
457
- 33% {
458
- opacity: 0;
459
- }
460
- 100% {
461
- opacity: 1;
462
- }
463
- }
464
- @keyframes fade-out-delayed {
465
- 0% {
466
- opacity: 1;
467
- visibility: visible;
468
- }
469
- 66% {
470
- opacity: 0;
471
- }
472
- 100% {
473
- opacity: 0;
474
- }
475
- }
476
487
  @keyframes pop-in-from-right {
477
488
  from {
478
489
  transform: translate(100%, 0);
@@ -492,10 +503,12 @@
492
503
  }
493
504
  body {
494
505
  background: var(--color-background);
495
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans",
506
+ font-family:
507
+ -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans",
496
508
  Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
497
509
  font-size: 16px;
498
510
  color: var(--color-text);
511
+ margin: 0;
499
512
  }
500
513
 
501
514
  a {
@@ -514,6 +527,9 @@
514
527
  a.tsd-anchor-link {
515
528
  color: var(--color-text);
516
529
  }
530
+ :target {
531
+ scroll-margin-block: calc(var(--dim-header-height) + 0.5rem);
532
+ }
517
533
 
518
534
  code,
519
535
  pre {
@@ -545,7 +561,8 @@
545
561
  box-sizing: border-box;
546
562
  }
547
563
  pre:hover > button,
548
- pre > button.visible {
564
+ pre > button.visible,
565
+ pre > button:focus-visible {
549
566
  opacity: 1;
550
567
  }
551
568
 
@@ -555,6 +572,52 @@
555
572
  border-left: 4px solid gray;
556
573
  }
557
574
 
575
+ img {
576
+ max-width: 100%;
577
+ }
578
+
579
+ * {
580
+ scrollbar-width: thin;
581
+ scrollbar-color: var(--color-accent) var(--color-icon-background);
582
+ }
583
+
584
+ *::-webkit-scrollbar {
585
+ width: 0.75rem;
586
+ }
587
+
588
+ *::-webkit-scrollbar-track {
589
+ background: var(--color-icon-background);
590
+ }
591
+
592
+ *::-webkit-scrollbar-thumb {
593
+ background-color: var(--color-accent);
594
+ border-radius: 999rem;
595
+ border: 0.25rem solid var(--color-icon-background);
596
+ }
597
+
598
+ dialog {
599
+ border: none;
600
+ outline: none;
601
+ padding: 0;
602
+ background-color: var(--color-background);
603
+ }
604
+ dialog::backdrop {
605
+ display: none;
606
+ }
607
+ #tsd-overlay {
608
+ background-color: rgba(0, 0, 0, 0.5);
609
+ position: fixed;
610
+ z-index: 9999;
611
+ top: 0;
612
+ left: 0;
613
+ right: 0;
614
+ bottom: 0;
615
+ animation: fade-in var(--modal-animation-duration) forwards;
616
+ }
617
+ #tsd-overlay.closing {
618
+ animation-name: fade-out;
619
+ }
620
+
558
621
  .tsd-typography {
559
622
  line-height: 1.333em;
560
623
  }
@@ -629,6 +692,7 @@
629
692
 
630
693
  .tsd-breadcrumb {
631
694
  margin: 0;
695
+ margin-top: 1rem;
632
696
  padding: 0;
633
697
  color: var(--color-text-aside);
634
698
  }
@@ -733,7 +797,7 @@
733
797
  margin-right: 0.5em;
734
798
  border-radius: 0.33em;
735
799
  /* Leaving this at full opacity breaks event listeners on Firefox.
736
- Don't remove unless you know what you're doing. */
800
+ Don't remove unless you know what you're doing. */
737
801
  opacity: 0.99;
738
802
  }
739
803
  .tsd-filter-input input[type="checkbox"]:focus-visible + svg {
@@ -876,7 +940,8 @@
876
940
  }
877
941
 
878
942
  .tsd-navigation.settings {
879
- margin: 1rem 0;
943
+ margin: 0;
944
+ margin-bottom: 1rem;
880
945
  }
881
946
  .tsd-navigation > a,
882
947
  .tsd-navigation .tsd-accordion-summary {
@@ -898,6 +963,7 @@
898
963
  .tsd-navigation a.current,
899
964
  .tsd-page-navigation a.current {
900
965
  background: var(--color-active-menu-item);
966
+ color: var(--color-contrast-text);
901
967
  }
902
968
  .tsd-navigation a:hover,
903
969
  .tsd-page-navigation a:hover {
@@ -931,14 +997,14 @@
931
997
  margin-left: -1.5rem;
932
998
  }
933
999
 
934
- .tsd-page-navigation-section {
935
- margin-left: 10px;
936
- }
937
1000
  .tsd-page-navigation-section > summary {
938
1001
  padding: 0.25rem;
939
1002
  }
1003
+ .tsd-page-navigation-section > summary > svg {
1004
+ margin-right: 0.25rem;
1005
+ }
940
1006
  .tsd-page-navigation-section > div {
941
- margin-left: 20px;
1007
+ margin-left: 30px;
942
1008
  }
943
1009
  .tsd-page-navigation ul {
944
1010
  padding-left: 1.75rem;
@@ -964,6 +1030,10 @@
964
1030
  .tsd-accordion-summary {
965
1031
  list-style-type: none; /* hide marker on non-safari */
966
1032
  outline: none; /* broken on safari, so just hide it */
1033
+ display: flex;
1034
+ align-items: center;
1035
+ gap: 0.25rem;
1036
+ box-sizing: border-box;
967
1037
  }
968
1038
  .tsd-accordion-summary::-webkit-details-marker {
969
1039
  display: none; /* hide marker on safari */
@@ -986,27 +1056,21 @@
986
1056
  padding-top: 0;
987
1057
  padding-bottom: 0;
988
1058
  }
989
- .tsd-accordion .tsd-accordion-summary > svg {
990
- margin-left: 0.25rem;
991
- vertical-align: text-top;
992
- }
993
1059
  /*
994
- We need to be careful to target the arrow indicating whether the accordion
995
- is open, but not any other SVGs included in the details element.
996
- */
997
- .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child,
998
- .tsd-accordion:not([open]) > .tsd-accordion-summary > h1 > svg:first-child,
999
- .tsd-accordion:not([open]) > .tsd-accordion-summary > h2 > svg:first-child,
1000
- .tsd-accordion:not([open]) > .tsd-accordion-summary > h3 > svg:first-child,
1001
- .tsd-accordion:not([open]) > .tsd-accordion-summary > h4 > svg:first-child {
1060
+ * We need to be careful to target the arrow indicating whether the accordion
1061
+ * is open, but not any other SVGs included in the details element.
1062
+ */
1063
+ .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child {
1002
1064
  transform: rotate(-90deg);
1003
1065
  }
1004
1066
  .tsd-index-content > :not(:first-child) {
1005
1067
  margin-top: 0.75rem;
1006
1068
  }
1007
- .tsd-index-heading {
1069
+ .tsd-index-summary {
1008
1070
  margin-top: 1.5rem;
1009
1071
  margin-bottom: 0.75rem;
1072
+ display: flex;
1073
+ align-content: center;
1010
1074
  }
1011
1075
 
1012
1076
  .tsd-no-select {
@@ -1061,117 +1125,104 @@
1061
1125
  margin-bottom: 1rem;
1062
1126
  }
1063
1127
 
1064
- #tsd-search {
1065
- transition: background-color 0.2s;
1128
+ #tsd-search[open] {
1129
+ animation: fade-in var(--modal-animation-duration) ease-out forwards;
1066
1130
  }
1067
- #tsd-search .title {
1068
- position: relative;
1069
- z-index: 2;
1131
+ #tsd-search[open].closing {
1132
+ animation-name: fade-out;
1070
1133
  }
1071
- #tsd-search .field {
1072
- position: absolute;
1073
- left: 0;
1074
- top: 0;
1075
- right: 2.5rem;
1076
- height: 100%;
1077
- }
1078
- #tsd-search .field input {
1134
+
1135
+ /* Avoid setting `display` on closed dialog */
1136
+ #tsd-search[open] {
1137
+ display: flex;
1138
+ flex-direction: column;
1139
+ padding: 1rem;
1140
+ width: 32rem;
1141
+ max-width: 90vw;
1142
+ max-height: calc(100vh - env(keyboard-inset-height, 0px) - 25vh);
1143
+ /* Anchor dialog to top */
1144
+ margin-top: 10vh;
1145
+ border-radius: 6px;
1146
+ will-change: max-height;
1147
+ }
1148
+ #tsd-search-input {
1079
1149
  box-sizing: border-box;
1080
- position: relative;
1081
- top: -50px;
1082
- z-index: 1;
1083
1150
  width: 100%;
1084
- padding: 0 10px;
1085
- opacity: 0;
1151
+ padding: 0 0.625rem; /* 10px */
1086
1152
  outline: 0;
1087
- border: 0;
1088
- background: transparent;
1153
+ border: 2px solid var(--color-accent);
1154
+ background-color: transparent;
1089
1155
  color: var(--color-text);
1156
+ border-radius: 4px;
1157
+ height: 2.5rem;
1158
+ flex: 0 0 auto;
1159
+ font-size: 0.875rem;
1160
+ transition: border-color 0.2s, background-color 0.2s;
1090
1161
  }
1091
- #tsd-search .field label {
1092
- position: absolute;
1093
- overflow: hidden;
1094
- right: -40px;
1162
+ #tsd-search-input:focus-visible {
1163
+ background-color: var(--color-background-active);
1164
+ border-color: transparent;
1165
+ color: var(--color-contrast-text);
1095
1166
  }
1096
- #tsd-search .field input,
1097
- #tsd-search .title,
1098
- #tsd-toolbar-links a {
1099
- transition: opacity 0.2s;
1167
+ #tsd-search-input::placeholder {
1168
+ color: inherit;
1169
+ opacity: 0.8;
1100
1170
  }
1101
- #tsd-search .results {
1102
- position: absolute;
1103
- visibility: hidden;
1104
- top: 40px;
1105
- width: 100%;
1171
+ #tsd-search-results {
1106
1172
  margin: 0;
1107
1173
  padding: 0;
1108
1174
  list-style: none;
1109
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
1175
+ flex: 1 1 auto;
1176
+ display: flex;
1177
+ flex-direction: column;
1178
+ overflow-y: auto;
1179
+ }
1180
+ #tsd-search-results:not(:empty) {
1181
+ margin-top: 0.5rem;
1110
1182
  }
1111
- #tsd-search .results li {
1183
+ #tsd-search-results > li {
1112
1184
  background-color: var(--color-background);
1113
- line-height: initial;
1114
- padding: 4px;
1185
+ line-height: 1.5;
1186
+ box-sizing: border-box;
1187
+ border-radius: 4px;
1115
1188
  }
1116
- #tsd-search .results li:nth-child(even) {
1189
+ #tsd-search-results > li:nth-child(even) {
1117
1190
  background-color: var(--color-background-secondary);
1118
1191
  }
1119
- #tsd-search .results li.state {
1120
- display: none;
1121
- }
1122
- #tsd-search .results li.current:not(.no-results),
1123
- #tsd-search .results li:hover:not(.no-results) {
1124
- background-color: var(--color-accent);
1192
+ #tsd-search-results > li:is(:hover, [aria-selected="true"]) {
1193
+ background-color: var(--color-background-active);
1194
+ color: var(--color-contrast-text);
1125
1195
  }
1126
- #tsd-search .results a {
1196
+ /* It's important that this takes full size of parent `li`, to capture a click on `li` */
1197
+ #tsd-search-results > li > a {
1127
1198
  display: flex;
1128
1199
  align-items: center;
1129
- padding: 0.25rem;
1200
+ padding: 0.5rem 0.25rem;
1130
1201
  box-sizing: border-box;
1202
+ width: 100%;
1131
1203
  }
1132
- #tsd-search .results a:before {
1133
- top: 10px;
1204
+ #tsd-search-results > li > a > .text {
1205
+ flex: 1 1 auto;
1206
+ min-width: 0;
1207
+ overflow-wrap: anywhere;
1134
1208
  }
1135
- #tsd-search .results span.parent {
1209
+ #tsd-search-results > li > a .parent {
1136
1210
  color: var(--color-text-aside);
1137
- font-weight: normal;
1138
- }
1139
- #tsd-search.has-focus {
1140
- background-color: var(--color-accent);
1141
1211
  }
1142
- #tsd-search.has-focus .field input {
1143
- top: 0;
1144
- opacity: 1;
1145
- }
1146
- #tsd-search.has-focus .title,
1147
- #tsd-search.has-focus #tsd-toolbar-links a {
1148
- z-index: 0;
1149
- opacity: 0;
1150
- }
1151
- #tsd-search.has-focus .results {
1152
- visibility: visible;
1153
- }
1154
- #tsd-search.loading .results li.state.loading {
1155
- display: block;
1156
- }
1157
- #tsd-search.failure .results li.state.failure {
1158
- display: block;
1159
- }
1160
-
1161
- #tsd-toolbar-links {
1162
- position: absolute;
1163
- top: 0;
1164
- right: 2rem;
1165
- height: 100%;
1166
- display: flex;
1167
- align-items: center;
1168
- justify-content: flex-end;
1212
+ #tsd-search-results > li > a mark {
1213
+ color: inherit;
1214
+ background-color: inherit;
1215
+ font-weight: bold;
1169
1216
  }
1170
- #tsd-toolbar-links a {
1171
- margin-left: 1.5rem;
1217
+ #tsd-search-status {
1218
+ flex: 1;
1219
+ display: grid;
1220
+ place-content: center;
1221
+ text-align: center;
1222
+ overflow-wrap: anywhere;
1172
1223
  }
1173
- #tsd-toolbar-links a:hover {
1174
- text-decoration: underline;
1224
+ #tsd-search-status:not(:empty) {
1225
+ min-height: 6rem;
1175
1226
  }
1176
1227
 
1177
1228
  .tsd-signature {
@@ -1256,78 +1307,52 @@
1256
1307
  width: 100%;
1257
1308
  color: var(--color-text);
1258
1309
  background: var(--color-background-secondary);
1259
- border-bottom: 1px var(--color-accent) solid;
1310
+ border-bottom: var(--dim-toolbar-border-bottom-width)
1311
+ var(--color-accent) solid;
1260
1312
  transition: transform 0.3s ease-in-out;
1261
1313
  }
1262
1314
  .tsd-page-toolbar a {
1263
1315
  color: var(--color-text);
1264
- text-decoration: none;
1265
- }
1266
- .tsd-page-toolbar a.title {
1267
- font-weight: bold;
1268
1316
  }
1269
- .tsd-page-toolbar a.title:hover {
1270
- text-decoration: underline;
1271
- }
1272
- .tsd-page-toolbar .tsd-toolbar-contents {
1317
+ .tsd-toolbar-contents {
1273
1318
  display: flex;
1274
- justify-content: space-between;
1275
- height: 2.5rem;
1319
+ align-items: center;
1320
+ height: var(--dim-toolbar-contents-height);
1276
1321
  margin: 0 auto;
1277
1322
  }
1278
- .tsd-page-toolbar .table-cell {
1279
- position: relative;
1280
- white-space: nowrap;
1281
- line-height: 40px;
1282
- }
1283
- .tsd-page-toolbar .table-cell:first-child {
1284
- width: 100%;
1323
+ .tsd-toolbar-contents > .title {
1324
+ font-weight: bold;
1325
+ margin-right: auto;
1285
1326
  }
1286
- .tsd-page-toolbar .tsd-toolbar-icon {
1287
- box-sizing: border-box;
1288
- line-height: 0;
1289
- padding: 12px 0;
1327
+ #tsd-toolbar-links {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ gap: 1.5rem;
1331
+ margin-right: 1rem;
1290
1332
  }
1291
1333
 
1292
1334
  .tsd-widget {
1335
+ box-sizing: border-box;
1293
1336
  display: inline-block;
1294
- overflow: hidden;
1295
1337
  opacity: 0.8;
1296
- height: 40px;
1297
- transition:
1298
- opacity 0.1s,
1299
- background-color 0.2s;
1300
- vertical-align: bottom;
1338
+ height: 2.5rem;
1339
+ width: 2.5rem;
1340
+ transition: opacity 0.1s, background-color 0.1s;
1341
+ text-align: center;
1301
1342
  cursor: pointer;
1343
+ border: none;
1344
+ background-color: transparent;
1302
1345
  }
1303
1346
  .tsd-widget:hover {
1304
1347
  opacity: 0.9;
1305
1348
  }
1306
- .tsd-widget.active {
1349
+ .tsd-widget:active {
1307
1350
  opacity: 1;
1308
1351
  background-color: var(--color-accent);
1309
1352
  }
1310
- .tsd-widget.no-caption {
1311
- width: 40px;
1312
- }
1313
- .tsd-widget.no-caption:before {
1314
- margin: 0;
1315
- }
1316
-
1317
- .tsd-widget.options,
1318
- .tsd-widget.menu {
1353
+ #tsd-toolbar-menu-trigger {
1319
1354
  display: none;
1320
1355
  }
1321
- input[type="checkbox"] + .tsd-widget:before {
1322
- background-position: -120px 0;
1323
- }
1324
- input[type="checkbox"]:checked + .tsd-widget:before {
1325
- background-position: -160px 0;
1326
- }
1327
-
1328
- img {
1329
- max-width: 100%;
1330
- }
1331
1356
 
1332
1357
  .tsd-member-summary-name {
1333
1358
  display: inline-flex;
@@ -1341,6 +1366,7 @@
1341
1366
  align-items: center;
1342
1367
  margin-left: 0.5rem;
1343
1368
  color: var(--color-text);
1369
+ vertical-align: middle;
1344
1370
  }
1345
1371
 
1346
1372
  .tsd-anchor-icon svg {
@@ -1350,7 +1376,8 @@
1350
1376
  }
1351
1377
 
1352
1378
  .tsd-member-summary-name:hover > .tsd-anchor-icon svg,
1353
- .tsd-anchor-link:hover > .tsd-anchor-icon svg {
1379
+ .tsd-anchor-link:hover > .tsd-anchor-icon svg,
1380
+ .tsd-anchor-icon:focus-visible svg {
1354
1381
  visibility: visible;
1355
1382
  }
1356
1383
 
@@ -1436,41 +1463,26 @@
1436
1463
  color: var(--color-text);
1437
1464
  }
1438
1465
 
1439
- * {
1440
- scrollbar-width: thin;
1441
- scrollbar-color: var(--color-accent) var(--color-icon-background);
1442
- }
1443
-
1444
- *::-webkit-scrollbar {
1445
- width: 0.75rem;
1446
- }
1447
-
1448
- *::-webkit-scrollbar-track {
1449
- background: var(--color-icon-background);
1450
- }
1451
-
1452
- *::-webkit-scrollbar-thumb {
1453
- background-color: var(--color-accent);
1454
- border-radius: 999rem;
1455
- border: 0.25rem solid var(--color-icon-background);
1456
- }
1457
-
1458
1466
  /* mobile */
1459
1467
  @media (max-width: 769px) {
1460
- .tsd-widget.options,
1461
- .tsd-widget.menu {
1468
+ #tsd-toolbar-menu-trigger {
1462
1469
  display: inline-block;
1470
+ /* temporary fix to vertically align, for compatibility */
1471
+ line-height: 2.5;
1472
+ }
1473
+ #tsd-toolbar-links {
1474
+ display: none;
1463
1475
  }
1464
1476
 
1465
1477
  .container-main {
1466
1478
  display: flex;
1467
1479
  }
1468
- html .col-content {
1480
+ .col-content {
1469
1481
  float: none;
1470
1482
  max-width: 100%;
1471
1483
  width: 100%;
1472
1484
  }
1473
- html .col-sidebar {
1485
+ .col-sidebar {
1474
1486
  position: fixed !important;
1475
1487
  overflow-y: auto;
1476
1488
  -webkit-overflow-scrolling: touch;
@@ -1485,10 +1497,10 @@
1485
1497
  background-color: var(--color-background);
1486
1498
  transform: translate(100%, 0);
1487
1499
  }
1488
- html .col-sidebar > *:last-child {
1500
+ .col-sidebar > *:last-child {
1489
1501
  padding-bottom: 20px;
1490
1502
  }
1491
- html .overlay {
1503
+ .overlay {
1492
1504
  content: "";
1493
1505
  display: block;
1494
1506
  position: fixed;
@@ -1535,9 +1547,6 @@
1535
1547
  .has-menu .tsd-navigation {
1536
1548
  max-height: 100%;
1537
1549
  }
1538
- #tsd-toolbar-links {
1539
- display: none;
1540
- }
1541
1550
  .tsd-navigation .tsd-nav-link {
1542
1551
  display: flex;
1543
1552
  }
@@ -1549,7 +1558,11 @@
1549
1558
  display: grid;
1550
1559
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
1551
1560
  grid-template-areas: "sidebar content";
1552
- margin: 2rem auto;
1561
+ --dim-container-main-margin-y: 2rem;
1562
+ }
1563
+
1564
+ .tsd-breadcrumb {
1565
+ margin-top: 0;
1553
1566
  }
1554
1567
 
1555
1568
  .col-sidebar {
@@ -1562,11 +1575,15 @@
1562
1575
  }
1563
1576
  @media (min-width: 770px) and (max-width: 1399px) {
1564
1577
  .col-sidebar {
1565
- max-height: calc(100vh - 2rem - 42px);
1578
+ max-height: calc(
1579
+ 100vh - var(--dim-header-height) - var(--dim-footer-height) -
1580
+ 2 * var(--dim-container-main-margin-y)
1581
+ );
1566
1582
  overflow: auto;
1567
1583
  position: sticky;
1568
- top: 42px;
1569
- padding-top: 1rem;
1584
+ top: calc(
1585
+ var(--dim-header-height) + var(--dim-container-main-margin-y)
1586
+ );
1570
1587
  }
1571
1588
  .site-menu {
1572
1589
  margin-top: 1rem;
@@ -1576,7 +1593,8 @@
1576
1593
  /* two sidebars */
1577
1594
  @media (min-width: 1200px) {
1578
1595
  .container-main {
1579
- grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(
1596
+ grid-template-columns:
1597
+ minmax(0, 1fr) minmax(0, 2.5fr) minmax(
1580
1598
  0,
1581
1599
  20rem
1582
1600
  );
@@ -1596,15 +1614,20 @@
1596
1614
  }
1597
1615
 
1598
1616
  .site-menu {
1599
- margin-top: 1rem;
1617
+ margin-top: 0rem;
1600
1618
  }
1601
1619
 
1602
1620
  .page-menu,
1603
1621
  .site-menu {
1604
- max-height: calc(100vh - 2rem - 42px);
1622
+ max-height: calc(
1623
+ 100vh - var(--dim-header-height) - var(--dim-footer-height) -
1624
+ 2 * var(--dim-container-main-margin-y)
1625
+ );
1605
1626
  overflow: auto;
1606
1627
  position: sticky;
1607
- top: 42px;
1628
+ top: calc(
1629
+ var(--dim-header-height) + var(--dim-container-main-margin-y)
1630
+ );
1608
1631
  }
1609
1632
  }
1610
1633
  }