@pythia-software/query-table-ui 0.1.0 → 0.3.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
@@ -109,15 +109,26 @@
109
109
  .qt-link-btn:hover:not(:disabled) {
110
110
  color: var(--qt-text);
111
111
  }
112
+ .qt-btn:focus-visible,
113
+ .qt-add:focus-visible,
114
+ .qt-link-btn:focus-visible,
115
+ .qt-chip-x:focus-visible,
116
+ .qt-chip-op-btn:focus-visible,
117
+ .qt-table-wrap:focus-visible {
118
+ outline: 2px solid var(--qt-accent);
119
+ outline-offset: 2px;
120
+ }
112
121
  .qt-table-wrap {
113
122
  position: relative;
114
123
  display: block;
115
- overflow-x: auto;
116
- overflow-y: hidden;
124
+ overflow: auto;
117
125
  overscroll-behavior-x: contain;
118
126
  -webkit-overflow-scrolling: touch;
119
127
  touch-action: pan-x pan-y;
120
128
  }
129
+ .qt-table-scroll-cue {
130
+ display: none;
131
+ }
121
132
  .qt-table-wrap--loading .qt-row {
122
133
  opacity: 0.55;
123
134
  transition: opacity 120ms ease-in;
@@ -130,6 +141,16 @@
130
141
  font-size: var(--qt-font-size);
131
142
  table-layout: fixed;
132
143
  }
