dialkit 1.3.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +433 -3
  2. package/dist/icons.d.ts +5 -1
  3. package/dist/icons.js +18 -0
  4. package/dist/icons.js.map +1 -1
  5. package/dist/index.cjs +3222 -479
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +274 -6
  8. package/dist/index.d.ts +274 -6
  9. package/dist/index.js +3154 -416
  10. package/dist/index.js.map +1 -1
  11. package/dist/solid/index.d.ts +225 -3
  12. package/dist/solid/index.js +5761 -2500
  13. package/dist/solid/index.js.map +1 -1
  14. package/dist/store/index.cjs +57 -16
  15. package/dist/store/index.cjs.map +1 -1
  16. package/dist/store/index.d.cts +14 -2
  17. package/dist/store/index.d.ts +14 -2
  18. package/dist/store/index.js +52 -16
  19. package/dist/store/index.js.map +1 -1
  20. package/dist/styles.css +788 -0
  21. package/dist/svelte/components/ControlRenderer.svelte +5 -2
  22. package/dist/svelte/components/ControlRenderer.svelte.d.ts +2 -0
  23. package/dist/svelte/components/ControlRenderer.svelte.d.ts.map +1 -1
  24. package/dist/svelte/components/DialRoot.svelte +43 -6
  25. package/dist/svelte/components/DialRoot.svelte.d.ts.map +1 -1
  26. package/dist/svelte/components/Panel.svelte +7 -1
  27. package/dist/svelte/components/Panel.svelte.d.ts +2 -0
  28. package/dist/svelte/components/Panel.svelte.d.ts.map +1 -1
  29. package/dist/svelte/components/Timeline/ClipPopover.svelte +206 -0
  30. package/dist/svelte/components/Timeline/ClipPopover.svelte.d.ts +26 -0
  31. package/dist/svelte/components/Timeline/ClipPopover.svelte.d.ts.map +1 -0
  32. package/dist/svelte/components/Timeline/DialTimeline.svelte +125 -0
  33. package/dist/svelte/components/Timeline/DialTimeline.svelte.d.ts +13 -0
  34. package/dist/svelte/components/Timeline/DialTimeline.svelte.d.ts.map +1 -0
  35. package/dist/svelte/components/Timeline/TimelineClip.svelte +233 -0
  36. package/dist/svelte/components/Timeline/TimelineClip.svelte.d.ts +24 -0
  37. package/dist/svelte/components/Timeline/TimelineClip.svelte.d.ts.map +1 -0
  38. package/dist/svelte/components/Timeline/TimelineSection.svelte +803 -0
  39. package/dist/svelte/components/Timeline/TimelineSection.svelte.d.ts +12 -0
  40. package/dist/svelte/components/Timeline/TimelineSection.svelte.d.ts.map +1 -0
  41. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte +25 -0
  42. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte.d.ts +4 -0
  43. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte.d.ts.map +1 -0
  44. package/dist/svelte/components/TransitionControl.svelte +26 -11
  45. package/dist/svelte/components/TransitionControl.svelte.d.ts +9 -0
  46. package/dist/svelte/components/TransitionControl.svelte.d.ts.map +1 -1
  47. package/dist/svelte/createDialTimeline.svelte.d.ts +4 -0
  48. package/dist/svelte/createDialTimeline.svelte.d.ts.map +1 -0
  49. package/dist/svelte/createDialTimeline.svelte.js +73 -0
  50. package/dist/svelte/index.d.ts +4 -0
  51. package/dist/svelte/index.d.ts.map +1 -1
  52. package/dist/svelte/index.js +3 -0
  53. package/dist/svelte/theme-css.d.ts +1 -1
  54. package/dist/svelte/theme-css.d.ts.map +1 -1
  55. package/dist/svelte/theme-css.js +788 -0
  56. package/dist/timeline/index.cjs +1288 -0
  57. package/dist/timeline/index.cjs.map +1 -0
  58. package/dist/timeline/index.d.cts +443 -0
  59. package/dist/timeline/index.d.ts +443 -0
  60. package/dist/timeline/index.js +1233 -0
  61. package/dist/timeline/index.js.map +1 -0
  62. package/dist/vue/index.d.ts +273 -7
  63. package/dist/vue/index.js +4116 -1517
  64. package/dist/vue/index.js.map +1 -1
  65. package/package.json +23 -13
  66. package/dist/solid/index.cjs +0 -3536
  67. package/dist/solid/index.cjs.map +0 -1
  68. package/dist/solid/index.d.cts +0 -295
  69. package/dist/vue/index.cjs +0 -3497
  70. package/dist/vue/index.cjs.map +0 -1
  71. package/dist/vue/index.d.cts +0 -722
