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