@pythia-software/query-table-ui 0.5.0 → 0.6.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.
package/dist/theme.css CHANGED
@@ -1,4 +1,4 @@
1
- /* src/theme.css */
1
+ /* src/baseTheme.css */
2
2
  :root {
3
3
  --qt-font-size: 14px;
4
4
  --qt-border: #d0d7de;
@@ -1218,6 +1218,59 @@
1218
1218
  .qt-cm-item:disabled:hover {
1219
1219
  background: transparent;
1220
1220
  }
1221
+ .qt-cm-submenu-wrap {
1222
+ position: relative;
1223
+ }
1224
+ .qt-cm-submenu-trigger {
1225
+ display: flex;
1226
+ align-items: center;
1227
+ justify-content: space-between;
1228
+ gap: 8px;
1229
+ }
1230
+ .qt-cm-submenu-trigger .qt-icon {
1231
+ color: var(--qt-muted);
1232
+ }
1233
+ .qt-cm-item--open {
1234
+ background: var(--qt-header-bg);
1235
+ }
1236
+ .qt-cm-submenu {
1237
+ position: absolute;
1238
+ top: -4px;
1239
+ left: calc(100% + 4px);
1240
+ z-index: 1;
1241
+ background: #fff;
1242
+ border: 1px solid var(--qt-border);
1243
+ border-radius: var(--qt-radius);
1244
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
1245
+ padding: 4px;
1246
+ box-sizing: border-box;
1247
+ }
1248
+ .qt-cm-submenu::before {
1249
+ content: "";
1250
+ position: absolute;
1251
+ top: 0;
1252
+ bottom: 0;
1253
+ left: -6px;
1254
+ width: 6px;
1255
+ }
1256
+ .qt-cm-submenu--left {
1257
+ left: auto;
1258
+ right: calc(100% + 4px);
1259
+ }
1260
+ .qt-cm-submenu--left::before {
1261
+ left: auto;
1262
+ right: -6px;
1263
+ }
1264
+ .qt-sheet .qt-cm-submenu {
1265
+ position: static;
1266
+ border: 0;
1267
+ border-radius: 0;
1268
+ box-shadow: none;
1269
+ padding: 0 0 4px 12px;
1270
+ }
1271
+ .qt-sheet .qt-cm-submenu::before {
1272
+ display: none;
1273
+ }
1221
1274
  .qt-cm-item code {
1222
1275
  background: var(--qt-border-subtle);
1223
1276
  padding: 1px 4px;
@@ -2208,39 +2261,208 @@
2208
2261
  padding: 4px 10px;
2209
2262
  font-size: 11px;
2210
2263
  }
2264
+ .qt-formula-layout {
2265
+ display: flex;
2266
+ flex-wrap: wrap;
2267
+ align-items: flex-start;
2268
+ gap: 16px;
2269
+ margin-bottom: 16px;
2270
+ }
2271
+ .qt-formula-editor {
2272
+ flex: 1 1 320px;
2273
+ min-width: 0;
2274
+ }
2211
2275
  .qt-function-library {
2212
- margin: 10px 0;
2276
+ flex: 1 1 260px;
2277
+ min-width: 0;
2278
+ max-width: 330px;
2279
+ padding: 12px;
2280
+ border: 1px solid var(--qt-border, #dbe1e8);
2281
+ border-radius: 8px;
2282
+ background: var(--qt-bg-muted, #f8fafc);
2213
2283
  font-size: 12px;
2214
2284
  }
2215
- .qt-function-library summary {
2216
- cursor: pointer;
2217
- margin-bottom: 8px;
2285
+ .qt-function-library h4 {
2286
+ margin: 0 0 6px;
2287
+ font-size: 14px;
2288
+ }
2289
+ .qt-function-search,
2290
+ .qt-function-filters label {
2291
+ display: flex;
2292
+ flex-direction: column;
2293
+ gap: 4px;
2294
+ font-weight: 600;
2295
+ }
2296
+ .qt-function-search .qt-input {
2297
+ box-sizing: border-box;
2298
+ width: 100%;
2299
+ min-width: 0;
2300
+ margin-bottom: 10px;
2301
+ }
2302
+ .qt-function-filters {
2303
+ display: flex;
2304
+ flex-wrap: wrap;
2305
+ gap: 8px;
2306
+ }
2307
+ .qt-function-filters label {
2308
+ flex: 1 1 110px;
2309
+ min-width: 0;
2310
+ }
2311
+ .qt-function-filters select {
2312
+ width: 100%;
2313
+ min-width: 0;
2314
+ padding: 6px;
2315
+ border: 1px solid var(--qt-border, #dbe1e8);
2316
+ border-radius: 5px;
2317
+ color: inherit;
2318
+ background: var(--qt-bg, #fff);
2319
+ font: inherit;
2320
+ }
2321
+ .qt-select-editor .qt-function-count,
2322
+ .qt-select-editor .qt-function-concept {
2323
+ margin: 10px 0 6px;
2324
+ color: var(--qt-muted, #64748b);
2218
2325
  }
2219
2326
  .qt-function-list {
2220
- max-height: 190px;
2221
- overflow: auto;
2327
+ position: relative;
2328
+ max-height: 320px;
2329
+ overflow-y: auto;
2330
+ overscroll-behavior: contain;
2222
2331
  margin: 8px 0;
2223
2332
  }
2224
2333
  .qt-function-list button {
2225
2334
  display: flex;
2226
2335
  flex-direction: column;
2227
2336
  text-align: left;
2228
- gap: 3px;
2229
- padding: 8px;
2230
- background: transparent;
2337
+ gap: 5px;
2338
+ padding: 10px 8px;
2231
2339
  border: 0;
2232
2340
  border-bottom: 1px solid var(--qt-border, #dbe1e8);
2233
2341
  width: 100%;
2234
2342
  color: inherit;
2343
+ background: transparent;
2235
2344
  cursor: pointer;
2345
+ border-radius: 4px;
2346
+ }
2347
+ .qt-function-list button:hover,
2348
+ .qt-function-list button[aria-selected=true] {
2349
+ background: var(--qt-accent-bg, #edf3ff);
2350
+ }
2351
+ .qt-function-list button:focus-visible {
2352
+ outline: 2px solid var(--qt-accent, #285cc4);
2353
+ outline-offset: -2px;
2354
+ }
2355
+ .qt-function-card-title {
2356
+ display: flex;
2357
+ flex-wrap: wrap;
2358
+ align-items: center;
2359
+ justify-content: space-between;
2360
+ gap: 4px;
2361
+ width: 100%;
2362
+ }
2363
+ .qt-function-card-title > span {
2364
+ font-size: 10px;
2365
+ color: var(--qt-muted, #64748b);
2366
+ }
2367
+ .qt-function-list code {
2368
+ font-size: 11px;
2369
+ overflow-wrap: anywhere;
2370
+ white-space: normal;
2236
2371
  }
2237
- .qt-function-list small {
2372
+ .qt-function-list small,
2373
+ .qt-function-card-concept {
2238
2374
  color: var(--qt-muted, #64748b);
2239
2375
  }
2240
- .qt-function-help {
2241
- padding: 10px;
2242
- max-width: 400px;
2243
- font: 12px/1.5 system-ui;
2376
+ .qt-function-card-concept {
2377
+ font-size: 10px;
2378
+ }
2379
+ .qt-select-editor .qt-function-insert-hint,
2380
+ .qt-select-editor .qt-function-empty {
2381
+ margin: 8px 0 0;
2382
+ color: var(--qt-muted, #64748b);
2383
+ font-size: 11px;
2384
+ }
2385
+ @media (max-width: 1100px) {
2386
+ .qt-function-library {
2387
+ max-width: none;
2388
+ }
2389
+ }
2390
+ @media (max-width: 760px) {
2391
+ .qt-formula-editor,
2392
+ .qt-function-library {
2393
+ flex-basis: 100%;
2394
+ max-width: none;
2395
+ }
2396
+ .qt-function-list {
2397
+ max-height: 240px;
2398
+ }
2399
+ }
2400
+ .qt-formula-input {
2401
+ display: block;
2402
+ box-sizing: border-box;
2403
+ width: 100%;
2404
+ min-height: 130px;
2405
+ max-height: 260px;
2406
+ resize: vertical;
2407
+ padding: 12px;
2408
+ border: 1px solid var(--qt-border, #cbd5e1);
2409
+ border-radius: 6px;
2410
+ background: var(--qt-bg, #fff);
2411
+ color: var(--qt-text, inherit);
2412
+ font: 13px/1.6 ui-monospace, monospace;
2413
+ }
2414
+ .qt-formula-input:focus-visible {
2415
+ outline: 2px solid var(--qt-accent, #285cc4);
2416
+ outline-offset: 2px;
2417
+ }
2418
+ .qt-formula-tools {
2419
+ display: flex;
2420
+ justify-content: space-between;
2421
+ gap: 12px;
2422
+ margin-top: 6px;
2423
+ color: var(--qt-muted, #64748b);
2424
+ font-size: 11px;
2425
+ }
2426
+ .qt-formula-completions {
2427
+ margin-top: 8px;
2428
+ border: 1px solid var(--qt-border, #cbd5e1);
2429
+ border-radius: 6px;
2430
+ background: var(--qt-bg, #fff);
2431
+ font-size: 12px;
2432
+ }
2433
+ .qt-formula-completions ul {
2434
+ margin: 0;
2435
+ padding: 4px;
2436
+ list-style: none;
2437
+ max-height: 180px;
2438
+ overflow: auto;
2439
+ }
2440
+ .qt-formula-completions li {
2441
+ display: flex;
2442
+ flex-direction: column;
2443
+ gap: 3px;
2444
+ padding: 7px 8px;
2445
+ border-radius: 4px;
2446
+ cursor: pointer;
2447
+ overflow-wrap: anywhere;
2448
+ }
2449
+ .qt-formula-completions li:hover,
2450
+ .qt-formula-completions li[aria-selected=true] {
2451
+ background: var(--qt-accent-bg, #edf3ff);
2452
+ }
2453
+ .qt-formula-completions small {
2454
+ color: var(--qt-muted, #64748b);
2455
+ }
2456
+ .qt-formula-completions p {
2457
+ margin: 0;
2458
+ padding: 8px;
2459
+ border-top: 1px solid var(--qt-border, #cbd5e1);
2460
+ color: var(--qt-muted, #64748b);
2461
+ overflow-wrap: anywhere;
2462
+ }
2463
+ .qt-formula-editor > .qt-formula-error {
2464
+ margin-bottom: 10px;
2465
+ font-size: 12px;
2244
2466
  }
2245
2467
  .qt-definition-actions {
2246
2468
  display: flex;
@@ -2423,8 +2645,7 @@
2423
2645
  .qt-select-editor .qt-input,
2424
2646
  .qt-select-editor textarea,
2425
2647
  .qt-select-editor .qt-preview-controls input,
2426
- .qt-select-editor .qt-preview-controls select,
2427
- .qt-select-editor .cm-editor {
2648
+ .qt-select-editor .qt-preview-controls select {
2428
2649
  color: var(--qt-text);
2429
2650
  background: var(--qt-bg-muted);
2430
2651
  border-color: var(--qt-border);
@@ -3579,4 +3800,1604 @@
3579
3800
  border-radius: var(--qt-radius) var(--qt-radius) 0 0;
3580
3801
  }
3581
3802
  }
3803
+
3804
+ /* src/metrics.css */
3805
+ .qt-metric.qt-metric {
3806
+ color: var(--qt-metric-text, var(--qt-text, #24292f));
3807
+ background: var(--qt-metric-surface, var(--qt-bg, #fff));
3808
+ max-width: 100%;
3809
+ box-sizing: border-box;
3810
+ overflow: auto;
3811
+ }
3812
+ .qt-metric.qt-metric--chart {
3813
+ flex: 1 1 28rem;
3814
+ display: flex;
3815
+ flex-direction: column;
3816
+ width: 28rem;
3817
+ min-height: 20rem;
3818
+ }
3819
+ .qt-metric-chart-layout {
3820
+ display: flex;
3821
+ flex: 1 0 12rem;
3822
+ min-height: 8rem;
3823
+ gap: 0.5rem;
3824
+ min-width: 0;
3825
+ }
3826
+ .qt-metric-plot {
3827
+ flex: 1;
3828
+ min-width: 0;
3829
+ position: relative;
3830
+ min-height: 8rem;
3831
+ }
3832
+ .qt-metric-plot svg {
3833
+ display: block;
3834
+ width: 100%;
3835
+ height: 100%;
3836
+ overflow: hidden;
3837
+ }
3838
+ .qt-metric-axis {
3839
+ fill: var(--qt-metric-muted, var(--qt-muted, #68717d));
3840
+ font: 0.6875rem system-ui, sans-serif;
3841
+ }
3842
+ .qt-metric-grid {
3843
+ stroke: var(--qt-metric-grid, var(--qt-border, #d8dee4));
3844
+ stroke-width: 1;
3845
+ }
3846
+ .qt-metric-mark {
3847
+ outline: none;
3848
+ }
3849
+ .qt-metric-mark:focus-visible {
3850
+ outline: 2px solid var(--qt-metric-accent, var(--qt-accent, #3979c3));
3851
+ outline-offset: 2px;
3852
+ }
3853
+ .qt-metric-legend {
3854
+ display: flex;
3855
+ flex-direction: column;
3856
+ list-style: none;
3857
+ gap: 0.4rem;
3858
+ padding: 0;
3859
+ margin: 0;
3860
+ max-width: 35%;
3861
+ max-height: 16rem;
3862
+ overflow: auto;
3863
+ font-size: 0.75rem;
3864
+ }
3865
+ .qt-metric-legend li {
3866
+ display: flex;
3867
+ align-items: baseline;
3868
+ gap: 0.35rem;
3869
+ overflow-wrap: anywhere;
3870
+ }
3871
+ .qt-metric-swatch {
3872
+ display: inline-block;
3873
+ flex-shrink: 0;
3874
+ width: 0.6rem;
3875
+ height: 0.6rem;
3876
+ border-radius: 0.1rem;
3877
+ }
3878
+ .qt-metric-legend-left {
3879
+ flex-direction: row-reverse;
3880
+ }
3881
+ .qt-metric-legend-top {
3882
+ flex-direction: column-reverse;
3883
+ }
3884
+ .qt-metric-legend-bottom {
3885
+ flex-direction: column;
3886
+ }
3887
+ .qt-metric-legend-top .qt-metric-legend,
3888
+ .qt-metric-legend-bottom .qt-metric-legend {
3889
+ flex-direction: row;
3890
+ flex-wrap: wrap;
3891
+ max-width: 100%;
3892
+ max-height: 4rem;
3893
+ }
3894
+ .qt-metric-note {
3895
+ color: var(--qt-metric-muted, var(--qt-muted, #68717d));
3896
+ font-size: 0.6875rem;
3897
+ margin: 0.4rem 0;
3898
+ }
3899
+ .qt-metric-tooltip {
3900
+ white-space: pre-line;
3901
+ overflow-wrap: anywhere;
3902
+ padding: 0.5rem 0.625rem;
3903
+ background: var(--qt-metric-surface, var(--qt-bg, #fff));
3904
+ color: var(--qt-metric-text, var(--qt-text, #24292f));
3905
+ border: 1px solid var(--qt-metric-grid, var(--qt-border, #d8dee4));
3906
+ border-radius: 0.25rem;
3907
+ font-size: 0.75rem;
3908
+ box-shadow: 0 0.15rem 0.5rem #0002;
3909
+ }
3910
+ .qt-metric-message {
3911
+ font-size: 0.8125rem;
3912
+ padding: 0.75rem;
3913
+ }
3914
+ .qt-metric-format-error,
3915
+ .qt-metrics-error {
3916
+ color: var(--qt-metric-error, var(--qt-danger, #c23934));
3917
+ }
3918
+ .qt-metric.qt-metric {
3919
+ position: relative;
3920
+ }
3921
+ .qt-metric-tooltip {
3922
+ position: absolute;
3923
+ z-index: 2;
3924
+ inset-inline: 0.5rem;
3925
+ bottom: 2rem;
3926
+ pointer-events: none;
3927
+ max-height: 80%;
3928
+ overflow: auto;
3929
+ }
3930
+ .qt-metric .qt-metric-big-value,
3931
+ .qt-metric .qt-metric-bar-value {
3932
+ color: var(--qt-metric-text, var(--qt-text, #24292f));
3933
+ }
3934
+ .qt-metric .qt-metric-bar-fill {
3935
+ background: var(--qt-metric-accent, var(--qt-accent, #3979c3));
3936
+ }
3937
+ .qt-metric .qt-metric-pivot thead th,
3938
+ .qt-metric .qt-metric-flat thead th {
3939
+ background: var(--qt-metric-surface, var(--qt-header-bg, #fff));
3940
+ }
3941
+ .qt-metrics {
3942
+ min-width: 0;
3943
+ overflow-x: auto;
3944
+ }
3945
+ .qt-metric.qt-metric {
3946
+ border-radius: 8px;
3947
+ padding: 10px 12px;
3948
+ box-shadow: none;
3949
+ gap: 6px;
3950
+ }
3951
+ .qt-metric .qt-metric-head {
3952
+ flex-shrink: 0;
3953
+ align-items: baseline;
3954
+ }
3955
+ .qt-metric .qt-metric-title {
3956
+ font-size: 12px;
3957
+ font-weight: 600;
3958
+ }
3959
+ .qt-metric .qt-metric-by {
3960
+ font-size: 10px;
3961
+ }
3962
+ .qt-metric .qt-metric-big {
3963
+ text-align: center;
3964
+ align-items: center;
3965
+ gap: 6px;
3966
+ padding: 4px 0;
3967
+ }
3968
+ .qt-metric .qt-metric-big-value {
3969
+ font-size: clamp(24px, 2.125rem, 34px);
3970
+ font-weight: 600;
3971
+ line-height: 1.2;
3972
+ }
3973
+ .qt-metric .qt-metric-big-sub {
3974
+ font-size: 11px;
3975
+ color: var(--qt-metric-muted, var(--qt-muted));
3976
+ }
3977
+ .qt-metric .qt-metric-pivot,
3978
+ .qt-metric .qt-metric-flat {
3979
+ width: 100%;
3980
+ }
3981
+ .qt-metric .qt-metric-pivot thead th,
3982
+ .qt-metric .qt-metric-flat thead th {
3983
+ background: var(--qt-header-bg, #f6f8fa);
3984
+ color: var(--qt-metric-muted, var(--qt-muted));
3985
+ font-weight: 500;
3986
+ }
3987
+ .qt-metric .qt-metric-pivot-wrap {
3988
+ min-height: 0;
3989
+ overflow: auto;
3990
+ }
3991
+ .qt-metric .qt-metric-legend {
3992
+ font-size: 10px;
3993
+ gap: 6px;
3994
+ max-width: 40%;
3995
+ }
3996
+ .qt-metric .qt-metric-legend li {
3997
+ align-items: center;
3998
+ gap: 5px;
3999
+ }
4000
+ .qt-metric .qt-metric-legend .qt-metric-swatch {
4001
+ width: 8px;
4002
+ height: 8px;
4003
+ border-radius: 2px;
4004
+ }
4005
+ .qt-metric-legend-top .qt-metric-legend,
4006
+ .qt-metric-legend-bottom .qt-metric-legend {
4007
+ max-width: 100%;
4008
+ }
4009
+ .qt-metric-loading {
4010
+ padding: 12px;
4011
+ }
4012
+ .qt-metric-empty {
4013
+ flex: 1;
4014
+ display: grid;
4015
+ place-items: center;
4016
+ font-style: normal;
4017
+ }
4018
+ .qt-metric .qt-metrics-error {
4019
+ margin: 6px 0;
4020
+ padding: 10px;
4021
+ background: var(--qt-fail-bg, #ffebe9);
4022
+ border-radius: 6px;
4023
+ font-size: 11px;
4024
+ overflow-wrap: anywhere;
4025
+ }
4026
+ .qt-metrics {
4027
+ position: relative;
4028
+ }
4029
+ .qt-metric.qt-metric {
4030
+ position: relative;
4031
+ }
4032
+ .qt-metric-edit,
4033
+ .qt-metrics-edit {
4034
+ position: absolute;
4035
+ right: 0.35rem;
4036
+ top: 0.35rem;
4037
+ z-index: 1;
4038
+ opacity: 0;
4039
+ pointer-events: none;
4040
+ background: transparent;
4041
+ }
4042
+ .qt-btn.qt-metric-edit,
4043
+ .qt-btn.qt-metrics-edit {
4044
+ color: var(--qt-metric-muted, var(--qt-muted, #8c959f));
4045
+ border: 1px dotted var(--qt-border, #d0d7de);
4046
+ }
4047
+ .qt-btn.qt-metric-edit:hover,
4048
+ .qt-btn.qt-metrics-edit:hover {
4049
+ color: var(--qt-metric-muted, var(--qt-muted, #8c959f));
4050
+ border-color: var(--qt-border, #d0d7de);
4051
+ background: var(--qt-header-bg, #f6f8fa);
4052
+ }
4053
+ .qt-metrics-edit {
4054
+ top: -0.75rem;
4055
+ z-index: 3;
4056
+ background: var(--qt-header-bg, #f6f8fa);
4057
+ }
4058
+ .qt-metric:hover > .qt-metric-edit,
4059
+ .qt-metric:focus-within > .qt-metric-edit,
4060
+ .qt-metrics:hover > .qt-metrics-edit,
4061
+ .qt-metrics:focus-within > .qt-metrics-edit {
4062
+ opacity: 1;
4063
+ pointer-events: auto;
4064
+ }
4065
+ .qt-metric:has(> .qt-metric-edit) .qt-metric-head {
4066
+ padding-right: 1.75rem;
4067
+ }
4068
+ @media (hover: none) {
4069
+ .qt-metric-edit,
4070
+ .qt-metrics-edit {
4071
+ opacity: 1;
4072
+ pointer-events: auto;
4073
+ }
4074
+ }
4075
+ .qt-request-activity {
4076
+ padding: 0.75rem;
4077
+ margin-block: 0.5rem;
4078
+ border: 1px solid var(--qt-border, #d0d7de);
4079
+ border-radius: 0.5rem;
4080
+ font-size: 0.8rem;
4081
+ }
4082
+ .qt-request-activity-head {
4083
+ display: flex;
4084
+ align-items: center;
4085
+ gap: 0.75rem;
4086
+ margin-bottom: 0.5rem;
4087
+ }
4088
+ .qt-request-activity-head .qt-btn {
4089
+ margin-left: auto;
4090
+ }
4091
+ .qt-request-activity-scroll {
4092
+ overflow: auto;
4093
+ max-height: 18rem;
4094
+ }
4095
+ .qt-request-activity table {
4096
+ width: 100%;
4097
+ text-align: left;
4098
+ border-collapse: collapse;
4099
+ }
4100
+ .qt-request-activity th,
4101
+ .qt-request-activity td {
4102
+ padding: 0.4rem 0.6rem;
4103
+ border-bottom: 1px solid var(--qt-border, #d0d7de);
4104
+ overflow-wrap: anywhere;
4105
+ }
4106
+ .qt-request-activity [data-status=error] {
4107
+ color: var(--qt-danger, #cf222e);
4108
+ }
4109
+
4110
+ /* src/metricsEditor.css */
4111
+ .qt-metrics-editor.qt-modal {
4112
+ width: min(1560px, calc(100vw - 48px));
4113
+ height: min(900px, calc(100dvh - 48px));
4114
+ max-width: calc(100vw - 48px);
4115
+ max-height: calc(100dvh - 48px);
4116
+ min-width: min(760px, calc(100vw - 48px));
4117
+ min-height: min(400px, calc(100dvh - 48px));
4118
+ border: 1px solid var(--qt-border, #d0d7de);
4119
+ border-radius: 12px;
4120
+ box-shadow: 0 24px 90px #1f23283b;
4121
+ padding: 0;
4122
+ resize: both;
4123
+ overflow: hidden;
4124
+ display: flex;
4125
+ flex-direction: column;
4126
+ box-sizing: border-box;
4127
+ font-size: 12px;
4128
+ line-height: 1.5;
4129
+ }
4130
+ .qt-metrics-editor *,
4131
+ .qt-metrics-editor *::before,
4132
+ .qt-metrics-editor *::after {
4133
+ box-sizing: border-box;
4134
+ }
4135
+ .qt-metrics-editor :is(input, select, textarea) {
4136
+ font: inherit;
4137
+ font-weight: 400;
4138
+ color: inherit;
4139
+ background: var(--qt-bg, #fff);
4140
+ border: 1px solid var(--qt-border, #d0d7de);
4141
+ border-radius: 6px;
4142
+ padding: 6px 9px;
4143
+ min-width: 0;
4144
+ width: 100%;
4145
+ }
4146
+ .qt-metrics-editor :is(input, select) {
4147
+ min-height: 34px;
4148
+ }
4149
+ .qt-metrics-editor input[type=checkbox] {
4150
+ width: 14px;
4151
+ height: 14px;
4152
+ min-height: 0;
4153
+ margin: 0;
4154
+ padding: 0;
4155
+ accent-color: var(--qt-accent, #0969da);
4156
+ }
4157
+ .qt-metrics-editor button {
4158
+ font: inherit;
4159
+ }
4160
+ .qt-metrics-editor .qt-btn {
4161
+ height: auto;
4162
+ min-height: 30px;
4163
+ padding: 5px 9px;
4164
+ justify-content: center;
4165
+ white-space: nowrap;
4166
+ }
4167
+ .qt-metrics-editor button:disabled {
4168
+ cursor: default;
4169
+ opacity: 0.5;
4170
+ }
4171
+ .qt-metrics-editor .qt-btn:hover:not(:disabled) {
4172
+ background: var(--qt-header-bg, #f6f8fa);
4173
+ border-color: var(--qt-border, #d0d7de);
4174
+ }
4175
+ .qt-metrics-editor .qt-btn-primary {
4176
+ background: var(--qt-accent, #0969da);
4177
+ border-color: var(--qt-accent, #0969da);
4178
+ color: #fff;
4179
+ font-weight: 600;
4180
+ }
4181
+ .qt-metrics-editor .qt-btn-primary:hover:not(:disabled) {
4182
+ background: var(--qt-accent, #0969da);
4183
+ border-color: var(--qt-accent, #0969da);
4184
+ filter: brightness(0.9);
4185
+ }
4186
+ .qt-metrics-editor :is(input, select, textarea, button, summary, [role=separator]):focus-visible {
4187
+ outline: 2px solid var(--qt-accent, #0969da);
4188
+ outline-offset: 2px;
4189
+ }
4190
+ .qt-metrics-editor label {
4191
+ display: flex;
4192
+ flex-direction: column;
4193
+ gap: 6px;
4194
+ font-size: 12px;
4195
+ font-weight: 500;
4196
+ min-width: 0;
4197
+ }
4198
+ .qt-metrics-editor label:has(> input[type=checkbox]) {
4199
+ flex-direction: row;
4200
+ align-items: center;
4201
+ font-weight: 400;
4202
+ }
4203
+ .qt-metrics-editor-header {
4204
+ display: flex;
4205
+ align-items: center;
4206
+ flex-shrink: 0;
4207
+ gap: 18px;
4208
+ padding: 14px 20px;
4209
+ border-bottom: 1px solid var(--qt-border, #d0d7de);
4210
+ }
4211
+ .qt-metrics-editor-header h2 {
4212
+ margin: 0;
4213
+ font-size: 18px;
4214
+ font-weight: 600;
4215
+ white-space: nowrap;
4216
+ }
4217
+ .qt-metrics-editor-header > label {
4218
+ width: 142px;
4219
+ }
4220
+ .qt-metrics-editor-header select {
4221
+ background: var(--qt-header-bg, #f6f8fa);
4222
+ }
4223
+ .qt-metrics-editor-header .qt-metric-close {
4224
+ border: 0;
4225
+ background: transparent;
4226
+ width: 32px;
4227
+ padding: 0;
4228
+ font-size: 22px;
4229
+ font-weight: 400;
4230
+ }
4231
+ .qt-metrics-editor-context {
4232
+ display: flex;
4233
+ flex-wrap: wrap;
4234
+ flex-shrink: 0;
4235
+ gap: 16px;
4236
+ padding: 9px 22px;
4237
+ background: var(--qt-header-bg, #f6f8fa);
4238
+ color: var(--qt-muted, #656d76);
4239
+ font-size: 12px;
4240
+ border-bottom: 1px solid var(--qt-border, #d0d7de);
4241
+ }
4242
+ .qt-metrics-editor-context b {
4243
+ color: var(--qt-text, #1f2328);
4244
+ font-weight: 500;
4245
+ }
4246
+ .qt-metric-workspace {
4247
+ display: grid;
4248
+ grid-template-rows: minmax(0, 1fr);
4249
+ flex: 1;
4250
+ min-height: 0;
4251
+ overflow: auto;
4252
+ }
4253
+ .qt-metric-workspace > :is(aside, section) {
4254
+ padding: 18px;
4255
+ overflow: auto;
4256
+ overscroll-behavior: contain;
4257
+ min-height: 0;
4258
+ min-width: 0;
4259
+ }
4260
+ .qt-metric-workspace h3 {
4261
+ font-size: 13px;
4262
+ line-height: 20px;
4263
+ margin: 0 0 16px;
4264
+ font-weight: 600;
4265
+ color: var(--qt-text, #1f2328);
4266
+ }
4267
+ .qt-metric-workspace > .qt-metric-library,
4268
+ .qt-metric-workspace > .qt-metric-reference {
4269
+ background: var( --qt-editor-library-bg, color-mix(in srgb, var(--qt-bg, #fff) 60%, var(--qt-header-bg, #f6f8fa)) );
4270
+ padding-inline: 14px;
4271
+ }
4272
+ .qt-metric-pane-separator {
4273
+ position: relative;
4274
+ background: var(--qt-header-bg, #f6f8fa);
4275
+ border-inline: 1px solid var(--qt-border, #d0d7de);
4276
+ cursor: col-resize;
4277
+ touch-action: none;
4278
+ }
4279
+ .qt-metric-pane-separator::after {
4280
+ content: "";
4281
+ position: absolute;
4282
+ width: 2px;
4283
+ height: 28px;
4284
+ border-radius: 2px;
4285
+ background: var(--qt-border, #d0d7de);
4286
+ top: calc(50% - 14px);
4287
+ left: 1px;
4288
+ }
4289
+ .qt-metric-pane-separator:is(:hover, :focus-visible) {
4290
+ background: var(--qt-accent-bg, #ddf4ff);
4291
+ }
4292
+ .qt-metric-pane-separator:focus-visible {
4293
+ outline-offset: -2px;
4294
+ }
4295
+ .qt-metric-library h3 {
4296
+ font-size: 11px;
4297
+ text-transform: uppercase;
4298
+ letter-spacing: 0.06em;
4299
+ color: var(--qt-muted, #656d76);
4300
+ }
4301
+ .qt-metric-library .qt-reorder-list {
4302
+ padding: 0;
4303
+ margin: 0 0 12px;
4304
+ overflow: visible;
4305
+ }
4306
+ .qt-metric-library .qt-reorder-item {
4307
+ position: relative;
4308
+ border: 1px solid transparent;
4309
+ border-radius: 7px;
4310
+ padding: 0;
4311
+ margin: 4px 0;
4312
+ min-height: 0;
4313
+ display: flex;
4314
+ gap: 0;
4315
+ background: transparent;
4316
+ transition: background-color 0.12s, border-color 0.12s;
4317
+ }
4318
+ .qt-metric-library-chip {
4319
+ width: 100%;
4320
+ border: 0;
4321
+ background: transparent;
4322
+ color: inherit;
4323
+ text-align: start;
4324
+ padding: 9px 26px;
4325
+ display: flex;
4326
+ flex-direction: column;
4327
+ gap: 3px;
4328
+ min-height: 54px;
4329
+ cursor: pointer;
4330
+ border-radius: inherit;
4331
+ }
4332
+ .qt-metric-library-chip strong {
4333
+ font-size: 12px;
4334
+ font-weight: 600;
4335
+ overflow-wrap: anywhere;
4336
+ }
4337
+ .qt-metric-library-chip span {
4338
+ font-size: 11px;
4339
+ color: var(--qt-muted, #656d76);
4340
+ }
4341
+ .qt-metric-dirty-dot {
4342
+ display: inline-block;
4343
+ vertical-align: middle;
4344
+ width: 5px;
4345
+ height: 5px;
4346
+ border-radius: 50%;
4347
+ margin-inline-start: 6px;
4348
+ background: var(--qt-accent, #0969da);
4349
+ }
4350
+ .qt-metric-library .qt-reorder-item:is(:hover, :focus-within) {
4351
+ background: var(--qt-cell-hover, #f0f7ff);
4352
+ border-color: var(--qt-border-subtle, #eaeef2);
4353
+ }
4354
+ .qt-metric-library .qt-reorder-item.qt-metric-library-selected {
4355
+ border-color: color-mix(in srgb, var(--qt-accent, #0969da) 25%, var(--qt-bg, #fff));
4356
+ background: var(--qt-accent-bg, #ddf4ff);
4357
+ }
4358
+ .qt-metric-library .qt-reorder-handle {
4359
+ position: absolute;
4360
+ inset-inline-start: 3px;
4361
+ top: 10px;
4362
+ z-index: 1;
4363
+ opacity: 0;
4364
+ }
4365
+ .qt-metrics-editor .qt-reorder-handle {
4366
+ width: 20px;
4367
+ min-width: 20px;
4368
+ min-height: 30px;
4369
+ padding: 0;
4370
+ border-radius: 4px;
4371
+ transition: opacity 0.12s;
4372
+ }
4373
+ .qt-metrics-editor .qt-reorder-handle .qt-icon {
4374
+ width: 12px;
4375
+ height: 12px;
4376
+ }
4377
+ .qt-metric-library .qt-reorder-item:is(:hover, :focus-within, .qt-metric-library-selected) > .qt-reorder-handle {
4378
+ opacity: 1;
4379
+ }
4380
+ .qt-metric-library .qt-metric-create {
4381
+ width: 100%;
4382
+ color: var(--qt-accent, #0969da);
4383
+ border-style: dashed;
4384
+ background: transparent;
4385
+ }
4386
+ .qt-metric-actions {
4387
+ position: absolute;
4388
+ top: 10px;
4389
+ inset-inline-end: 5px;
4390
+ z-index: 5;
4391
+ opacity: 0;
4392
+ transition: opacity 0.12s;
4393
+ }
4394
+ .qt-metric-actions summary {
4395
+ list-style: none;
4396
+ cursor: pointer;
4397
+ padding: 2px 4px;
4398
+ font-size: 18px;
4399
+ line-height: 24px;
4400
+ border-radius: 4px;
4401
+ }
4402
+ .qt-metric-actions summary::-webkit-details-marker {
4403
+ display: none;
4404
+ }
4405
+ .qt-metric-actions summary:hover {
4406
+ background: var(--qt-header-bg, #f6f8fa);
4407
+ }
4408
+ .qt-metric-actions > div {
4409
+ position: absolute;
4410
+ inset-inline-end: 0;
4411
+ top: 30px;
4412
+ width: 155px;
4413
+ display: flex;
4414
+ flex-direction: column;
4415
+ padding: 5px;
4416
+ background: var(--qt-bg, #fff);
4417
+ border: 1px solid var(--qt-border, #d0d7de);
4418
+ box-shadow: 0 8px 25px #1f232833;
4419
+ border-radius: 7px;
4420
+ }
4421
+ .qt-metric-actions button {
4422
+ text-align: start;
4423
+ background: transparent;
4424
+ border: 0;
4425
+ color: inherit;
4426
+ padding: 7px 8px;
4427
+ border-radius: 4px;
4428
+ cursor: pointer;
4429
+ }
4430
+ .qt-metric-actions button:hover {
4431
+ background: var(--qt-header-bg, #f6f8fa);
4432
+ }
4433
+ .qt-metric-actions button.qt-metric-remove {
4434
+ color: var(--qt-fail-fg, #cf222e);
4435
+ }
4436
+ .qt-reorder-item:is(:hover, :focus-within, .qt-metric-library-selected) .qt-metric-actions,
4437
+ .qt-metric-actions[open] {
4438
+ opacity: 1;
4439
+ }
4440
+ .qt-metric-definition {
4441
+ display: flex;
4442
+ flex-direction: column;
4443
+ gap: 0;
4444
+ }
4445
+ .qt-metric-definition > label {
4446
+ margin-bottom: 18px;
4447
+ font-weight: 600;
4448
+ }
4449
+ .qt-metric-expression-heading {
4450
+ display: flex;
4451
+ align-items: center;
4452
+ justify-content: space-between;
4453
+ gap: 8px;
4454
+ font-size: 12px;
4455
+ margin-bottom: 8px;
4456
+ }
4457
+ .qt-metric-expression-heading strong {
4458
+ font-weight: 600;
4459
+ }
4460
+ .qt-metric-mode {
4461
+ display: flex;
4462
+ gap: 6px;
4463
+ }
4464
+ .qt-metric-mode button {
4465
+ border: 1px solid var(--qt-border, #d0d7de);
4466
+ border-radius: 6px;
4467
+ background: var(--qt-bg, #fff);
4468
+ color: inherit;
4469
+ font-size: 11px;
4470
+ min-height: 26px;
4471
+ padding: 3px 8px;
4472
+ cursor: pointer;
4473
+ }
4474
+ .qt-metric-mode button[aria-pressed=true] {
4475
+ background: var(--qt-accent-bg, #ddf4ff);
4476
+ border-color: color-mix(in srgb, var(--qt-accent, #0969da) 25%, var(--qt-bg, #fff));
4477
+ color: var(--qt-accent, #0969da);
4478
+ }
4479
+ .qt-metric-basic {
4480
+ display: flex;
4481
+ gap: 8px;
4482
+ margin-bottom: 18px;
4483
+ }
4484
+ .qt-metric-basic select {
4485
+ flex: 1;
4486
+ width: 50%;
4487
+ }
4488
+ .qt-metrics-editor .qt-formula-layout {
4489
+ gap: 0;
4490
+ margin: 0 0 12px;
4491
+ flex-shrink: 0;
4492
+ }
4493
+ .qt-metrics-editor .qt-formula-input {
4494
+ font:
4495
+ 12px/1.8 ui-monospace,
4496
+ SFMono-Regular,
4497
+ Consolas,
4498
+ monospace;
4499
+ min-height: 104px;
4500
+ max-height: 260px;
4501
+ padding: 12px;
4502
+ }
4503
+ .qt-metrics-editor .qt-formula-tools {
4504
+ font-size: 10px;
4505
+ margin-top: 5px;
4506
+ }
4507
+ .qt-metric-definition > strong {
4508
+ font-size: 12px;
4509
+ font-weight: 600;
4510
+ margin: 0 0 8px;
4511
+ }
4512
+ .qt-metric-validation {
4513
+ color: var(--qt-pass-fg, #1a7f37);
4514
+ margin: 0 0 18px;
4515
+ font-size: 11px;
4516
+ }
4517
+ .qt-metric-settings {
4518
+ border: 0;
4519
+ border-top: 1px solid var(--qt-border-subtle, #eaeef2);
4520
+ border-radius: 0;
4521
+ flex-shrink: 0;
4522
+ }
4523
+ .qt-metric-settings > summary {
4524
+ cursor: pointer;
4525
+ padding: 12px 0;
4526
+ display: flex;
4527
+ align-items: center;
4528
+ gap: 8px;
4529
+ list-style: none;
4530
+ font-size: 12px;
4531
+ }
4532
+ .qt-metric-settings > summary::-webkit-details-marker {
4533
+ display: none;
4534
+ }
4535
+ .qt-metric-settings > summary::before {
4536
+ content: "\25b8";
4537
+ font-size: 10px;
4538
+ color: var(--qt-muted, #656d76);
4539
+ flex-shrink: 0;
4540
+ }
4541
+ .qt-metric-settings[open] > summary::before {
4542
+ content: "\25be";
4543
+ }
4544
+ .qt-metric-settings > summary strong {
4545
+ font-weight: 600;
4546
+ white-space: nowrap;
4547
+ }
4548
+ .qt-metric-settings > summary span {
4549
+ color: var(--qt-muted, #656d76);
4550
+ font-size: 10px;
4551
+ margin-inline-start: auto;
4552
+ max-width: 58%;
4553
+ text-align: end;
4554
+ white-space: nowrap;
4555
+ overflow: hidden;
4556
+ text-overflow: ellipsis;
4557
+ }
4558
+ .qt-metric-settings > div {
4559
+ padding: 0 0 12px;
4560
+ display: flex;
4561
+ flex-direction: column;
4562
+ gap: 10px;
4563
+ }
4564
+ .qt-metric-scope {
4565
+ display: flex;
4566
+ background: var(--qt-header-bg, #f6f8fa);
4567
+ border: 1px solid var(--qt-border, #d0d7de);
4568
+ padding: 3px;
4569
+ border-radius: 7px;
4570
+ gap: 3px;
4571
+ }
4572
+ .qt-metric-scope button {
4573
+ flex: 1;
4574
+ border: 0;
4575
+ border-radius: 4px;
4576
+ background: transparent;
4577
+ padding: 5px 8px;
4578
+ min-height: 30px;
4579
+ cursor: pointer;
4580
+ color: inherit;
4581
+ }
4582
+ .qt-metric-scope button[aria-pressed=true] {
4583
+ background: var(--qt-bg, #fff);
4584
+ box-shadow: 0 1px 3px #1f23281a;
4585
+ color: var(--qt-accent, #0969da);
4586
+ }
4587
+ .qt-metric-help {
4588
+ font-size: 11px;
4589
+ color: var(--qt-muted, #656d76);
4590
+ margin: 0;
4591
+ font-weight: 400;
4592
+ }
4593
+ .qt-metric-group-row {
4594
+ display: flex;
4595
+ align-items: center;
4596
+ gap: 6px;
4597
+ }
4598
+ .qt-metric-group-row select {
4599
+ min-width: 0;
4600
+ flex: 1;
4601
+ }
4602
+ .qt-metric-sort-row {
4603
+ display: grid;
4604
+ grid-template-columns: minmax(100px, 1fr) minmax(90px, 0.9fr) 26px;
4605
+ gap: 6px;
4606
+ }
4607
+ .qt-metric-sort-row select:nth-child(3) {
4608
+ grid-row: 2;
4609
+ grid-column: 1 / 3;
4610
+ }
4611
+ .qt-metric-sort-row button {
4612
+ grid-row: 1;
4613
+ grid-column: 3;
4614
+ }
4615
+ .qt-metric-group-row button,
4616
+ .qt-metric-sort-row button {
4617
+ border: 0;
4618
+ border-radius: 4px;
4619
+ background: transparent;
4620
+ color: var(--qt-muted, #656d76);
4621
+ cursor: pointer;
4622
+ padding: 4px;
4623
+ min-height: 28px;
4624
+ }
4625
+ .qt-metric-group-row button:hover,
4626
+ .qt-metric-sort-row button:hover {
4627
+ background: var(--qt-header-bg, #f6f8fa);
4628
+ }
4629
+ .qt-metric-size-controls {
4630
+ display: grid;
4631
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4632
+ gap: 8px;
4633
+ }
4634
+ .qt-metric-size-controls label {
4635
+ font-size: 11px;
4636
+ color: var(--qt-muted, #656d76);
4637
+ font-weight: 400;
4638
+ white-space: nowrap;
4639
+ }
4640
+ .qt-metric-format-controls {
4641
+ display: grid;
4642
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 62px;
4643
+ align-items: start;
4644
+ gap: 8px;
4645
+ }
4646
+ .qt-metric-format-controls--temporal {
4647
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4648
+ }
4649
+ .qt-metric-format-controls label {
4650
+ font-size: 11px;
4651
+ font-weight: 400;
4652
+ color: var(--qt-muted, #656d76);
4653
+ }
4654
+ .qt-metric-format-controls select {
4655
+ padding-inline: 6px;
4656
+ }
4657
+ .qt-metric-temporal-controls {
4658
+ grid-column: 1 / -1;
4659
+ display: grid;
4660
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4661
+ gap: 8px;
4662
+ }
4663
+ .qt-metric-temporal-controls label:has(input) {
4664
+ grid-column: 1 / -1;
4665
+ }
4666
+ .qt-metric-format-example {
4667
+ grid-column: 1 / -1;
4668
+ background: var(--qt-header-bg, #f6f8fa);
4669
+ border: 1px solid var(--qt-border-subtle, #eaeef2);
4670
+ border-radius: 6px;
4671
+ padding: 8px 10px;
4672
+ font-size: 11px;
4673
+ color: var(--qt-muted, #656d76);
4674
+ overflow-wrap: anywhere;
4675
+ }
4676
+ .qt-metric-format-example strong {
4677
+ display: block;
4678
+ margin-top: 2px;
4679
+ color: var(--qt-text, #1f2328);
4680
+ font-size: 15px;
4681
+ font-weight: 600;
4682
+ font-variant-numeric: tabular-nums;
4683
+ }
4684
+ .qt-metric-list-controls {
4685
+ display: grid;
4686
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4687
+ gap: 8px;
4688
+ }
4689
+ .qt-metric-reference {
4690
+ display: flex;
4691
+ flex-direction: column;
4692
+ gap: 16px;
4693
+ }
4694
+ .qt-metric-reference > * {
4695
+ flex-shrink: 0;
4696
+ }
4697
+ .qt-metric-reference h3 {
4698
+ margin-bottom: 0;
4699
+ }
4700
+ .qt-metric-reference > select {
4701
+ background: var(--qt-header-bg, #f6f8fa);
4702
+ }
4703
+ .qt-metric-reference-list {
4704
+ display: grid;
4705
+ gap: 0;
4706
+ }
4707
+ .qt-metric-reference-columns,
4708
+ .qt-metric-reference-item {
4709
+ display: grid;
4710
+ grid-template-columns: 3.5rem minmax(0, 1fr) minmax(0, 1.2fr);
4711
+ gap: 0.5rem;
4712
+ align-items: center;
4713
+ padding: 0.375rem 0.25rem;
4714
+ min-width: 0;
4715
+ }
4716
+ .qt-metric-reference-columns {
4717
+ color: var(--qt-muted, #656d76);
4718
+ font-size: 10px;
4719
+ border-bottom: 1px solid var(--qt-border, #d0d7de);
4720
+ }
4721
+ .qt-metric-reference-item {
4722
+ text-align: start;
4723
+ border: 0;
4724
+ border-bottom: 1px solid var(--qt-border-subtle, #eaeef2);
4725
+ border-radius: 0;
4726
+ background: transparent;
4727
+ color: inherit;
4728
+ cursor: pointer;
4729
+ }
4730
+ .qt-metric-reference-item:hover {
4731
+ background: var(--qt-cell-hover, #f0f7ff);
4732
+ }
4733
+ .qt-metric-reference-item > * {
4734
+ min-width: 0;
4735
+ overflow: hidden;
4736
+ text-overflow: ellipsis;
4737
+ white-space: nowrap;
4738
+ }
4739
+ .qt-metric-reference-item strong {
4740
+ font-size: 11px;
4741
+ font-weight: 500;
4742
+ }
4743
+ .qt-metric-reference-item code,
4744
+ .qt-metric-reference-item span {
4745
+ font-size: 10px;
4746
+ color: var(--qt-muted, #656d76);
4747
+ }
4748
+ .qt-metric-reset-layout {
4749
+ margin-inline-start: auto;
4750
+ }
4751
+ .qt-metric-discard-actions {
4752
+ display: flex;
4753
+ flex-wrap: wrap;
4754
+ justify-content: flex-end;
4755
+ gap: 0.5rem;
4756
+ margin-top: 1rem;
4757
+ }
4758
+ .qt-metric-discard-actions > button {
4759
+ flex: 0 0 auto;
4760
+ }
4761
+ .qt-metric-workspace > .qt-metric-live-preview {
4762
+ background: var(--qt-bg, #fff);
4763
+ }
4764
+ .qt-metric-preview-heading {
4765
+ display: flex;
4766
+ align-items: center;
4767
+ justify-content: space-between;
4768
+ gap: 8px;
4769
+ margin-bottom: 6px;
4770
+ }
4771
+ .qt-metric-preview-heading h3 {
4772
+ margin: 0;
4773
+ }
4774
+ .qt-metric-preview-status {
4775
+ border: 1px solid var(--qt-border-subtle, #eaeef2);
4776
+ border-radius: 4px;
4777
+ padding: 2px 6px;
4778
+ font-size: 10px;
4779
+ color: var(--qt-muted, #656d76);
4780
+ background: var(--qt-header-bg, #f6f8fa);
4781
+ white-space: nowrap;
4782
+ }
4783
+ .qt-metric-preview-scope {
4784
+ font-size: 12px;
4785
+ margin: 0 0 4px;
4786
+ }
4787
+ .qt-metric-preview-controls {
4788
+ display: flex;
4789
+ flex-wrap: wrap;
4790
+ gap: 8px;
4791
+ align-items: center;
4792
+ margin: 12px 0 10px;
4793
+ }
4794
+ .qt-metric-preview-controls label {
4795
+ flex-direction: row;
4796
+ align-items: center;
4797
+ gap: 4px;
4798
+ font-size: 10px;
4799
+ font-weight: 400;
4800
+ }
4801
+ .qt-metric-preview-controls input {
4802
+ width: 64px;
4803
+ min-height: 28px;
4804
+ padding: 4px 6px;
4805
+ }
4806
+ .qt-metric-preview-controls .qt-btn {
4807
+ font-size: 11px;
4808
+ min-height: 28px;
4809
+ padding: 4px 7px;
4810
+ }
4811
+ .qt-metric-preview-controls .qt-metric-refresh {
4812
+ font-size: 16px;
4813
+ width: 28px;
4814
+ padding: 0;
4815
+ }
4816
+ .qt-metric-preview-card {
4817
+ resize: both;
4818
+ overflow: auto;
4819
+ min-width: 100px;
4820
+ min-height: 60px;
4821
+ max-width: 1800px;
4822
+ max-height: 1000px;
4823
+ padding: 0;
4824
+ box-sizing: border-box;
4825
+ }
4826
+ .qt-metric-preview-card > .qt-metric {
4827
+ width: 100% !important;
4828
+ height: 100% !important;
4829
+ min-width: 0 !important;
4830
+ min-height: 0 !important;
4831
+ margin: 0;
4832
+ }
4833
+ .qt-metric-preview-card + .qt-metric-help {
4834
+ margin-top: 12px;
4835
+ }
4836
+ .qt-metric-live-preview > .qt-muted {
4837
+ font-size: 11px;
4838
+ margin: 10px 0 16px;
4839
+ }
4840
+ .qt-metric-inspection-expression {
4841
+ background: var(--qt-header-bg, #f6f8fa);
4842
+ border: 1px solid var(--qt-border-subtle, #eaeef2);
4843
+ border-radius: 6px;
4844
+ padding: 10px;
4845
+ font-size: 11px;
4846
+ overflow-wrap: anywhere;
4847
+ white-space: pre-wrap;
4848
+ }
4849
+ .qt-metric-inspection-values {
4850
+ background: var(--qt-header-bg, #f6f8fa);
4851
+ border: 1px solid var(--qt-border-subtle, #eaeef2);
4852
+ border-radius: 6px;
4853
+ padding: 8px 12px;
4854
+ margin: 0;
4855
+ font-size: 11px;
4856
+ }
4857
+ .qt-metric-inspection-values > div {
4858
+ display: flex;
4859
+ justify-content: space-between;
4860
+ gap: 12px;
4861
+ margin: 4px 0;
4862
+ }
4863
+ .qt-metric-inspection-values dd {
4864
+ margin: 0;
4865
+ font-variant-numeric: tabular-nums;
4866
+ text-align: end;
4867
+ overflow-wrap: anywhere;
4868
+ }
4869
+ .qt-metrics-editor-footer {
4870
+ padding: 14px 22px;
4871
+ border-top: 1px solid var(--qt-border, #d0d7de);
4872
+ background: var(--qt-header-bg, #f6f8fa);
4873
+ display: flex;
4874
+ align-items: center;
4875
+ flex-shrink: 0;
4876
+ gap: 8px;
4877
+ }
4878
+ .qt-metrics-editor-footer > span {
4879
+ flex: 1;
4880
+ font-size: 12px;
4881
+ }
4882
+ .qt-metrics-editor-footer .qt-btn {
4883
+ font-size: 14px;
4884
+ min-height: 36px;
4885
+ }
4886
+ .qt-metric-editor-error {
4887
+ background: var(--qt-fail-bg, #ffebe9);
4888
+ color: var(--qt-fail-fg, #cf222e);
4889
+ border: 1px solid color-mix(in srgb, var(--qt-fail-fg, #cf222e) 25%, var(--qt-bg, #fff));
4890
+ padding: 8px 10px;
4891
+ border-radius: 6px;
4892
+ font-size: 12px;
4893
+ margin: 0 0 12px;
4894
+ overflow-wrap: anywhere;
4895
+ }
4896
+ .qt-metrics-editor > .qt-metric-editor-error {
4897
+ margin: 8px 18px;
4898
+ flex-shrink: 0;
4899
+ }
4900
+ .qt-metric-layout-editor {
4901
+ flex: 1;
4902
+ min-height: 0;
4903
+ display: flex;
4904
+ flex-direction: column;
4905
+ background: var(--qt-header-bg, #f6f8fa);
4906
+ }
4907
+ .qt-metric-canvas-controls {
4908
+ display: flex;
4909
+ align-items: center;
4910
+ gap: 16px;
4911
+ flex-wrap: wrap;
4912
+ padding: 18px 20px 12px;
4913
+ flex-shrink: 0;
4914
+ }
4915
+ .qt-metric-canvas-heading {
4916
+ margin-inline-end: auto;
4917
+ }
4918
+ .qt-metric-canvas-heading strong {
4919
+ display: block;
4920
+ font-size: 13px;
4921
+ font-weight: 600;
4922
+ margin-bottom: 4px;
4923
+ }
4924
+ .qt-metric-canvas-presets {
4925
+ display: flex;
4926
+ align-items: center;
4927
+ gap: 8px;
4928
+ flex-wrap: wrap;
4929
+ padding: 6px 8px;
4930
+ border: 1px solid var(--qt-border, #d0d7de);
4931
+ border-radius: 8px;
4932
+ background: var(--qt-bg, #fff);
4933
+ }
4934
+ .qt-metric-canvas-presets label {
4935
+ flex-direction: row;
4936
+ align-items: center;
4937
+ font-weight: 400;
4938
+ }
4939
+ .qt-metric-canvas-presets input {
4940
+ width: 84px;
4941
+ }
4942
+ .qt-metric-canvas-presets span {
4943
+ font-size: 11px;
4944
+ color: var(--qt-muted, #656d76);
4945
+ }
4946
+ .qt-metric-canvas-presets .qt-btn {
4947
+ min-height: 34px;
4948
+ font-size: 11px;
4949
+ }
4950
+ .qt-metric-canvas-presets button[aria-pressed=true] {
4951
+ background: var(--qt-accent-bg, #ddf4ff);
4952
+ border-color: color-mix(in srgb, var(--qt-accent, #0969da) 25%, var(--qt-bg, #fff));
4953
+ color: var(--qt-accent, #0969da);
4954
+ }
4955
+ .qt-metric-layout-controls {
4956
+ display: flex;
4957
+ align-items: end;
4958
+ flex-wrap: wrap;
4959
+ gap: 12px;
4960
+ padding: 12px;
4961
+ margin: 0 20px 14px;
4962
+ border: 1px solid var(--qt-border, #d0d7de);
4963
+ border-radius: 8px;
4964
+ background: var(--qt-bg, #fff);
4965
+ flex-shrink: 0;
4966
+ }
4967
+ .qt-metric-layout-controls label {
4968
+ font-size: 11px;
4969
+ color: var(--qt-muted, #656d76);
4970
+ font-weight: 400;
4971
+ gap: 4px;
4972
+ }
4973
+ .qt-metric-layout-controls :is(.qt-metric-layout-picker, .qt-metric-layout-name) {
4974
+ flex: 1;
4975
+ min-width: 160px;
4976
+ }
4977
+ .qt-metric-layout-controls .qt-metric-size-controls {
4978
+ display: flex;
4979
+ flex-wrap: wrap;
4980
+ gap: 12px;
4981
+ }
4982
+ .qt-metric-layout-controls .qt-metric-size-controls label {
4983
+ width: 86px;
4984
+ }
4985
+ .qt-metric-layout-controls > .qt-btn {
4986
+ min-height: 34px;
4987
+ }
4988
+ .qt-metric-canvas-scroll {
4989
+ flex: 1;
4990
+ min-height: 0;
4991
+ overflow: auto;
4992
+ overscroll-behavior: contain;
4993
+ padding: 12px;
4994
+ margin: 0 20px;
4995
+ border: 1px solid var(--qt-border, #d0d7de);
4996
+ border-bottom: 0;
4997
+ border-radius: 8px 8px 0 0;
4998
+ background: var(--qt-border-subtle, #eaeef2);
4999
+ }
5000
+ .qt-metric-layout-canvas {
5001
+ min-height: 100%;
5002
+ max-width: none;
5003
+ background: var(--qt-header-bg, #f6f8fa);
5004
+ }
5005
+ .qt-metric-layout-items {
5006
+ display: flex;
5007
+ align-items: flex-start;
5008
+ flex-wrap: wrap;
5009
+ gap: 12px;
5010
+ margin: 0;
5011
+ padding: 0;
5012
+ overflow: visible;
5013
+ }
5014
+ .qt-metric-layout-items > .qt-reorder-item {
5015
+ position: relative;
5016
+ padding: 0;
5017
+ display: block;
5018
+ border: 0;
5019
+ background: transparent;
5020
+ max-width: 100%;
5021
+ outline: 1px solid transparent;
5022
+ border-radius: 8px;
5023
+ transition: outline-color 0.12s;
5024
+ }
5025
+ .qt-metric-layout-items > .qt-reorder-item.qt-metric-layout-selected {
5026
+ outline-color: var(--qt-accent, #0969da);
5027
+ }
5028
+ .qt-metric-layout-items > .qt-reorder-item > .qt-reorder-handle {
5029
+ position: absolute;
5030
+ z-index: 5;
5031
+ top: 8px;
5032
+ inset-inline-start: 4px;
5033
+ opacity: 0;
5034
+ }
5035
+ .qt-metric-layout-items > .qt-reorder-item:is(:hover, :focus-within) > .qt-reorder-handle {
5036
+ opacity: 1;
5037
+ }
5038
+ .qt-metric-layout-card {
5039
+ height: 100%;
5040
+ width: 100%;
5041
+ }
5042
+ .qt-metric-layout-card > .qt-metric {
5043
+ width: 100% !important;
5044
+ height: 100% !important;
5045
+ min-width: 0 !important;
5046
+ min-height: 0 !important;
5047
+ }
5048
+ .qt-metric-layout-card .qt-metric-head {
5049
+ padding-inline-end: 22px;
5050
+ }
5051
+ .qt-metric-layout-card .qt-metric-title {
5052
+ padding-inline-start: 0;
5053
+ transition: padding 0.12s;
5054
+ }
5055
+ .qt-reorder-item:is(:hover, :focus-within) .qt-metric-layout-card .qt-metric-title {
5056
+ padding-inline-start: 14px;
5057
+ }
5058
+ .qt-metrics-editor .qt-metric--chart {
5059
+ min-height: 0;
5060
+ }
5061
+ .qt-metrics-editor .qt-metric-chart-layout {
5062
+ min-height: 80px;
5063
+ flex: 1 0 80px;
5064
+ }
5065
+ .qt-metrics-editor .qt-metric-plot {
5066
+ min-height: 80px;
5067
+ }
5068
+ @media (max-width: 1000px) {
5069
+ .qt-metric-canvas-controls {
5070
+ align-items: flex-start;
5071
+ gap: 10px;
5072
+ padding: 12px;
5073
+ }
5074
+ .qt-metric-layout-controls {
5075
+ margin-inline: 12px;
5076
+ }
5077
+ .qt-metric-canvas-scroll {
5078
+ margin-inline: 12px;
5079
+ }
5080
+ }
5081
+ @media (max-width: 760px), (pointer: coarse) and (max-height: 500px) {
5082
+ .qt-metrics-editor.qt-modal.qt-sheet {
5083
+ width: 100%;
5084
+ max-width: 100%;
5085
+ min-width: 0;
5086
+ height: 100%;
5087
+ max-height: 100%;
5088
+ min-height: 0;
5089
+ border-radius: 12px 12px 0 0;
5090
+ resize: none;
5091
+ }
5092
+ .qt-metrics-editor-header {
5093
+ flex-wrap: wrap;
5094
+ gap: 8px;
5095
+ padding: 10px 12px;
5096
+ }
5097
+ .qt-metrics-editor-header h2 {
5098
+ font-size: 16px;
5099
+ }
5100
+ .qt-metrics-editor-header > label {
5101
+ flex: 1;
5102
+ width: auto;
5103
+ }
5104
+ .qt-metrics-editor-header > .qt-btn:not(.qt-metric-close) {
5105
+ display: none;
5106
+ }
5107
+ .qt-metrics-editor-header .qt-metric-close {
5108
+ min-height: 34px;
5109
+ }
5110
+ .qt-metrics-editor-context {
5111
+ gap: 12px;
5112
+ padding: 8px 12px;
5113
+ font-size: 11px;
5114
+ }
5115
+ .qt-metrics-editor-footer {
5116
+ gap: 8px;
5117
+ padding: 10px 12px max(10px, env(safe-area-inset-bottom));
5118
+ }
5119
+ .qt-metrics-editor-footer > span {
5120
+ font-size: 10px;
5121
+ }
5122
+ .qt-metrics-editor-footer .qt-btn {
5123
+ font-size: 12px;
5124
+ min-height: 38px;
5125
+ }
5126
+ .qt-metric-workspace > :is(aside, section) {
5127
+ padding: 12px;
5128
+ }
5129
+ .qt-metric-layout-controls {
5130
+ max-height: 35dvh;
5131
+ overflow: auto;
5132
+ }
5133
+ }
5134
+ @media (prefers-reduced-motion: reduce) {
5135
+ .qt-metrics-editor * {
5136
+ scroll-behavior: auto;
5137
+ transition: none;
5138
+ }
5139
+ }
5140
+ .qt-metrics-editor [hidden] {
5141
+ display: none !important;
5142
+ }
5143
+ .qt-metric-workbench-tools {
5144
+ display: flex;
5145
+ align-items: center;
5146
+ gap: 12px;
5147
+ flex-wrap: wrap;
5148
+ padding: 8px 18px;
5149
+ border-bottom: 1px solid var(--qt-border, #d0d7de);
5150
+ flex-shrink: 0;
5151
+ background: var(--qt-bg, #fff);
5152
+ }
5153
+ .qt-metric-selection-tools {
5154
+ display: flex;
5155
+ align-items: center;
5156
+ gap: 4px;
5157
+ min-width: 0;
5158
+ }
5159
+ .qt-metric-selection-tools select {
5160
+ width: 230px;
5161
+ min-height: 30px;
5162
+ padding-block: 4px;
5163
+ font-weight: 500;
5164
+ }
5165
+ .qt-metric-panel-tools {
5166
+ display: flex;
5167
+ align-items: center;
5168
+ gap: 4px;
5169
+ margin-inline-start: auto;
5170
+ }
5171
+ .qt-metric-panel-tools > span:first-child {
5172
+ margin-inline-end: 4px;
5173
+ font-size: 11px;
5174
+ color: var(--qt-muted, #656d76);
5175
+ }
5176
+ .qt-metrics-editor .qt-metric-icon-button {
5177
+ display: inline-flex;
5178
+ align-items: center;
5179
+ width: 30px;
5180
+ min-height: 30px;
5181
+ padding: 0;
5182
+ flex-shrink: 0;
5183
+ }
5184
+ .qt-metric-panel-tools .qt-btn[aria-pressed=true] {
5185
+ color: var(--qt-accent, #0969da);
5186
+ border-color: color-mix(in srgb, var(--qt-accent, #0969da) 25%, var(--qt-bg, #fff));
5187
+ background: var(--qt-accent-bg, #ddf4ff);
5188
+ }
5189
+ .qt-metric-panel-tools .qt-btn[aria-pressed=false] {
5190
+ color: var(--qt-muted, #656d76);
5191
+ background: var(--qt-header-bg, #f6f8fa);
5192
+ }
5193
+ .qt-metric-pane-heading {
5194
+ display: flex;
5195
+ align-items: center;
5196
+ gap: 6px;
5197
+ justify-content: space-between;
5198
+ margin-bottom: 16px;
5199
+ }
5200
+ .qt-metric-workspace .qt-metric-pane-heading h3 {
5201
+ margin: 0;
5202
+ }
5203
+ .qt-metric-reference .qt-metric-pane-heading {
5204
+ margin-bottom: 0;
5205
+ }
5206
+ .qt-metrics-editor .qt-metric-pane-collapse {
5207
+ border: 0;
5208
+ background: transparent;
5209
+ color: var(--qt-muted, #656d76);
5210
+ width: 24px;
5211
+ min-height: 24px;
5212
+ opacity: 0.5;
5213
+ }
5214
+ .qt-metric-pane-collapse:is(:hover, :focus-visible) {
5215
+ opacity: 1;
5216
+ }
5217
+ .qt-metric-preview-heading .qt-metric-preview-status {
5218
+ margin-inline-start: auto;
5219
+ }
5220
+ .qt-metric-needs-attention {
5221
+ display: inline-flex;
5222
+ vertical-align: middle;
5223
+ margin-inline-start: 5px;
5224
+ color: var(--qt-fail-fg, #cf222e);
5225
+ }
5226
+ .qt-metric-review-issues {
5227
+ color: var(--qt-fail-fg, #cf222e);
5228
+ }
5229
+ .qt-metric-authoring-empty {
5230
+ display: flex;
5231
+ flex-direction: column;
5232
+ align-items: center;
5233
+ text-align: center;
5234
+ gap: 12px;
5235
+ padding: 32px 16px;
5236
+ color: var(--qt-muted, #656d76);
5237
+ }
5238
+ .qt-metric-authoring-empty p {
5239
+ margin: 0;
5240
+ }
5241
+ .qt-metric-authoring-empty strong {
5242
+ color: var(--qt-text, #1f2328);
5243
+ }
5244
+ .qt-metric-canvas-frame {
5245
+ position: relative;
5246
+ min-height: 100%;
5247
+ padding-inline-end: 18px;
5248
+ }
5249
+ .qt-metric-canvas-resize {
5250
+ position: absolute;
5251
+ inset-inline-end: 0;
5252
+ top: 0;
5253
+ bottom: 0;
5254
+ width: 18px;
5255
+ cursor: col-resize;
5256
+ touch-action: none;
5257
+ background: var(--qt-header-bg, #f6f8fa);
5258
+ border-inline-start: 1px solid var(--qt-border, #d0d7de);
5259
+ border-inline-end: 1px solid var(--qt-border, #d0d7de);
5260
+ border-radius: 0 5px 5px 0;
5261
+ color: var(--qt-muted, #656d76);
5262
+ }
5263
+ .qt-metric-canvas-resize > .qt-icon {
5264
+ position: sticky;
5265
+ top: 120px;
5266
+ margin-top: 110px;
5267
+ margin-inline-start: 1px;
5268
+ }
5269
+ .qt-metric-canvas-resize:is(:hover, :focus-visible) {
5270
+ background: var(--qt-accent-bg, #ddf4ff);
5271
+ color: var(--qt-accent, #0969da);
5272
+ }
5273
+ .qt-metric-canvas-note {
5274
+ flex-shrink: 0;
5275
+ padding: 8px 20px;
5276
+ border-top: 1px solid var(--qt-border, #d0d7de);
5277
+ }
5278
+ .qt-metric-layout-card .qt-metric-head {
5279
+ padding-inline-end: 56px;
5280
+ }
5281
+ .qt-metrics-editor .qt-metric-card-edit {
5282
+ position: absolute;
5283
+ top: 10px;
5284
+ inset-inline-end: 28px;
5285
+ z-index: 4;
5286
+ min-height: 28px;
5287
+ width: 28px;
5288
+ background: var(--qt-bg, #fff);
5289
+ border: 0;
5290
+ opacity: 0;
5291
+ }
5292
+ .qt-metric-card-resize {
5293
+ position: absolute;
5294
+ inset-inline-end: 0;
5295
+ bottom: 0;
5296
+ display: flex;
5297
+ justify-content: center;
5298
+ align-items: center;
5299
+ width: 22px;
5300
+ height: 22px;
5301
+ padding: 0;
5302
+ background: var(--qt-bg, #fff);
5303
+ border: 0;
5304
+ border-radius: 4px 0 8px 0;
5305
+ color: var(--qt-muted, #656d76);
5306
+ cursor: nwse-resize;
5307
+ touch-action: none;
5308
+ z-index: 4;
5309
+ opacity: 0;
5310
+ }
5311
+ .qt-metric-layout-selected .qt-metric-card-resize,
5312
+ .qt-reorder-item:is(:hover, :focus-within) :is(.qt-metric-card-edit, .qt-metric-card-resize) {
5313
+ opacity: 1;
5314
+ }
5315
+ .qt-metric-card-resize:is(:hover, :focus-visible) {
5316
+ color: var(--qt-accent, #0969da);
5317
+ background: var(--qt-accent-bg, #ddf4ff);
5318
+ }
5319
+ @media (pointer: coarse) {
5320
+ .qt-metric-card-resize {
5321
+ width: 30px;
5322
+ height: 30px;
5323
+ }
5324
+ .qt-metric-card-edit,
5325
+ .qt-metric-card-resize {
5326
+ opacity: 1 !important;
5327
+ }
5328
+ }
5329
+ @media (max-width: 760px) {
5330
+ .qt-metric-workbench-tools {
5331
+ padding: 8px 12px;
5332
+ gap: 8px;
5333
+ }
5334
+ .qt-metric-selection-tools {
5335
+ flex: 1;
5336
+ }
5337
+ .qt-metric-selection-tools select {
5338
+ width: auto;
5339
+ flex: 1;
5340
+ }
5341
+ .qt-metric-panel-tools {
5342
+ margin-inline-start: 0;
5343
+ }
5344
+ .qt-metric-context-link {
5345
+ margin-inline-start: auto;
5346
+ }
5347
+ .qt-metrics-editor-footer {
5348
+ flex-wrap: wrap;
5349
+ }
5350
+ .qt-metrics-editor-footer > span {
5351
+ min-width: 100%;
5352
+ }
5353
+ .qt-metric-canvas-note {
5354
+ padding-inline: 12px;
5355
+ }
5356
+ }
5357
+ @keyframes qt-metric-view-enter {
5358
+ from {
5359
+ opacity: 0.65;
5360
+ }
5361
+ to {
5362
+ opacity: 1;
5363
+ }
5364
+ }
5365
+ .qt-metric-workspace,
5366
+ .qt-metric-layout-editor {
5367
+ animation: qt-metric-view-enter 140ms ease-out;
5368
+ }
5369
+ @media (prefers-reduced-motion: reduce) {
5370
+ .qt-metric-workspace,
5371
+ .qt-metric-layout-editor {
5372
+ animation: none;
5373
+ }
5374
+ }
5375
+ .qt-metric-axis-settings {
5376
+ border: 1px solid var(--qt-border-subtle, #eaeef2);
5377
+ border-radius: 0.375rem;
5378
+ margin: 0 0 0.75rem;
5379
+ padding: 0.5rem;
5380
+ display: grid;
5381
+ grid-template-columns: 1.2fr 1fr 1fr;
5382
+ gap: 0.5rem;
5383
+ min-width: 0;
5384
+ }
5385
+ .qt-metric-axis-settings legend {
5386
+ font-size: 0.75rem;
5387
+ color: var(--qt-muted, #656d76);
5388
+ }
5389
+ .qt-metric-axis-settings label {
5390
+ min-width: 0;
5391
+ display: flex;
5392
+ flex-direction: column;
5393
+ gap: 0.25rem;
5394
+ }
5395
+ .qt-metric-axis-settings input,
5396
+ .qt-metric-axis-settings select {
5397
+ width: 100%;
5398
+ box-sizing: border-box;
5399
+ min-width: 0;
5400
+ }
5401
+
5402
+ /* src/theme.css */
3582
5403
  /*# sourceMappingURL=theme.css.map */