package/dist/styles.css CHANGED
@@ -747,12 +747,28 @@
747
747
  background: var(--dial-surface-hover);
748
748
  }
749
749
 
750
+ .dialkit-timeline-toolbar-toggle[data-active] {
751
+ background: var(--dial-surface-active);
752
+ color: var(--dial-text-root);
753
+ }
754
+
750
755
  .dialkit-toolbar-add svg {
751
756
  width: 16px;
752
757
  height: 16px;
753
758
  color: var(--dial-text-label);
754
759
  }
755
760
 
761
+ .dialkit-timeline-toolkit-only {
762
+ height: var(--dial-row-height);
763
+ display: flex;
764
+ align-items: center;
765
+ padding: 0 12px;
766
+ border-radius: var(--dial-radius);
767
+ background: var(--dial-surface-subtle);
768
+ color: var(--dial-text-secondary);
769
+ font-size: 12px;
770
+ }
771
+
756
772
  .dialkit-toolbar-copy {
757
773
  position: relative;
758
774
  display: flex;
@@ -1422,3 +1438,775 @@
1422
1438
  }
1423
1439
 
1424
1440
  }
1441
+
1442
+ /* ── Timeline dock ── */
1443
+ .dialkit-timeline {
1444
+ position: fixed;
1445
+ left: 12px;
1446
+ right: 12px;
1447
+ bottom: 12px;
1448
+ z-index: 9998;
1449
+ }
1450
+
1451
+ .dialkit-timeline[hidden] {
1452
+ display: none;
1453
+ }
1454
+
1455
+ .dialkit-timeline-dock {
1456
+ position: relative;
1457
+ box-sizing: border-box;
1458
+ background: var(--dial-glass-bg);
1459
+ border: 1px solid var(--dial-border);
1460
+ border-radius: 14px;
1461
+ backdrop-filter: blur(var(--dial-backdrop-blur));
1462
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
1463
+ padding: 0 12px 10px;
1464
+ display: flex;
1465
+ flex-direction: column;
1466
+ gap: 10px;
1467
+ overflow-x: hidden;
1468
+ overflow-y: auto;
1469
+ overscroll-behavior: contain;
1470
+ scrollbar-width: thin;
1471
+ scrollbar-color: var(--dial-text-tertiary) transparent;
1472
+ }
1473
+
1474
+ .dialkit-timeline-resize-handle {
1475
+ position: absolute;
1476
+ top: -4px;
1477
+ left: 0;
1478
+ right: 0;
1479
+ z-index: 9;
1480
+ height: 10px;
1481
+ cursor: ns-resize;
1482
+ touch-action: none;
1483
+ }
1484
+
1485
+ .dialkit-timeline-dock::-webkit-scrollbar {
1486
+ width: 8px;
1487
+ }
1488
+
1489
+ .dialkit-timeline-dock::-webkit-scrollbar-track {
1490
+ background: transparent;
1491
+ }
1492
+
1493
+ .dialkit-timeline-dock::-webkit-scrollbar-thumb {
1494
+ border-radius: 999px;
1495
+ background: var(--dial-text-tertiary);
1496
+ }
1497
+
1498
+ .dialkit-timeline-section {
1499
+ --dial-timeline-label-w: 96px;
1500
+ --dial-timeline-actions-w: 284px;
1501
+ --dial-timeline-header-h: calc(var(--dial-row-height) + 4px);
1502
+ }
1503
+
1504
+ .dialkit-timeline-section + .dialkit-timeline-section {
1505
+ border-top: 1px solid var(--dial-border);
1506
+ padding-top: 10px;
1507
+ }
1508
+
1509
+ .dialkit-timeline-header {
1510
+ display: grid;
1511
+ grid-template-columns: auto minmax(100px, 1fr) auto;
1512
+ align-items: center;
1513
+ gap: 12px;
1514
+ position: sticky;
1515
+ top: 0;
1516
+ z-index: 7;
1517
+ box-sizing: border-box;
1518
+ height: var(--dial-timeline-header-h);
1519
+ padding: 4px 0 0;
1520
+ margin: 0;
1521
+ background: var(--dial-glass-bg);
1522
+ backdrop-filter: blur(var(--dial-backdrop-blur));
1523
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
1524
+ }
1525
+
1526
+ .dialkit-timeline-header[data-open] {
1527
+ grid-template-columns: minmax(0, 1fr) auto;
1528
+ gap: 12px;
1529
+ }
1530
+
1531
+ .dialkit-timeline-header:not([data-open]) {
1532
+ grid-template-columns: var(--dial-timeline-label-w) minmax(0, 1fr) auto;
1533
+ gap: 0;
1534
+ }
1535
+
1536
+ .dialkit-timeline-header:not([data-open]) .dialkit-timeline-identity {
1537
+ width: var(--dial-timeline-label-w);
1538
+ box-sizing: border-box;
1539
+ padding-right: 10px;
1540
+ overflow: hidden;
1541
+ }
1542
+
1543
+ .dialkit-timeline-header:not([data-open]) .dialkit-timeline-title {
1544
+ overflow: hidden;
1545
+ text-overflow: ellipsis;
1546
+ }
1547
+
1548
+ .dialkit-timeline-header:not([data-open]) .dialkit-timeline-overview {
1549
+ margin-right: 12px;
1550
+ }
1551
+
1552
+ .dialkit-timeline-identity {
1553
+ min-width: 0;
1554
+ display: flex;
1555
+ align-items: center;
1556
+ gap: 10px;
1557
+ }
1558
+
1559
+ .dialkit-timeline-title {
1560
+ display: block;
1561
+ min-width: 0;
1562
+ font-size: 15px;
1563
+ font-weight: 600;
1564
+ color: var(--dial-text-root);
1565
+ letter-spacing: -0.01em;
1566
+ white-space: nowrap;
1567
+ }
1568
+
1569
+ .dialkit-timeline-header[data-open] .dialkit-timeline-identity {
1570
+ width: 100%;
1571
+ overflow: hidden;
1572
+ }
1573
+
1574
+ .dialkit-timeline-header[data-open] .dialkit-timeline-title {
1575
+ display: inline-block;
1576
+ flex: 0 1 auto;
1577
+ width: fit-content;
1578
+ max-width: 100%;
1579
+ overflow: hidden;
1580
+ text-overflow: ellipsis;
1581
+ }
1582
+
1583
+ .dialkit-timeline-time {
1584
+ font-family: 'Geist Mono', ui-monospace, monospace;
1585
+ font-size: 13px;
1586
+ font-weight: 500;
1587
+ font-variant-numeric: tabular-nums;
1588
+ color: var(--dial-text-label);
1589
+ white-space: nowrap;
1590
+ }
1591
+
1592
+ .dialkit-timeline-overview {
1593
+ position: relative;
1594
+ min-width: 60px;
1595
+ height: 12px;
1596
+ border-radius: 999px;
1597
+ background: var(--dial-surface-subtle);
1598
+ overflow: hidden;
1599
+ cursor: col-resize;
1600
+ touch-action: none;
1601
+ user-select: none;
1602
+ -webkit-user-select: none;
1603
+ }
1604
+
1605
+ .dialkit-timeline-overview-viewport {
1606
+ position: absolute;
1607
+ inset-block: 0;
1608
+ border-radius: inherit;
1609
+ pointer-events: none;
1610
+ }
1611
+
1612
+ .dialkit-timeline-overview-viewport[data-zoomed] {
1613
+ background: color-mix(in srgb, var(--dial-text-tertiary) 18%, transparent);
1614
+ box-shadow: inset 0 0 0 1px var(--dial-border);
1615
+ }
1616
+
1617
+ .dialkit-timeline-overview-progress {
1618
+ position: absolute;
1619
+ inset: 0 auto 0 0;
1620
+ border-radius: 999px 0 0 999px;
1621
+ background: var(--dial-text-tertiary);
1622
+ opacity: 0.35;
1623
+ pointer-events: none;
1624
+ }
1625
+
1626
+ .dialkit-timeline-overview-playhead {
1627
+ position: absolute;
1628
+ top: 0;
1629
+ bottom: 0;
1630
+ width: 2px;
1631
+ border-radius: 2px;
1632
+ background: var(--dial-text-root);
1633
+ transform: translateX(-1px);
1634
+ pointer-events: none;
1635
+ }
1636
+
1637
+ .dialkit-timeline-actions {
1638
+ display: flex;
1639
+ align-items: center;
1640
+ gap: 6px;
1641
+ }
1642
+
1643
+ .dialkit-timeline-header[data-open] .dialkit-timeline-actions {
1644
+ width: auto;
1645
+ box-sizing: border-box;
1646
+ justify-content: flex-end;
1647
+ padding-left: 0;
1648
+ }
1649
+
1650
+ .dialkit-timeline-actions .dialkit-preset-manager {
1651
+ flex: 0 0 120px;
1652
+ width: 120px;
1653
+ }
1654
+
1655
+ .dialkit-timeline-chevron {
1656
+ background: none;
1657
+ border: none;
1658
+ width: 20px;
1659
+ height: var(--dial-row-height);
1660
+ padding: 2px;
1661
+ cursor: pointer;
1662
+ color: var(--dial-text-label);
1663
+ opacity: 0.6;
1664
+ display: flex;
1665
+ align-items: center;
1666
+ justify-content: center;
1667
+ transition: opacity 0.15s;
1668
+ }
1669
+
1670
+ .dialkit-timeline-chevron:hover {
1671
+ opacity: 1;
1672
+ }
1673
+
1674
+ .dialkit-timeline-chevron svg {
1675
+ width: 16px;
1676
+ height: 16px;
1677
+ transition: transform 0.18s ease;
1678
+ }
1679
+
1680
+ .dialkit-timeline-chevron[data-open="true"] svg {
1681
+ transform: rotate(180deg);
1682
+ }
1683
+
1684
+ .dialkit-timeline-body {
1685
+ margin-top: 0;
1686
+ overflow: visible;
1687
+ }
1688
+
1689
+ .dialkit-timeline-scroll-row {
1690
+ position: sticky;
1691
+ bottom: -10px;
1692
+ z-index: 6;
1693
+ display: grid;
1694
+ grid-template-columns: var(--dial-timeline-label-w) minmax(0, 1fr);
1695
+ margin-top: 6px;
1696
+ margin-bottom: -10px;
1697
+ padding: 4px 0 10px;
1698
+ background: var(--dial-glass-bg);
1699
+ backdrop-filter: blur(var(--dial-backdrop-blur));
1700
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
1701
+ }
1702
+
1703
+ .dialkit-timeline-horizontal-scroll {
1704
+ min-width: 0;
1705
+ height: 10px;
1706
+ overflow-x: auto;
1707
+ overflow-y: hidden;
1708
+ scrollbar-width: thin;
1709
+ scrollbar-color: var(--dial-text-tertiary) transparent;
1710
+ overscroll-behavior-x: contain;
1711
+ }
1712
+
1713
+ .dialkit-timeline-horizontal-scroll > div {
1714
+ height: 1px;
1715
+ }
1716
+
1717
+ .dialkit-timeline-horizontal-scroll::-webkit-scrollbar {
1718
+ height: 8px;
1719
+ }
1720
+
1721
+ .dialkit-timeline-horizontal-scroll::-webkit-scrollbar-track {
1722
+ background: transparent;
1723
+ }
1724
+
1725
+ .dialkit-timeline-horizontal-scroll::-webkit-scrollbar-thumb {
1726
+ border-radius: 999px;
1727
+ background: var(--dial-text-tertiary);
1728
+ }
1729
+
1730
+ .dialkit-timeline-grid {
1731
+ position: relative;
1732
+ display: flex;
1733
+ flex-direction: column;
1734
+ gap: 6px;
1735
+ }
1736
+
1737
+ .dialkit-timeline-row {
1738
+ display: grid;
1739
+ grid-template-columns: var(--dial-timeline-label-w) minmax(0, 1fr);
1740
+ align-items: stretch;
1741
+ }
1742
+
1743
+ .dialkit-timeline-label {
1744
+ flex: 0 0 var(--dial-timeline-label-w);
1745
+ box-sizing: border-box; /* indent padding must not widen the column — every lane starts at the same x */
1746
+ display: flex;
1747
+ align-items: center;
1748
+ gap: 4px;
1749
+ font-size: 13px;
1750
+ font-weight: 500;
1751
+ color: var(--dial-text-label);
1752
+ padding-right: 10px;
1753
+ overflow: hidden;
1754
+ text-overflow: ellipsis;
1755
+ white-space: nowrap;
1756
+ user-select: none;
1757
+ -webkit-user-select: none;
1758
+ }
1759
+
1760
+ .dialkit-timeline-ruler {
1761
+ position: relative;
1762
+ min-width: 0;
1763
+ height: 28px;
1764
+ cursor: col-resize;
1765
+ touch-action: none;
1766
+ overflow: visible;
1767
+ user-select: none;
1768
+ -webkit-user-select: none;
1769
+ z-index: 5;
1770
+ }
1771
+
1772
+ .dialkit-timeline-ruler-row {
1773
+ position: sticky;
1774
+ top: var(--dial-timeline-header-h);
1775
+ z-index: 6;
1776
+ height: 28px;
1777
+ background: var(--dial-glass-bg);
1778
+ backdrop-filter: blur(var(--dial-backdrop-blur));
1779
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
1780
+ }
1781
+
1782
+ .dialkit-timeline-tick {
1783
+ position: absolute;
1784
+ top: 50%;
1785
+ width: 1px;
1786
+ height: 100%;
1787
+ background: var(--dial-text-tertiary);
1788
+ transform: translateY(-50%);
1789
+ pointer-events: none;
1790
+ }
1791
+
1792
+ .dialkit-timeline-tick-medium {
1793
+ height: 16px;
1794
+ background: var(--dial-border-hover);
1795
+ }
1796
+
1797
+ .dialkit-timeline-tick-fine {
1798
+ height: 8px;
1799
+ background: var(--dial-border);
1800
+ }
1801
+
1802
+ .dialkit-timeline-tick-label {
1803
+ position: absolute;
1804
+ top: 50%;
1805
+ left: 4px;
1806
+ display: flex;
1807
+ align-items: center;
1808
+ height: 18px;
1809
+ transform: translateY(-50%);
1810
+ font-family: 'Geist Mono', ui-monospace, monospace;
1811
+ font-size: 9.5px;
1812
+ line-height: 18px;
1813
+ font-variant-numeric: tabular-nums;
1814
+ color: var(--dial-text-tertiary);
1815
+ white-space: nowrap;
1816
+ }
1817
+
1818
+ .dialkit-timeline-row {
1819
+ height: 28px;
1820
+ }
1821
+
1822
+ /* ── Layer groups ── */
1823
+
1824
+ .dialkit-timeline-group-row {
1825
+ height: 22px;
1826
+ }
1827
+
1828
+ .dialkit-timeline-group-row .dialkit-timeline-label {
1829
+ gap: 4px;
1830
+ font-weight: 600;
1831
+ color: var(--dial-text-root);
1832
+ }
1833
+
1834
+ .dialkit-timeline-group-row .dialkit-timeline-lane {
1835
+ background: none;
1836
+ }
1837
+
1838
+ .dialkit-timeline-group-toggle {
1839
+ display: flex;
1840
+ align-items: center;
1841
+ justify-content: center;
1842
+ background: none;
1843
+ border: none;
1844
+ padding: 0;
1845
+ margin-left: -2px;
1846
+ cursor: pointer;
1847
+ color: var(--dial-text-tertiary);
1848
+ }
1849
+
1850
+ .dialkit-timeline-group-toggle svg {
1851
+ width: 10px;
1852
+ height: 10px;
1853
+ transform: rotate(-90deg);
1854
+ transition: transform 0.15s ease;
1855
+ }
1856
+
1857
+ .dialkit-timeline-group-toggle[data-open="true"] svg {
1858
+ transform: rotate(0deg);
1859
+ }
1860
+
1861
+ .dialkit-timeline-row[data-grouped] .dialkit-timeline-label {
1862
+ padding-left: 14px;
1863
+ }
1864
+
1865
+ .dialkit-timeline-lane {
1866
+ position: relative;
1867
+ flex: 1;
1868
+ background: var(--dial-surface-subtle);
1869
+ border-radius: 8px;
1870
+ overflow: hidden;
1871
+ }
1872
+
1873
+ .dialkit-timeline-clip {
1874
+ position: absolute;
1875
+ top: 3px;
1876
+ bottom: 3px;
1877
+ border-radius: 6px;
1878
+ display: flex;
1879
+ align-items: center;
1880
+ justify-content: flex-end;
1881
+ padding: 0 9px;
1882
+ cursor: grab;
1883
+ user-select: none;
1884
+ -webkit-user-select: none;
1885
+ touch-action: none;
1886
+ box-sizing: border-box;
1887
+ overflow: hidden;
1888
+ z-index: 1;
1889
+ }
1890
+
1891
+ .dialkit-timeline-clip-ghost {
1892
+ position: absolute;
1893
+ top: 4px;
1894
+ bottom: 4px;
1895
+ display: flex;
1896
+ border-radius: 5px;
1897
+ box-sizing: border-box;
1898
+ overflow: hidden;
1899
+ opacity: 0.18;
1900
+ pointer-events: none;
1901
+ user-select: none;
1902
+ -webkit-user-select: none;
1903
+ }
1904
+
1905
+ .dialkit-timeline-clip-ghost-segment {
1906
+ height: 100%;
1907
+ flex-shrink: 0;
1908
+ box-sizing: border-box;
1909
+ }
1910
+
1911
+ .dialkit-timeline-clip-ghost-segment + .dialkit-timeline-clip-ghost-segment {
1912
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.5);
1913
+ }
1914
+
1915
+ .dialkit-timeline-loop-infinity {
1916
+ position: absolute;
1917
+ top: 50%;
1918
+ right: 7px;
1919
+ z-index: 2;
1920
+ color: var(--dial-text-tertiary);
1921
+ font-family: 'Geist Mono', ui-monospace, monospace;
1922
+ font-size: 13px;
1923
+ font-weight: 600;
1924
+ line-height: 1;
1925
+ transform: translateY(-50%);
1926
+ pointer-events: none;
1927
+ user-select: none;
1928
+ -webkit-user-select: none;
1929
+ }
1930
+
1931
+ .dialkit-timeline-clip[data-dragging] {
1932
+ cursor: grabbing;
1933
+ }
1934
+
1935
+ .dialkit-timeline-clip[data-selected] {
1936
+ box-shadow: 0 0 0 2px var(--dial-text-root);
1937
+ }
1938
+
1939
+ .dialkit-timeline-clip-duration {
1940
+ font-family: 'Geist Mono', ui-monospace, monospace;
1941
+ font-size: 9.5px;
1942
+ font-variant-numeric: tabular-nums;
1943
+ color: rgba(0, 0, 0, 0.55);
1944
+ white-space: nowrap;
1945
+ pointer-events: none;
1946
+ }
1947
+
1948
+ /* ── Sequence segments ──
1949
+ A steps clip is one bar sliced into legs; boundaries between legs are
1950
+ drag handles that retime the leg to their left. */
1951
+
1952
+ .dialkit-timeline-clip[data-steps] {
1953
+ padding: 0;
1954
+ justify-content: flex-start;
1955
+ }
1956
+
1957
+ .dialkit-timeline-clip-segment {
1958
+ position: relative;
1959
+ height: 100%;
1960
+ flex-shrink: 0;
1961
+ display: flex;
1962
+ align-items: center;
1963
+ justify-content: flex-end;
1964
+ padding: 0 8px;
1965
+ box-sizing: border-box;
1966
+ overflow: hidden;
1967
+ }
1968
+
1969
+ .dialkit-timeline-clip-segment + .dialkit-timeline-clip-segment {
1970
+ box-shadow: inset 1.5px 0 0 rgba(0, 0, 0, 0.25);
1971
+ }
1972
+
1973
+ .dialkit-timeline-clip-segment:hover {
1974
+ background: rgba(0, 0, 0, 0.06);
1975
+ }
1976
+
1977
+ .dialkit-timeline-clip-segment[data-selected] {
1978
+ background: rgba(0, 0, 0, 0.12);
1979
+ }
1980
+
1981
+ /* ── Property tracks ──
1982
+ A props clip's row is a read-only composite — click to expand. Each
1983
+ property expands into a full track row: a complete clip bar whose
1984
+ position is the track's delay. */
1985
+
1986
+ .dialkit-timeline-clip[data-composite] {
1987
+ cursor: pointer;
1988
+ }
1989
+
1990
+ .dialkit-timeline-track-row .dialkit-timeline-label {
1991
+ font-size: 13px;
1992
+ color: var(--dial-text-tertiary);
1993
+ padding-left: 26px;
1994
+ }
1995
+
1996
+ .dialkit-timeline-track-row[data-grouped] .dialkit-timeline-label {
1997
+ padding-left: 32px;
1998
+ }
1999
+
2000
+ .dialkit-timeline-clip-handle {
2001
+ position: absolute;
2002
+ top: 0;
2003
+ bottom: 0;
2004
+ width: 8px;
2005
+ cursor: ew-resize;
2006
+ }
2007
+
2008
+ .dialkit-timeline-clip-handle[data-edge="start"] {
2009
+ left: 0;
2010
+ }
2011
+
2012
+ .dialkit-timeline-clip-handle[data-edge="end"] {
2013
+ right: 0;
2014
+ }
2015
+
2016
+ .dialkit-timeline-playhead-control {
2017
+ position: absolute;
2018
+ top: 0;
2019
+ bottom: 0;
2020
+ width: 12px;
2021
+ margin-left: -6px;
2022
+ cursor: ew-resize;
2023
+ touch-action: none;
2024
+ }
2025
+
2026
+ .dialkit-timeline-playhead-anchor {
2027
+ position: sticky;
2028
+ top: calc(var(--dial-timeline-header-h) + 14px);
2029
+ z-index: 8;
2030
+ width: 0;
2031
+ height: 0;
2032
+ margin-left: 6px;
2033
+ }
2034
+
2035
+ .dialkit-timeline-playhead-anchor::before {
2036
+ content: '';
2037
+ position: absolute;
2038
+ top: 0;
2039
+ left: -0.75px;
2040
+ width: 1.5px;
2041
+ height: 14px;
2042
+ border-radius: 1px;
2043
+ background: var(--dial-text-root);
2044
+ pointer-events: none;
2045
+ }
2046
+
2047
+ .dialkit-timeline-playhead-flag {
2048
+ position: absolute;
2049
+ top: 0;
2050
+ left: calc(var(--dial-timeline-playhead-flag-offset, 0px) - 26px);
2051
+ z-index: 1;
2052
+ width: 52px;
2053
+ height: 18px;
2054
+ padding: 0 7px;
2055
+ box-sizing: border-box;
2056
+ border: 1px solid rgba(255, 255, 255, 0.75);
2057
+ border-radius: 6px;
2058
+ background: #f3f3f3;
2059
+ color: #414141;
2060
+ font-family: 'Geist Mono', ui-monospace, monospace;
2061
+ font-size: 9.5px;
2062
+ font-weight: 600;
2063
+ font-variant-numeric: tabular-nums;
2064
+ font-feature-settings: 'tnum' 1;
2065
+ line-height: 16px;
2066
+ text-align: center;
2067
+ white-space: nowrap;
2068
+ transform: translateY(-50%);
2069
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.28);
2070
+ transition: top 0.12s ease;
2071
+ }
2072
+
2073
+ .dialkit-timeline-playhead-stem {
2074
+ position: absolute;
2075
+ top: 28px;
2076
+ bottom: 0;
2077
+ left: 5.25px;
2078
+ z-index: 5;
2079
+ width: 1.5px;
2080
+ border-radius: 1px;
2081
+ background: var(--dial-text-root);
2082
+ pointer-events: none;
2083
+ }
2084
+
2085
+ /* ── Timeline clip popover ── */
2086
+ .dialkit-timeline-popover {
2087
+ position: fixed;
2088
+ z-index: 10000;
2089
+ background: var(--dial-glass-bg);
2090
+ border: 1px solid var(--dial-border);
2091
+ border-radius: 14px;
2092
+ backdrop-filter: blur(var(--dial-backdrop-blur));
2093
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
2094
+ box-shadow: var(--dial-shadow);
2095
+ padding: 10px 12px;
2096
+ box-sizing: border-box;
2097
+ max-height: 60vh;
2098
+ overflow-y: auto;
2099
+ scrollbar-width: none;
2100
+ -ms-overflow-style: none;
2101
+ }
2102
+
2103
+ .dialkit-timeline-popover::-webkit-scrollbar {
2104
+ display: none;
2105
+ }
2106
+
2107
+ .dialkit-timeline-popover-header {
2108
+ display: flex;
2109
+ align-items: center;
2110
+ gap: 8px;
2111
+ padding: 2px 2px 8px;
2112
+ margin-bottom: 6px;
2113
+ border-bottom: 1px solid var(--dial-border);
2114
+ }
2115
+
2116
+ .dialkit-timeline-popover-title {
2117
+ font-size: 15px;
2118
+ font-weight: 600;
2119
+ color: var(--dial-text-root);
2120
+ letter-spacing: -0.01em;
2121
+ }
2122
+
2123
+ .dialkit-timeline-popover-close {
2124
+ width: 24px;
2125
+ height: 24px;
2126
+ margin-left: auto;
2127
+ padding: 5px;
2128
+ display: flex;
2129
+ align-items: center;
2130
+ justify-content: center;
2131
+ border: none;
2132
+ border-radius: 6px;
2133
+ background: none;
2134
+ color: var(--dial-text-tertiary);
2135
+ cursor: pointer;
2136
+ }
2137
+
2138
+ .dialkit-timeline-popover-close:hover {
2139
+ color: var(--dial-text-root);
2140
+ background: var(--dial-surface-hover);
2141
+ }
2142
+
2143
+ .dialkit-timeline-popover-close svg {
2144
+ width: 14px;
2145
+ height: 14px;
2146
+ }
2147
+
2148
+ .dialkit-timeline-popover-body {
2149
+ display: flex;
2150
+ flex-direction: column;
2151
+ gap: 6px;
2152
+ }
2153
+
2154
+ .dialkit-timeline-popover-body > .dialkit-folder:first-child {
2155
+ margin-top: 0;
2156
+ border-top: none;
2157
+ }
2158
+
2159
+ @media (max-width: 720px) {
2160
+ .dialkit-timeline-dock {
2161
+ padding: 0 10px 10px;
2162
+ }
2163
+
2164
+ .dialkit-timeline-header {
2165
+ grid-template-columns: auto minmax(40px, 1fr) auto;
2166
+ gap: 8px;
2167
+ }
2168
+
2169
+ .dialkit-timeline-section {
2170
+ --dial-timeline-label-w: 76px;
2171
+ --dial-timeline-actions-w: 270px;
2172
+ }
2173
+
2174
+ .dialkit-timeline-identity {
2175
+ overflow: hidden;
2176
+ gap: 7px;
2177
+ }
2178
+
2179
+ .dialkit-timeline-title {
2180
+ font-size: 13px;
2181
+ overflow: hidden;
2182
+ text-overflow: ellipsis;
2183
+ }
2184
+
2185
+ .dialkit-timeline-time {
2186
+ font-size: 11px;
2187
+ }
2188
+
2189
+ .dialkit-timeline-overview {
2190
+ height: 12px;
2191
+ }
2192
+
2193
+ .dialkit-timeline-actions {
2194
+ min-width: 0;
2195
+ }
2196
+
2197
+ .dialkit-timeline-actions .dialkit-preset-manager {
2198
+ flex-basis: 100px;
2199
+ width: 100px;
2200
+ }
2201
+
2202
+ .dialkit-timeline-chevron {
2203
+ width: 26px;
2204
+ height: 28px;
2205
+ justify-content: center;
2206
+ padding: 0;
2207
+ }
2208
+
2209
+ .dialkit-timeline-grid {
2210
+ min-width: 0;
2211
+ }
2212
+ }