144
+ .qt-table thead {
145
+ position: sticky;
146
+ top: 0;
147
+ z-index: 3;
148
+ }
149
+ .qt-table tfoot {
150
+ position: sticky;
151
+ bottom: 0;
152
+ z-index: 3;
153
+ }
133
154
  .qt-th {
134
155
  background: var(--qt-header-bg);
135
156
  font-weight: 600;
@@ -172,6 +193,19 @@
172
193
  .qt-table-wrap--resizing {
173
194
  cursor: col-resize;
174
195
  }
196
+ .qt-resize-guide {
197
+ position: absolute;
198
+ top: 0;
199
+ bottom: 0;
200
+ left: 0;
201
+ z-index: 3;
202
+ display: none;
203
+ width: 1px;
204
+ pointer-events: none;
205
+ background: var(--qt-accent);
206
+ opacity: 0.8;
207
+ will-change: transform;
208
+ }
175
209
  .qt-cell {
176
210
  padding: 8px 12px;
177
211
  border-bottom: 1px solid var(--qt-border-subtle);
@@ -221,6 +255,9 @@
221
255
  .qt-row--selected .qt-cell:hover {
222
256
  background: var(--qt-row-selected-bg);
223
257
  }
258
+ .qt-virtual-spacer {
259
+ pointer-events: none;
260
+ }
224
261
  .qt-empty {
225
262
  text-align: center;
226
263
  color: var(--qt-muted);
@@ -276,14 +313,15 @@
276
313
  box-shadow: inset 0 0 0 2px var(--qt-accent);
277
314
  }
278
315
  .qt-loading-bar {
279
- position: absolute;
316
+ position: sticky;
280
317
  top: 0;
281
318
  left: 0;
282
319
  right: 0;
283
320
  height: 2px;
321
+ margin-bottom: -2px;
284
322
  overflow: hidden;
285
323
  background: var(--qt-border-subtle);
286
- z-index: 1;
324
+ z-index: 4;
287
325
  pointer-events: none;
288
326
  }
289
327
  .qt-loading-bar::before {
@@ -462,6 +500,9 @@
462
500
  border-radius: var(--qt-radius);
463
501
  padding: 2px 6px;
464
502
  }
503
+ .qt-qb-window-field {
504
+ display: contents;
505
+ }
465
506
  .qt-qb-saved {
466
507
  display: inline-flex;
467
508
  align-items: center;
@@ -648,6 +689,11 @@
648
689
  align-items: center;
649
690
  gap: 4px;
650
691
  }
692
+ .qt-sort-extract {
693
+ display: inline-flex;
694
+ align-items: center;
695
+ gap: 4px;
696
+ }
651
697
  .qt-chip-and {
652
698
  color: var(--qt-muted);
653
699
  font-size: 11px;
@@ -687,11 +733,140 @@
687
733
  .qt-chip-x:hover {
688
734
  color: var(--qt-fail-fg);
689
735
  }
736
+ .qt-chip-move-buttons {
737
+ display: none;
738
+ }
690
739
  .qt-autocomplete-hint {
691
740
  color: var(--qt-muted);
692
741
  font-size: 10px;
693
742
  font-style: italic;
694
743
  }
744
+ .qt-where-term-wrap {
745
+ display: inline-flex;
746
+ align-items: center;
747
+ gap: 4px;
748
+ }
749
+ .qt-where-and {
750
+ color: var(--qt-muted);
751
+ font-size: 11px;
752
+ text-transform: uppercase;
753
+ letter-spacing: 0.5px;
754
+ padding: 0 1px;
755
+ }
756
+ .qt-chip--where {
757
+ position: relative;
758
+ height: auto;
759
+ min-height: 24px;
760
+ flex-wrap: wrap;
761
+ }
762
+ .qt-chip--where .qt-chip-grip {
763
+ cursor: grab;
764
+ }
765
+ .qt-chip--or {
766
+ border-top-color: var(--qt-border);
767
+ border-bottom-color: var(--qt-border);
768
+ border-left-color: #fff;
769
+ border-right-color: #fff;
770
+ background: #fff;
771
+ align-items: center;
772
+ min-height: 42px;
773
+ padding: 7px 4px;
774
+ }
775
+ .qt-or-group {
776
+ display: inline-flex;
777
+ align-items: center;
778
+ gap: 4px;
779
+ flex-wrap: wrap;
780
+ border: 1px solid var(--qt-border);
781
+ border-radius: var(--qt-radius);
782
+ padding: 3px 6px;
783
+ }
784
+ .qt-or-member {
785
+ display: inline-flex;
786
+ align-items: center;
787
+ gap: 4px;
788
+ }
789
+ .qt-chip-or {
790
+ color: var(--qt-muted);
791
+ font-weight: 700;
792
+ font-size: 11px;
793
+ }
794
+ .qt-pred {
795
+ display: inline-flex;
796
+ align-items: center;
797
+ gap: 4px;
798
+ }
799
+ .qt-op-picker {
800
+ position: relative;
801
+ display: inline-flex;
802
+ }
803
+ .qt-op-trigger {
804
+ display: inline-flex;
805
+ align-items: center;
806
+ gap: 2px;
807
+ }
808
+ .qt-op-caret {
809
+ font-size: 8px;
810
+ color: var(--qt-muted);
811
+ }
812
+ .qt-op-pop {
813
+ position: absolute;
814
+ top: calc(100% + 4px);
815
+ left: 0;
816
+ z-index: 210;
817
+ display: grid;
818
+ grid-template-columns: 1fr 1fr;
819
+ gap: 1px 4px;
820
+ min-width: 190px;
821
+ padding: 4px;
822
+ background: #fff;
823
+ color: var(--qt-text);
824
+ border: 1px solid var(--qt-border);
825
+ border-radius: var(--qt-radius);
826
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
827
+ }
828
+ .qt-op-cell {
829
+ display: block;
830
+ text-align: left;
831
+ white-space: nowrap;
832
+ font: inherit;
833
+ font-size: 12px;
834
+ padding: 4px 8px;
835
+ border: 1px solid transparent;
836
+ border-radius: 4px;
837
+ background: transparent;
838
+ color: var(--qt-text);
839
+ cursor: pointer;
840
+ }
841
+ .qt-op-cell:hover {
842
+ background: var(--qt-header-bg);
843
+ }
844
+ .qt-op-cell--neg {
845
+ color: var(--qt-fail-fg);
846
+ }
847
+ .qt-op-cell--neg:hover {
848
+ background: var(--qt-fail-bg);
849
+ }
850
+ .qt-op-cell--on {
851
+ border-color: var(--qt-accent);
852
+ background: var(--qt-accent-bg);
853
+ font-weight: 600;
854
+ }
855
+ .qt-op-cell--neg.qt-op-cell--on {
856
+ border-color: var(--qt-fail-fg);
857
+ background: var(--qt-fail-bg);
858
+ }
859
+ .qt-chip--drop-before {
860
+ box-shadow: -3px 0 0 var(--qt-accent);
861
+ }
862
+ .qt-chip--drop-after {
863
+ box-shadow: 3px 0 0 var(--qt-accent);
864
+ }
865
+ .qt-chip--drop-merge {
866
+ outline: 2px dashed var(--qt-accent);
867
+ outline-offset: 1px;
868
+ background: var(--qt-accent-bg);
869
+ }
695
870
  .qt-picker {
696
871
  position: relative;
697
872
  display: inline-block;
@@ -699,6 +874,7 @@
699
874
  .qt-picker-input {
700
875
  font: inherit;
701
876
  font-size: 12px;
877
+ color: var(--qt-text);
702
878
  border: 1px solid var(--qt-accent);
703
879
  border-radius: 4px;
704
880
  padding: 2px 6px;
@@ -712,6 +888,7 @@
712
888
  max-height: 280px;
713
889
  overflow-y: auto;
714
890
  background: #fff;
891
+ color: var(--qt-text);
715
892
  border: 1px solid var(--qt-border);
716
893
  border-radius: var(--qt-radius);
717
894
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
@@ -735,6 +912,7 @@
735
912
  text-align: left;
736
913
  border: 0;
737
914
  background: transparent;
915
+ color: var(--qt-text);
738
916
  cursor: pointer;
739
917
  padding: 5px 8px;
740
918
  font-size: 12px;
@@ -830,6 +1008,48 @@
830
1008
  border-radius: 3px;
831
1009
  font-size: 11px;
832
1010
  }
1011
+ .qt-cm-filter-grid {
1012
+ display: grid;
1013
+ grid-template-columns: 1fr 1fr;
1014
+ gap: 1px 4px;
1015
+ padding: 0 2px 2px;
1016
+ }
1017
+ .qt-cm-col-head {
1018
+ font-size: 10px;
1019
+ text-transform: uppercase;
1020
+ letter-spacing: 0.5px;
1021
+ color: var(--qt-muted);
1022
+ padding: 2px 8px 0;
1023
+ }
1024
+ .qt-cm-col-head--neg {
1025
+ color: var(--qt-fail-fg);
1026
+ }
1027
+ .qt-cm-filter {
1028
+ display: flex;
1029
+ align-items: center;
1030
+ gap: 4px;
1031
+ padding: 5px 8px;
1032
+ font-size: 12px;
1033
+ white-space: nowrap;
1034
+ overflow: hidden;
1035
+ }
1036
+ .qt-cm-filter .qt-cm-op {
1037
+ font-weight: 600;
1038
+ }
1039
+ .qt-cm-filter code {
1040
+ flex: 0 1 auto;
1041
+ overflow: hidden;
1042
+ text-overflow: ellipsis;
1043
+ }
1044
+ .qt-cm-filter--neg {
1045
+ color: var(--qt-fail-fg);
1046
+ }
1047
+ .qt-cm-filter--neg:hover {
1048
+ background: var(--qt-fail-bg);
1049
+ }
1050
+ .qt-cm-filter-empty {
1051
+ display: block;
1052
+ }
833
1053
  .qt-selection-toolbar {
834
1054
  display: flex;
835
1055
  align-items: center;
@@ -1126,6 +1346,9 @@
1126
1346
  border-radius: 0;
1127
1347
  box-sizing: border-box;
1128
1348
  }
1349
+ .qt-qt-section--expanded > .qt-qt-section-head {
1350
+ display: none;
1351
+ }
1129
1352
  .qt-qt-section-title {
1130
1353
  font-size: 12px;
1131
1354
  color: var(--qt-muted);
@@ -1169,4 +1392,861 @@
1169
1392
  border: 1px solid var(--qt-border);
1170
1393
  border-radius: 0 0 var(--qt-radius) 0;
1171
1394
  }
1395
+ @media (pointer: coarse) {
1396
+ .qt-btn,
1397
+ .qt-add,
1398
+ .qt-link-btn {
1399
+ min-height: 40px;
1400
+ height: auto;
1401
+ padding: 8px 10px;
1402
+ touch-action: manipulation;
1403
+ }
1404
+ .qt-chip-x,
1405
+ .qt-chip-op-btn,
1406
+ .qt-qb-saved-star,
1407
+ .qt-qb-saved-cancel,
1408
+ .qt-saved-pick,
1409
+ .qt-picker-item,
1410
+ .qt-cm-item {
1411
+ touch-action: manipulation;
1412
+ }
1413
+ .qt-resize-handle {
1414
+ display: none;
1415
+ }
1416
+ }
1417
+ @media (max-width: 640px) {
1418
+ .qt-qb {
1419
+ font-size: 14px;
1420
+ }
1421
+ .qt-qb-bar {
1422
+ padding: 10px;
1423
+ }
1424
+ .qt-qb-state-bar {
1425
+ min-height: 48px;
1426
+ padding-left: 50px;
1427
+ gap: 8px;
1428
+ }
1429
+ .qt-qb-state-main {
1430
+ flex: 1 1 auto;
1431
+ overflow: hidden;
1432
+ }
1433
+ .qt-qb-saved {
1434
+ min-width: 0;
1435
+ }
1436
+ .qt-qb-saved-star {
1437
+ width: 32px;
1438
+ min-width: 32px;
1439
+ min-height: 32px;
1440
+ font-size: 18px;
1441
+ }
1442
+ .qt-qb-saved-name {
1443
+ max-width: 45vw;
1444
+ overflow: hidden;
1445
+ text-overflow: ellipsis;
1446
+ white-space: nowrap;
1447
+ font-size: 14px;
1448
+ }
1449
+ .qt-qb-saved-input-wrap {
1450
+ max-width: 100%;
1451
+ }
1452
+ .qt-qb-saved-input {
1453
+ width: 100%;
1454
+ min-width: 0;
1455
+ }
1456
+ .qt-qb-collapse-btn {
1457
+ left: 6px;
1458
+ top: 50%;
1459
+ width: 36px;
1460
+ min-width: 36px;
1461
+ height: 36px;
1462
+ min-height: 36px;
1463
+ padding: 0;
1464
+ border-right: 1px solid var(--qt-border);
1465
+ border-radius: var(--qt-radius);
1466
+ }
1467
+ .qt-qb-editor-bar {
1468
+ flex-direction: column;
1469
+ gap: 14px;
1470
+ padding: 12px 10px;
1471
+ }
1472
+ .qt-qb-editor-bar .qt-qb-body {
1473
+ width: 100%;
1474
+ gap: 14px;
1475
+ }
1476
+ .qt-qb-editor-bar .qt-qb-row {
1477
+ align-items: flex-start;
1478
+ gap: 8px;
1479
+ }
1480
+ .qt-qb-editor-bar .qt-qb-row:not(.qt-qb-pagination) > .qt-qb-kw {
1481
+ flex: 1 0 100%;
1482
+ width: auto;
1483
+ min-width: 0;
1484
+ font-size: 11px;
1485
+ font-weight: 700;
1486
+ }
1487
+ .qt-qb-editor-stack {
1488
+ width: 100%;
1489
+ min-width: 0;
1490
+ flex-direction: row;
1491
+ gap: 8px;
1492
+ }
1493
+ .qt-qb-editor-stack .qt-btn {
1494
+ flex: 1;
1495
+ min-width: 0;
1496
+ }
1497
+ .qt-chip {
1498
+ height: auto;
1499
+ min-height: 40px;
1500
+ padding: 4px 8px;
1501
+ gap: 5px;
1502
+ flex-wrap: wrap;
1503
+ font-size: 13px;
1504
+ }
1505
+ .qt-chip-grip {
1506
+ display: none;
1507
+ }
1508
+ .qt-chip-x {
1509
+ min-width: 30px;
1510
+ min-height: 30px;
1511
+ padding: 4px 7px;
1512
+ justify-content: center;
1513
+ font-size: 13px;
1514
+ }
1515
+ .qt-chip-move-buttons {
1516
+ display: inline-flex;
1517
+ align-items: center;
1518
+ overflow: hidden;
1519
+ border: 1px solid var(--qt-border-subtle);
1520
+ border-radius: 5px;
1521
+ }
1522
+ .qt-chip-move {
1523
+ display: inline-flex;
1524
+ align-items: center;
1525
+ justify-content: center;
1526
+ width: 30px;
1527
+ min-width: 30px;
1528
+ height: 30px;
1529
+ padding: 0;
1530
+ color: var(--qt-text);
1531
+ background: #fff;
1532
+ border: 0;
1533
+ border-right: 1px solid var(--qt-border-subtle);
1534
+ font: inherit;
1535
+ font-size: 14px;
1536
+ cursor: pointer;
1537
+ touch-action: manipulation;
1538
+ }
1539
+ .qt-chip-move:last-child {
1540
+ border-right: 0;
1541
+ }
1542
+ .qt-chip-move:disabled {
1543
+ opacity: 0.35;
1544
+ }
1545
+ .qt-chip-move:focus-visible {
1546
+ z-index: 1;
1547
+ outline: 2px solid var(--qt-accent);
1548
+ outline-offset: -2px;
1549
+ }
1550
+ .qt-chip-op,
1551
+ .qt-chip-val {
1552
+ height: 32px;
1553
+ min-height: 32px;
1554
+ padding: 4px 6px;
1555
+ font-size: 16px;
1556
+ }
1557
+ .qt-chip-op-btn {
1558
+ height: 32px;
1559
+ padding: 4px 8px;
1560
+ font-size: 13px;
1561
+ }
1562
+ .qt-chip-where-list,
1563
+ .qt-chip-where-clause,
1564
+ .qt-sort-extract {
1565
+ max-width: 100%;
1566
+ }
1567
+ .qt-chip--where {
1568
+ flex: 1 0 100%;
1569
+ max-width: 100%;
1570
+ }
1571
+ .qt-chip--agg {
1572
+ flex: 1 0 100%;
1573
+ }
1574
+ .qt-chip-agg-group {
1575
+ height: 32px;
1576
+ font-size: 13px;
1577
+ }
1578
+ .qt-chip-agg-group .qt-chip-x {
1579
+ min-width: 28px;
1580
+ min-height: 28px;
1581
+ font-size: 12px;
1582
+ }
1583
+ .qt-qb-pagination {
1584
+ display: flex;
1585
+ gap: 10px;
1586
+ }
1587
+ .qt-qb-window-field {
1588
+ display: flex;
1589
+ flex: 1 1 0;
1590
+ flex-direction: column;
1591
+ gap: 5px;
1592
+ min-width: 0;
1593
+ }
1594
+ .qt-qb-window-field .qt-qb-kw {
1595
+ width: auto;
1596
+ min-width: 0;
1597
+ flex: none;
1598
+ font-size: 11px;
1599
+ font-weight: 700;
1600
+ }
1601
+ .qt-qb-num {
1602
+ width: 100%;
1603
+ min-height: 40px;
1604
+ box-sizing: border-box;
1605
+ padding: 6px 8px;
1606
+ font-size: 16px;
1607
+ }
1608
+ .qt-qb-row--metrics {
1609
+ padding-top: 14px;
1610
+ margin-top: 0;
1611
+ }
1612
+ .qt-qb-run-bar {
1613
+ align-items: center;
1614
+ row-gap: 6px;
1615
+ }
1616
+ .qt-qb-run-metric {
1617
+ font-size: 12px;
1618
+ }
1619
+ .qt-qb-run-actions {
1620
+ display: flex;
1621
+ flex: 1 0 100%;
1622
+ flex-wrap: wrap;
1623
+ gap: 8px;
1624
+ margin-left: 0;
1625
+ }
1626
+ .qt-qb-auto-status {
1627
+ flex: 1 0 100%;
1628
+ line-height: 1.4;
1629
+ }
1630
+ .qt-auto-refresh,
1631
+ .qt-qb-run-actions > .qt-btn {
1632
+ flex: 1 1 0;
1633
+ }
1634
+ .qt-auto-refresh > .qt-btn {
1635
+ width: 100%;
1636
+ justify-content: center;
1637
+ }
1638
+ .qt-auto-refresh-popover {
1639
+ position: fixed;
1640
+ inset: auto max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
1641
+ width: auto;
1642
+ max-height: calc(100dvh - 24px);
1643
+ overflow-y: auto;
1644
+ gap: 12px;
1645
+ padding: 16px;
1646
+ border-radius: 12px;
1647
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
1648
+ }
1649
+ .qt-auto-refresh-field {
1650
+ font-size: 14px;
1651
+ }
1652
+ .qt-auto-refresh-select {
1653
+ width: 150px;
1654
+ height: 40px;
1655
+ padding: 6px 8px;
1656
+ font-size: 16px;
1657
+ }
1658
+ .qt-picker {
1659
+ flex: 1 0 100%;
1660
+ width: 100%;
1661
+ }
1662
+ .qt-picker-input {
1663
+ width: 100%;
1664
+ min-height: 42px;
1665
+ box-sizing: border-box;
1666
+ padding: 7px 9px;
1667
+ font-size: 16px;
1668
+ }
1669
+ .qt-picker-list {
1670
+ width: 100%;
1671
+ max-width: calc(100vw - 44px);
1672
+ max-height: min(320px, 50dvh);
1673
+ }
1674
+ .qt-picker-group-label {
1675
+ padding: 7px 10px;
1676
+ }
1677
+ .qt-picker-item {
1678
+ min-height: 48px;
1679
+ padding: 8px 10px;
1680
+ font-size: 14px;
1681
+ }
1682
+ .qt-selection-toolbar {
1683
+ flex-wrap: wrap;
1684
+ gap: 8px;
1685
+ padding: 8px 10px;
1686
+ border-radius: 0;
1687
+ }
1688
+ .qt-selection-actions {
1689
+ flex: 1 0 100%;
1690
+ margin-left: 0;
1691
+ }
1692
+ .qt-selection-actions > * {
1693
+ min-height: 40px;
1694
+ }
1695
+ .qt-qt-section--expanded > .qt-qt-section-head {
1696
+ display: flex;
1697
+ }
1698
+ .qt-qt-section-head {
1699
+ min-height: 48px;
1700
+ padding: 8px 10px 8px 50px;
1701
+ background: var(--qt-header-bg);
1702
+ }
1703
+ .qt-qt-section-title {
1704
+ font-size: 11px;
1705
+ }
1706
+ .qt-qt-section-summary {
1707
+ overflow: hidden;
1708
+ text-overflow: ellipsis;
1709
+ white-space: nowrap;
1710
+ }
1711
+ .qt-qt-section-toggle {
1712
+ z-index: 2;
1713
+ left: 6px;
1714
+ top: 6px;
1715
+ width: 36px;
1716
+ min-width: 36px;
1717
+ height: 36px;
1718
+ min-height: 36px;
1719
+ padding: 0;
1720
+ border-right: 1px solid var(--qt-border);
1721
+ border-radius: var(--qt-radius);
1722
+ }
1723
+ .qt-metrics {
1724
+ gap: 10px;
1725
+ padding: 10px;
1726
+ border-top: 0;
1727
+ }
1728
+ .qt-metric,
1729
+ .qt-metric--gb2,
1730
+ .qt-metric--gb3 {
1731
+ flex: 1 0 100%;
1732
+ min-width: 0;
1733
+ }
1734
+ .qt-metric-big-value {
1735
+ font-size: 28px;
1736
+ }
1737
+ .qt-table-scroll-cue {
1738
+ display: flex;
1739
+ align-items: center;
1740
+ justify-content: flex-end;
1741
+ gap: 5px;
1742
+ min-height: 30px;
1743
+ padding: 5px 10px;
1744
+ box-sizing: border-box;
1745
+ color: var(--qt-accent);
1746
+ background: var(--qt-accent-bg);
1747
+ border-right: 1px solid var(--qt-border);
1748
+ border-left: 1px solid var(--qt-border);
1749
+ font-size: 11px;
1750
+ font-weight: 700;
1751
+ letter-spacing: 0.02em;
1752
+ }
1753
+ .qt-table-scroll-cue span {
1754
+ font-size: 15px;
1755
+ }
1756
+ .qt-table-wrap {
1757
+ container-type: inline-size;
1758
+ border-radius: 0 0 var(--qt-radius) var(--qt-radius);
1759
+ scrollbar-color: var(--qt-border) transparent;
1760
+ scrollbar-width: thin;
1761
+ }
1762
+ .qt-th,
1763
+ .qt-cell {
1764
+ padding-top: 11px;
1765
+ padding-bottom: 11px;
1766
+ }
1767
+ .qt-th.qt-checkbox-cell:first-child {
1768
+ position: sticky;
1769
+ left: 0;
1770
+ z-index: 3;
1771
+ background: var(--qt-header-bg);
1772
+ box-shadow: 1px 0 0 var(--qt-border-subtle);
1773
+ }
1774
+ .qt-row > .qt-checkbox-cell:first-child {
1775
+ position: sticky;
1776
+ left: 0;
1777
+ z-index: 1;
1778
+ background: #fff;
1779
+ box-shadow: 1px 0 0 var(--qt-border-subtle);
1780
+ }
1781
+ .qt-row--selected > .qt-checkbox-cell:first-child {
1782
+ background: var(--qt-row-selected-bg);
1783
+ }
1784
+ .qt-checkbox-cell input {
1785
+ width: 20px;
1786
+ height: 20px;
1787
+ margin: 0;
1788
+ }
1789
+ .qt-empty {
1790
+ position: sticky;
1791
+ left: 0;
1792
+ height: 88px;
1793
+ padding-left: 18px;
1794
+ text-align: left;
1795
+ }
1796
+ .qt-table-summary {
1797
+ position: sticky;
1798
+ left: 12px;
1799
+ width: calc(100vw - 48px);
1800
+ width: calc(100cqw - 24px);
1801
+ min-height: 40px;
1802
+ }
1803
+ .qt-table-summary .qt-btn {
1804
+ min-width: 76px;
1805
+ }
1806
+ .qt-cell-menu {
1807
+ inset: auto max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)) !important;
1808
+ width: auto !important;
1809
+ max-height: calc(100dvh - 24px);
1810
+ overflow-y: auto;
1811
+ padding: 8px;
1812
+ border-radius: 12px;
1813
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
1814
+ }
1815
+ .qt-cm-header {
1816
+ padding: 8px 10px 10px;
1817
+ }
1818
+ .qt-cm-item {
1819
+ min-height: 44px;
1820
+ padding: 10px 12px;
1821
+ font-size: 15px;
1822
+ }
1823
+ .qt-modal-backdrop {
1824
+ align-items: flex-end;
1825
+ box-sizing: border-box;
1826
+ padding: 12px max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
1827
+ }
1828
+ .qt-modal {
1829
+ width: 100%;
1830
+ max-height: calc(100dvh - 24px);
1831
+ box-sizing: border-box;
1832
+ padding: 18px;
1833
+ border-radius: 14px;
1834
+ }
1835
+ .qt-modal-title {
1836
+ margin-bottom: 14px;
1837
+ }
1838
+ .qt-saved-item {
1839
+ flex-wrap: wrap;
1840
+ gap: 8px;
1841
+ padding: 10px 0;
1842
+ }
1843
+ .qt-saved-pick {
1844
+ flex: 1 0 100%;
1845
+ min-width: 0;
1846
+ padding: 6px 2px;
1847
+ }
1848
+ .qt-saved-default,
1849
+ .qt-saved-delete {
1850
+ flex: 1;
1851
+ justify-content: center;
1852
+ }
1853
+ .qt-modal-footer .qt-btn {
1854
+ min-width: 96px;
1855
+ justify-content: center;
1856
+ }
1857
+ }
1858
+ @media (prefers-reduced-motion: reduce) {
1859
+ .qt-loading-bar::before {
1860
+ animation: none;
1861
+ }
1862
+ .qt-qb-collapse-caret,
1863
+ .qt-qt-section-toggle-caret {
1864
+ transition: none;
1865
+ }
1866
+ }
1867
+ .qt-select-editor {
1868
+ width: min(1480px, 97vw);
1869
+ height: min(900px, 94vh);
1870
+ display: flex;
1871
+ flex-direction: column;
1872
+ background: var(--qt-bg, #fff);
1873
+ color: var(--qt-fg, #172033);
1874
+ border: 1px solid var(--qt-border, #dbe1e8);
1875
+ border-radius: 12px;
1876
+ box-shadow: 0 24px 80px #0004;
1877
+ overflow: hidden;
1878
+ }
1879
+ .qt-select-editor-header,
1880
+ .qt-select-editor-footer {
1881
+ display: flex;
1882
+ align-items: center;
1883
+ gap: 12px;
1884
+ padding: 18px 24px;
1885
+ flex-shrink: 0;
1886
+ }
1887
+ .qt-select-editor-header {
1888
+ justify-content: space-between;
1889
+ border-bottom: 1px solid var(--qt-border, #dbe1e8);
1890
+ }
1891
+ .qt-select-editor h2,
1892
+ .qt-select-editor h3,
1893
+ .qt-select-editor p {
1894
+ margin: 0 0 10px;
1895
+ }
1896
+ .qt-select-editor h2 {
1897
+ font-size: 21px;
1898
+ }
1899
+ .qt-select-editor h3 {
1900
+ font-size: 15px;
1901
+ }
1902
+ .qt-select-editor p,
1903
+ .qt-select-editor label,
1904
+ .qt-select-editor small {
1905
+ font-size: 12px;
1906
+ line-height: 1.5;
1907
+ }
1908
+ .qt-select-editor-header p {
1909
+ margin: 0;
1910
+ color: var(--qt-muted, #64748b);
1911
+ }
1912
+ .qt-select-editor-body {
1913
+ display: grid;
1914
+ grid-template-columns: 240px 240px minmax(0, 1fr);
1915
+ flex: 1;
1916
+ min-height: 0;
1917
+ }
1918
+ .qt-selected-panel,
1919
+ .qt-catalogue-panel {
1920
+ padding: 18px 14px;
1921
+ border-right: 1px solid var(--qt-border, #dbe1e8);
1922
+ overflow-y: auto;
1923
+ }
1924
+ .qt-column-workbench {
1925
+ padding: 20px 24px;
1926
+ overflow: auto;
1927
+ min-width: 0;
1928
+ }
1929
+ .qt-editor-columns {
1930
+ list-style: none;
1931
+ padding: 0;
1932
+ margin: 14px 0;
1933
+ }
1934
+ .qt-editor-columns li {
1935
+ display: flex;
1936
+ align-items: center;
1937
+ gap: 3px;
1938
+ border: 1px solid var(--qt-border, #dbe1e8);
1939
+ border-radius: 6px;
1940
+ margin-bottom: 7px;
1941
+ padding: 7px 5px;
1942
+ }
1943
+ .qt-column-name {
1944
+ border: 0;
1945
+ background: transparent;
1946
+ text-align: left;
1947
+ flex: 1;
1948
+ min-width: 0;
1949
+ overflow: hidden;
1950
+ text-overflow: ellipsis;
1951
+ cursor: pointer;
1952
+ color: inherit;
1953
+ }
1954
+ .qt-icon-btn {
1955
+ border: 0;
1956
+ background: transparent;
1957
+ color: inherit;
1958
+ padding: 3px;
1959
+ cursor: pointer;
1960
+ }
1961
+ .qt-icon-btn:disabled {
1962
+ opacity: .3;
1963
+ cursor: default;
1964
+ }
1965
+ .qt-catalogue-panel > .qt-input {
1966
+ width: 100%;
1967
+ box-sizing: border-box;
1968
+ }
1969
+ .qt-create-computed {
1970
+ width: 100%;
1971
+ margin: 10px 0;
1972
+ }
1973
+ .qt-catalogue-item {
1974
+ display: flex;
1975
+ align-items: center;
1976
+ gap: 8px;
1977
+ padding: 7px;
1978
+ border-radius: 6px;
1979
+ margin: 3px 0;
1980
+ }
1981
+ .qt-catalogue-item.is-active {
1982
+ background: var(--qt-accent-bg, #edf3ff);
1983
+ }
1984
+ .qt-catalogue-item button {
1985
+ display: flex;
1986
+ flex-direction: column;
1987
+ gap: 4px;
1988
+ text-align: left;
1989
+ border: 0;
1990
+ background: transparent;
1991
+ color: inherit;
1992
+ min-width: 0;
1993
+ cursor: pointer;
1994
+ }
1995
+ .qt-catalogue-item small {
1996
+ color: var(--qt-muted, #64748b);
1997
+ overflow-wrap: anywhere;
1998
+ }
1999
+ .qt-editor-title {
2000
+ display: flex;
2001
+ align-items: center;
2002
+ justify-content: space-between;
2003
+ gap: 10px;
2004
+ margin-bottom: 12px;
2005
+ }
2006
+ .qt-editor-label {
2007
+ display: flex;
2008
+ flex-direction: column;
2009
+ gap: 6px;
2010
+ margin-bottom: 12px;
2011
+ font-weight: 600;
2012
+ }
2013
+ .qt-type-badge {
2014
+ border-radius: 20px;
2015
+ background: #eaf3ff;
2016
+ color: #275eb2;
2017
+ padding: 4px 10px;
2018
+ font-size: 11px;
2019
+ }
2020
+ .qt-function-library {
2021
+ margin: 10px 0;
2022
+ font-size: 12px;
2023
+ }
2024
+ .qt-function-library summary {
2025
+ cursor: pointer;
2026
+ margin-bottom: 8px;
2027
+ }
2028
+ .qt-function-list {
2029
+ max-height: 190px;
2030
+ overflow: auto;
2031
+ margin: 8px 0;
2032
+ }
2033
+ .qt-function-list button {
2034
+ display: flex;
2035
+ flex-direction: column;
2036
+ text-align: left;
2037
+ gap: 3px;
2038
+ padding: 8px;
2039
+ background: transparent;
2040
+ border: 0;
2041
+ border-bottom: 1px solid var(--qt-border, #dbe1e8);
2042
+ width: 100%;
2043
+ color: inherit;
2044
+ cursor: pointer;
2045
+ }
2046
+ .qt-function-list small {
2047
+ color: var(--qt-muted, #64748b);
2048
+ }
2049
+ .qt-function-help {
2050
+ padding: 10px;
2051
+ max-width: 400px;
2052
+ font: 12px/1.5 system-ui;
2053
+ }
2054
+ .qt-definition-actions {
2055
+ display: flex;
2056
+ gap: 10px;
2057
+ margin: 12px 0 8px;
2058
+ }
2059
+ .qt-preview-controls {
2060
+ display: flex;
2061
+ align-items: center;
2062
+ gap: 10px;
2063
+ flex-wrap: wrap;
2064
+ border-top: 1px solid var(--qt-border, #dbe1e8);
2065
+ padding-top: 18px;
2066
+ margin: 18px 0 10px;
2067
+ }
2068
+ .qt-preview-controls label {
2069
+ display: flex;
2070
+ align-items: center;
2071
+ gap: 6px;
2072
+ }
2073
+ .qt-preview-controls input {
2074
+ width: 88px;
2075
+ }
2076
+ .qt-preview-controls select {
2077
+ padding: 5px;
2078
+ border: 1px solid var(--qt-border, #dbe1e8);
2079
+ border-radius: 5px;
2080
+ background: var(--qt-bg, #fff);
2081
+ color: inherit;
2082
+ }
2083
+ .qt-preview-table-wrap {
2084
+ overflow: auto;
2085
+ max-height: 400px;
2086
+ border: 1px solid var(--qt-border, #dbe1e8);
2087
+ border-radius: 6px;
2088
+ }
2089
+ .qt-preview-table {
2090
+ width: 100%;
2091
+ border-collapse: collapse;
2092
+ font-size: 12px;
2093
+ }
2094
+ .qt-preview-table th {
2095
+ text-align: left;
2096
+ position: sticky;
2097
+ top: 0;
2098
+ background: var(--qt-bg, #f8fafc);
2099
+ }
2100
+ .qt-preview-table th,
2101
+ .qt-preview-table td {
2102
+ padding: 9px 12px;
2103
+ border-bottom: 1px solid var(--qt-border, #e2e8f0);
2104
+ max-width: 260px;
2105
+ overflow: hidden;
2106
+ text-overflow: ellipsis;
2107
+ white-space: nowrap;
2108
+ }
2109
+ .qt-preview-table td:nth-last-child(-n+2),
2110
+ .qt-preview-table th:nth-last-child(-n+2) {
2111
+ text-align: right;
2112
+ font-variant-numeric: tabular-nums;
2113
+ }
2114
+ .qt-preview-sort {
2115
+ appearance: none;
2116
+ border: 0;
2117
+ padding: 0;
2118
+ color: inherit;
2119
+ background: transparent;
2120
+ font: inherit;
2121
+ font-weight: inherit;
2122
+ cursor: pointer;
2123
+ }
2124
+ .qt-preview-sort:hover,
2125
+ .qt-preview-sort:focus-visible {
2126
+ color: var(--qt-accent, #285cc4);
2127
+ }
2128
+ .qt-formula-error {
2129
+ color: var(--qt-error, #b42318);
2130
+ }
2131
+ .qt-editor-notice {
2132
+ color: #16703a;
2133
+ }
2134
+ .qt-preview-pages {
2135
+ display: flex;
2136
+ gap: 12px;
2137
+ align-items: center;
2138
+ justify-content: flex-end;
2139
+ margin-top: 12px;
2140
+ font-size: 12px;
2141
+ }
2142
+ .qt-select-editor-footer {
2143
+ border-top: 1px solid var(--qt-border, #dbe1e8);
2144
+ justify-content: flex-end;
2145
+ }
2146
+ .qt-select-editor-footer > span {
2147
+ margin-right: auto;
2148
+ font-size: 12px;
2149
+ }
2150
+ .qt-select-editor .qt-primary {
2151
+ background: #285cc4;
2152
+ color: white;
2153
+ border-color: #285cc4;
2154
+ }
2155
+ @media (max-width: 1000px) {
2156
+ .qt-select-editor-body {
2157
+ grid-template-columns: 180px 200px minmax(0, 1fr);
2158
+ }
2159
+ .qt-column-workbench {
2160
+ padding: 16px;
2161
+ }
2162
+ }
2163
+ @media (max-width: 760px) {
2164
+ .qt-select-editor-body {
2165
+ display: block;
2166
+ overflow: auto;
2167
+ }
2168
+ .qt-selected-panel,
2169
+ .qt-catalogue-panel {
2170
+ max-height: 230px;
2171
+ border-right: 0;
2172
+ border-bottom: 1px solid var(--qt-border, #dbe1e8);
2173
+ }
2174
+ .qt-column-workbench {
2175
+ overflow: visible;
2176
+ }
2177
+ .qt-select-editor-footer {
2178
+ flex-wrap: wrap;
2179
+ padding: 12px;
2180
+ }
2181
+ }
2182
+ .qt-regex-inspector {
2183
+ margin-top: 12px;
2184
+ padding: 12px;
2185
+ background: var(--qt-bg-muted, #f8fafc);
2186
+ border: 1px solid var(--qt-border, #dbe1e8);
2187
+ border-radius: 6px;
2188
+ font-size: 12px;
2189
+ }
2190
+ .qt-regex-inspector h4 {
2191
+ margin: 0 0 8px;
2192
+ }
2193
+ .qt-regex-inspector pre {
2194
+ white-space: pre-wrap;
2195
+ overflow-wrap: anywhere;
2196
+ }
2197
+ .qt-regex-inspector dl > div {
2198
+ display: flex;
2199
+ gap: 14px;
2200
+ margin: 4px 0;
2201
+ }
2202
+ .qt-regex-inspector dd {
2203
+ margin: 0;
2204
+ overflow-wrap: anywhere;
2205
+ }
2206
+ .qt-select-editor .qt-formula-hint {
2207
+ color: var(--qt-muted, #64748b);
2208
+ margin: 6px 0 12px;
2209
+ font-size: 11px;
2210
+ }
2211
+ @media (prefers-color-scheme: dark) {
2212
+ .qt-select-editor-backdrop {
2213
+ background: rgba(0, 0, 0, 0.6);
2214
+ }
2215
+ .qt-select-editor {
2216
+ color-scheme: dark;
2217
+ --qt-bg: #0d1117;
2218
+ --qt-bg-muted: #161b22;
2219
+ --qt-fg: #f0f6fc;
2220
+ --qt-text: #f0f6fc;
2221
+ --qt-muted: #8b949e;
2222
+ --qt-border: #30363d;
2223
+ --qt-border-subtle: #21262d;
2224
+ --qt-header-bg: #161b22;
2225
+ --qt-accent: #58a6ff;
2226
+ --qt-accent-bg: rgba(56, 139, 253, 0.2);
2227
+ --qt-cell-hover: rgba(88, 166, 255, 0.12);
2228
+ --qt-error: #ff7b72;
2229
+ background: var(--qt-bg);
2230
+ }
2231
+ .qt-select-editor .qt-btn:not(.qt-primary),
2232
+ .qt-select-editor .qt-input,
2233
+ .qt-select-editor textarea,
2234
+ .qt-select-editor .qt-preview-controls input,
2235
+ .qt-select-editor .qt-preview-controls select,
2236
+ .qt-select-editor .cm-editor {
2237
+ color: var(--qt-text);
2238
+ background: var(--qt-bg-muted);
2239
+ border-color: var(--qt-border);
2240
+ }
2241
+ .qt-select-editor .qt-btn:not(.qt-primary):hover:not(:disabled) {
2242
+ background: var(--qt-accent-bg);
2243
+ }
2244
+ .qt-select-editor .qt-type-badge {
2245
+ color: #c9d1d9;
2246
+ background: #1f6feb;
2247
+ }
2248
+ .qt-select-editor .qt-editor-notice {
2249
+ color: #3fb950;
2250
+ }
2251
+ }
1172
2252
  /*# sourceMappingURL=theme.css.map */