@kupola/kupola 1.9.6 → 1.9.7

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/kupola.css CHANGED
@@ -1491,6 +1491,374 @@ code, kbd, samp, pre {
1491
1491
  font-feature-settings: "tnum" 1, "lnum" 1;
1492
1492
  }
1493
1493
 
1494
+ /* ===== Dashboard Layout ===== */
1495
+
1496
+ html.ds-dashboard-page,
1497
+ body.ds-dashboard-page {
1498
+ height: 100vh;
1499
+ overflow: hidden;
1500
+ margin: 0;
1501
+ padding: 0;
1502
+ }
1503
+
1504
+ .ds-dashboard {
1505
+ display: flex;
1506
+ flex-direction: column;
1507
+ height: 100%;
1508
+ width: 100%;
1509
+ overflow: hidden;
1510
+ }
1511
+
1512
+ /* Header */
1513
+ .ds-dashboard__header {
1514
+ display: flex;
1515
+ align-items: center;
1516
+ justify-content: space-between;
1517
+ height: var(--dashboard-header-height, 48px);
1518
+ padding: 0 var(--spacer-12);
1519
+ background: var(--bg-base-secondary);
1520
+ border-bottom: 1px solid var(--border-neutral-l1);
1521
+ flex-shrink: 0;
1522
+ z-index: 100;
1523
+ }
1524
+
1525
+ .ds-dashboard__header-left {
1526
+ display: flex;
1527
+ align-items: center;
1528
+ gap: var(--spacer-12);
1529
+ }
1530
+
1531
+ .ds-dashboard__logo {
1532
+ display: flex;
1533
+ align-items: center;
1534
+ gap: var(--spacer-6);
1535
+ font-weight: var(--font-weight-strong);
1536
+ font-size: var(--heading-md-font-size);
1537
+ color: var(--text-default);
1538
+ }
1539
+
1540
+ .ds-dashboard__logo-icon {
1541
+ width: 24px;
1542
+ height: 24px;
1543
+ background: var(--bg-brand);
1544
+ border-radius: var(--radius-4);
1545
+ }
1546
+
1547
+ .ds-dashboard__header-center {
1548
+ display: flex;
1549
+ align-items: center;
1550
+ gap: var(--spacer-4);
1551
+ }
1552
+
1553
+ .ds-dashboard__header-right {
1554
+ display: flex;
1555
+ align-items: center;
1556
+ gap: var(--spacer-8);
1557
+ }
1558
+
1559
+ /* Main Content Area */
1560
+ .ds-dashboard__main {
1561
+ display: flex;
1562
+ flex: 1;
1563
+ overflow: visible;
1564
+ position: relative;
1565
+ }
1566
+
1567
+ /* Sidebar */
1568
+ .ds-dashboard__sidebar {
1569
+ width: var(--dashboard-sidebar-width, 48px);
1570
+ background: var(--bg-base-secondary);
1571
+ border-right: 1px solid var(--border-neutral-l1);
1572
+ display: flex;
1573
+ flex-direction: column;
1574
+ flex-shrink: 0;
1575
+ padding: var(--spacer-8) 0;
1576
+ position: relative;
1577
+ z-index: 10;
1578
+ overflow: visible;
1579
+ }
1580
+
1581
+ .ds-dashboard__sidebar-nav {
1582
+ display: flex;
1583
+ flex-direction: column;
1584
+ gap: var(--spacer-4);
1585
+ padding: 0 var(--spacer-4);
1586
+ }
1587
+
1588
+ .ds-dashboard__sidebar-item {
1589
+ display: flex;
1590
+ align-items: center;
1591
+ justify-content: center;
1592
+ width: 36px;
1593
+ height: 36px;
1594
+ margin: 0 auto;
1595
+ border-radius: var(--radius-4);
1596
+ color: var(--icon-secondary);
1597
+ cursor: pointer;
1598
+ transition: all 0.15s ease;
1599
+ position: relative;
1600
+ }
1601
+
1602
+ .ds-dashboard__sidebar-item:hover {
1603
+ background: var(--bg-overlay-l1);
1604
+ color: var(--icon-default);
1605
+ }
1606
+
1607
+ .ds-dashboard__sidebar-item.is-active {
1608
+ background: var(--bg-brand-popup);
1609
+ color: var(--icon-brand);
1610
+ }
1611
+
1612
+ .ds-dashboard__sidebar-item.is-active::before {
1613
+ content: '';
1614
+ position: absolute;
1615
+ left: 0;
1616
+ top: 50%;
1617
+ transform: translateY(-50%);
1618
+ width: 2px;
1619
+ height: 16px;
1620
+ background: var(--bg-brand);
1621
+ border-radius: 0 var(--radius-2) var(--radius-2) 0;
1622
+ }
1623
+
1624
+ .ds-dashboard__sidebar-item img {
1625
+ width: 18px;
1626
+ height: 18px;
1627
+ opacity: 1;
1628
+ filter: var(--icon-filter, none);
1629
+ }
1630
+
1631
+ /* BUG-004 fix: sidebar tooltip via ::after + data-title */
1632
+ .ds-dashboard__sidebar-item::after {
1633
+ content: attr(data-title);
1634
+ position: absolute;
1635
+ left: calc(100% + 8px);
1636
+ top: 50%;
1637
+ transform: translateY(-50%);
1638
+ padding: 4px 10px;
1639
+ background: var(--bg-tooltip, var(--bg-base-secondary));
1640
+ border: 1px solid var(--border-neutral-l2);
1641
+ border-radius: var(--radius-4);
1642
+ color: var(--text-default);
1643
+ font-size: var(--body-xs-font-size, 11px);
1644
+ white-space: nowrap;
1645
+ pointer-events: none;
1646
+ opacity: 0;
1647
+ visibility: hidden;
1648
+ transition: opacity 0.15s ease, visibility 0.15s ease;
1649
+ z-index: 9999;
1650
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
1651
+ }
1652
+
1653
+ .ds-dashboard__sidebar-item:hover::after {
1654
+ opacity: 1;
1655
+ visibility: visible;
1656
+ }
1657
+
1658
+ .ds-dashboard .icon {
1659
+ opacity: 1;
1660
+ filter: var(--icon-filter, none);
1661
+ }
1662
+
1663
+ .ds-dashboard .theme-icon {
1664
+ width: 16px;
1665
+ height: 16px;
1666
+ opacity: 1;
1667
+ filter: var(--icon-filter, none);
1668
+ }
1669
+
1670
+ .ds-dashboard__sidebar-divider {
1671
+ height: 1px;
1672
+ background: var(--border-neutral-l1);
1673
+ margin: var(--spacer-8) var(--spacer-8);
1674
+ }
1675
+
1676
+ .ds-dashboard__sidebar-bottom {
1677
+ margin-top: auto;
1678
+ display: flex;
1679
+ flex-direction: column;
1680
+ gap: var(--spacer-4);
1681
+ padding: 0 var(--spacer-4);
1682
+ }
1683
+
1684
+ /* Content Area */
1685
+ .ds-dashboard__content {
1686
+ flex: 1;
1687
+ overflow-y: auto;
1688
+ background: var(--bg-base-default);
1689
+ padding: var(--spacer-16);
1690
+ }
1691
+
1692
+ /* Status Bar */
1693
+ .ds-dashboard__footer {
1694
+ height: var(--dashboard-footer-height, 24px);
1695
+ background: var(--bg-base-secondary);
1696
+ border-top: 1px solid var(--border-neutral-l1);
1697
+ display: flex;
1698
+ align-items: center;
1699
+ justify-content: space-between;
1700
+ padding: 0 var(--spacer-12);
1701
+ flex-shrink: 0;
1702
+ font-size: var(--body-xs-font-size);
1703
+ color: var(--text-tertiary);
1704
+ }
1705
+
1706
+ .ds-dashboard__footer-left {
1707
+ display: flex;
1708
+ align-items: center;
1709
+ gap: var(--spacer-12);
1710
+ }
1711
+
1712
+ .ds-dashboard__footer-right {
1713
+ display: flex;
1714
+ align-items: center;
1715
+ gap: var(--spacer-12);
1716
+ }
1717
+
1718
+ .ds-dashboard__status-item {
1719
+ display: flex;
1720
+ align-items: center;
1721
+ gap: var(--spacer-4);
1722
+ }
1723
+
1724
+ .ds-dashboard__status-dot {
1725
+ width: 6px;
1726
+ height: 6px;
1727
+ border-radius: 50%;
1728
+ background: var(--status-success-default);
1729
+ }
1730
+
1731
+ .ds-dashboard__status-dot.is-warning {
1732
+ background: var(--status-warning-default);
1733
+ }
1734
+
1735
+ .ds-dashboard__status-dot.is-error {
1736
+ background: var(--status-error-default);
1737
+ }
1738
+
1739
+ /* Scrollbar styling */
1740
+ .ds-dashboard__content::-webkit-scrollbar {
1741
+ width: 8px;
1742
+ height: 8px;
1743
+ }
1744
+
1745
+ .ds-dashboard__content::-webkit-scrollbar-track {
1746
+ background: transparent;
1747
+ }
1748
+
1749
+ .ds-dashboard__content::-webkit-scrollbar-thumb {
1750
+ background: var(--border-neutral-l2);
1751
+ border-radius: var(--radius-4);
1752
+ }
1753
+
1754
+ .ds-dashboard__content::-webkit-scrollbar-thumb:hover {
1755
+ background: var(--border-neutral-l3);
1756
+ }
1757
+
1758
+ /* Responsive adjustments for tablet */
1759
+ @media (max-width: 1024px) and (min-width: 769px) {
1760
+ .ds-dashboard__sidebar {
1761
+ width: 44px;
1762
+ }
1763
+
1764
+ .ds-dashboard__sidebar-item {
1765
+ width: 34px;
1766
+ height: 34px;
1767
+ }
1768
+
1769
+ .ds-dashboard__sidebar-item img {
1770
+ width: 16px;
1771
+ height: 16px;
1772
+ }
1773
+
1774
+ .ds-dashboard__header-center {
1775
+ display: none;
1776
+ }
1777
+
1778
+ .ds-dashboard__content {
1779
+ padding: var(--spacer-12);
1780
+ }
1781
+ }
1782
+
1783
+ /* Responsive adjustments for phone */
1784
+ @media (max-width: 768px) {
1785
+ .ds-dashboard__header-left .logo-text {
1786
+ display: none;
1787
+ }
1788
+
1789
+ .ds-dashboard__header-center {
1790
+ display: none;
1791
+ }
1792
+
1793
+ .ds-dashboard__content {
1794
+ padding: var(--spacer-8);
1795
+ padding-bottom: calc(var(--spacer-8) + 56px + var(--dashboard-footer-height, 24px));
1796
+ }
1797
+
1798
+ .ds-dashboard__sidebar {
1799
+ position: fixed;
1800
+ bottom: var(--dashboard-footer-height, 24px);
1801
+ left: 0;
1802
+ right: 0;
1803
+ width: 100%;
1804
+ height: 56px;
1805
+ flex-direction: row;
1806
+ justify-content: space-around;
1807
+ align-items: center;
1808
+ padding: 0;
1809
+ border-right: none;
1810
+ border-top: 1px solid var(--border-neutral-l1);
1811
+ z-index: 100;
1812
+ background: var(--bg-base-secondary);
1813
+ backdrop-filter: blur(10px);
1814
+ }
1815
+
1816
+ .ds-dashboard__sidebar-nav {
1817
+ flex-direction: row;
1818
+ width: 100%;
1819
+ justify-content: space-around;
1820
+ padding: 0;
1821
+ }
1822
+
1823
+ .ds-dashboard__sidebar-item {
1824
+ width: 48px;
1825
+ height: 48px;
1826
+ margin: 0;
1827
+ flex-direction: column;
1828
+ gap: 2px;
1829
+ }
1830
+
1831
+ .ds-dashboard__sidebar-item img {
1832
+ width: 20px;
1833
+ height: 20px;
1834
+ }
1835
+
1836
+ .ds-dashboard__sidebar-item::before {
1837
+ display: none;
1838
+ }
1839
+
1840
+ .ds-dashboard__sidebar-item span {
1841
+ display: block;
1842
+ font-size: 10px;
1843
+ color: inherit;
1844
+ }
1845
+
1846
+ .ds-dashboard__sidebar-divider {
1847
+ display: none;
1848
+ }
1849
+
1850
+ .ds-dashboard__sidebar-bottom {
1851
+ display: none;
1852
+ }
1853
+
1854
+ .ds-dashboard__body {
1855
+ flex-direction: column;
1856
+ }
1857
+
1858
+ .ds-dashboard__footer {
1859
+ padding-bottom: calc(env(safe-area-inset-bottom) + 4px);
1860
+ }
1861
+ }
1494
1862
  /* ═══════════════════════════════════════════════════════════════
1495
1863
  components.css — Design System Component Definitions
1496
1864
  Auto-extracted from preview/component-*.html