@cccarv82/freya 2.14.0 → 2.15.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/cli/web-ui.css CHANGED
@@ -371,7 +371,6 @@ body {
371
371
  align-items: center;
372
372
  padding: 16px 20px 10px;
373
373
  background: transparent;
374
- flex-shrink: 0;
375
374
  }
376
375
 
377
376
  .brandLine {
@@ -593,18 +592,26 @@ body {
593
592
  gap: 18px;
594
593
  flex: 1;
595
594
  }
595
+
596
596
  .centerBody > * {
597
597
  flex-shrink: 0;
598
598
  }
599
599
 
600
+ .topbar {
601
+ flex-shrink: 0;
602
+ }
603
+
600
604
  .promptShell {
601
605
  display: flex;
602
- justify-content: center;
606
+ flex-direction: column;
607
+ align-items: stretch;
603
608
  width: 100%;
609
+ /* Occupy ~90% of viewport height minus topbar */
610
+ min-height: calc(90vh - 60px);
604
611
  }
605
612
 
606
613
  .promptBar {
607
- width: min(960px, 100%);
614
+ width: 100%;
608
615
  background: var(--paper);
609
616
  backdrop-filter: blur(16px);
610
617
  -webkit-backdrop-filter: blur(16px);
@@ -1501,69 +1508,78 @@ textarea:focus {
1501
1508
  animation: fadeIn 0.2s ease-out;
1502
1509
  }
1503
1510
 
1504
- /* ── Companion Dashboard Tabs ── */
1511
+ /* ── Companion Dashboard Styles ── */
1505
1512
  .companionTabs {
1506
1513
  display: flex;
1507
1514
  gap: 8px;
1508
1515
  margin: 16px 0;
1509
1516
  border-bottom: 1px solid var(--border);
1510
- padding-bottom: 8px;
1511
1517
  }
1512
1518
 
1513
1519
  .companionTabs .tab {
1514
1520
  padding: 8px 12px;
1515
1521
  background: transparent;
1516
1522
  border: none;
1523
+ border-bottom: 2px solid transparent;
1517
1524
  cursor: pointer;
1518
- color: var(--text);
1519
- font-size: 13px;
1520
- position: relative;
1521
- transition: color 0.2s ease;
1525
+ font-size: 12px;
1526
+ color: var(--textMuted);
1527
+ transition: color 0.2s, border-color 0.2s;
1522
1528
  }
1523
1529
 
1524
1530
  .companionTabs .tab:hover {
1525
- color: var(--accent);
1531
+ color: var(--text);
1526
1532
  }
1527
1533
 
1528
1534
  .companionTabs .tab.active {
1529
1535
  color: var(--accent);
1530
- border-bottom: 2px solid var(--accent);
1531
- padding-bottom: 6px;
1532
- margin-bottom: -10px;
1536
+ border-bottom-color: var(--accent);
1533
1537
  }
1534
1538
 
1535
- /* ── Consolidated View (4 KPI Cards) ── */
1536
1539
  .consolidatedView {
1537
1540
  display: grid;
1538
1541
  grid-template-columns: repeat(4, 1fr);
1539
1542
  gap: 16px;
1540
- margin-bottom: 24px;
1541
1543
  }
1542
1544
 
1543
1545
  .kpiCard {
1544
1546
  background: var(--paper);
1545
1547
  padding: 16px;
1546
1548
  border: 1px solid var(--border);
1549
+ display: flex;
1550
+ flex-direction: column;
1551
+ gap: 4px;
1547
1552
  }
1548
1553
 
1549
- /* ── Project Cards Grid ── */
1550
1554
  .projectCardsGrid {
1551
1555
  display: grid;
1552
1556
  grid-template-columns: repeat(2, 1fr);
1553
1557
  gap: 16px;
1554
- margin-bottom: 24px;
1558
+ margin: 16px 0;
1559
+ }
1560
+
1561
+ @media (max-width: 1200px) {
1562
+ .projectCardsGrid {
1563
+ grid-template-columns: 1fr;
1564
+ }
1565
+ .consolidatedView {
1566
+ grid-template-columns: repeat(2, 1fr);
1567
+ }
1555
1568
  }
1556
1569
 
1557
1570
  .projectCard {
1558
1571
  background: var(--paper);
1559
1572
  padding: 16px;
1560
1573
  border-left: 3px solid #4ade80;
1574
+ border: 1px solid var(--border);
1575
+ border-left: 3px solid #4ade80;
1561
1576
  cursor: pointer;
1562
- transition: box-shadow 0.2s ease;
1577
+ transition: background 0.2s, border-color 0.2s;
1563
1578
  }
1564
1579
 
1565
1580
  .projectCard:hover {
1566
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1581
+ background: rgba(255, 255, 255, 0.02);
1582
+ border-color: var(--accent);
1567
1583
  }
1568
1584
 
1569
1585
  .projectCard.at_risk {
@@ -1574,27 +1590,327 @@ textarea:focus {
1574
1590
  border-left-color: #666;
1575
1591
  }
1576
1592
 
1577
- /* ── Stream Item ── */
1578
1593
  .streamItem {
1579
- padding: 8px;
1594
+ padding: 12px;
1580
1595
  margin: 4px 0;
1581
1596
  border: 1px solid var(--border);
1582
- cursor: pointer;
1583
- transition: background 0.2s ease;
1597
+ background: transparent;
1598
+ transition: background 0.2s;
1599
+ font-size: 11px;
1584
1600
  }
1585
1601
 
1586
1602
  .streamItem:hover {
1587
- background: var(--bg);
1603
+ background: rgba(255, 255, 255, 0.01);
1588
1604
  }
1589
1605
 
1590
- /* ── Alert Item ── */
1591
1606
  .alertItem {
1592
1607
  padding: 12px;
1593
1608
  margin: 8px 0;
1594
1609
  border-left: 3px solid #ef4444;
1595
1610
  background: rgba(239, 68, 68, 0.05);
1611
+ border: 1px solid var(--border);
1612
+ border-left: 3px solid #ef4444;
1613
+ font-size: 11px;
1596
1614
  }
1597
1615
 
1598
1616
  * {
1599
1617
  border-radius: 0 !important;
1618
+ }
1619
+
1620
+ /* ── Kanban Board ── */
1621
+ .kanban-board {
1622
+ display: grid;
1623
+ grid-template-columns: repeat(4, 1fr);
1624
+ gap: 12px;
1625
+ min-height: 400px;
1626
+ }
1627
+
1628
+ @media (max-width: 1100px) {
1629
+ .kanban-board { grid-template-columns: repeat(2, 1fr); }
1630
+ }
1631
+ @media (max-width: 600px) {
1632
+ .kanban-board { grid-template-columns: 1fr; }
1633
+ }
1634
+
1635
+ .kanban-col {
1636
+ display: flex;
1637
+ flex-direction: column;
1638
+ background: var(--bg);
1639
+ border: 1px solid var(--line2);
1640
+ min-height: 300px;
1641
+ }
1642
+
1643
+ .kanban-col-head {
1644
+ display: flex;
1645
+ justify-content: space-between;
1646
+ align-items: center;
1647
+ padding: 10px 14px;
1648
+ font-size: 11px;
1649
+ font-weight: 800;
1650
+ letter-spacing: 1px;
1651
+ text-transform: uppercase;
1652
+ border-bottom: 2px solid var(--line2);
1653
+ flex-shrink: 0;
1654
+ }
1655
+
1656
+ .kanban-col-head.do-now { border-bottom-color: #ef4444; color: #ef4444; }
1657
+ .kanban-col-head.schedule { border-bottom-color: #3b82f6; color: #3b82f6; }
1658
+ .kanban-col-head.delegate { border-bottom-color: #f97316; color: #f97316; }
1659
+ .kanban-col-head.done { border-bottom-color: #22c55e; color: #22c55e; }
1660
+
1661
+ .kanban-col-count {
1662
+ font-size: 12px;
1663
+ font-weight: 700;
1664
+ padding: 1px 8px;
1665
+ background: var(--paper2);
1666
+ border: 1px solid var(--line2);
1667
+ }
1668
+
1669
+ .kanban-col-body {
1670
+ flex: 1;
1671
+ padding: 8px;
1672
+ display: flex;
1673
+ flex-direction: column;
1674
+ gap: 8px;
1675
+ overflow-y: auto;
1676
+ max-height: 600px;
1677
+ min-height: 80px;
1678
+ transition: background 0.15s;
1679
+ }
1680
+
1681
+ .kanban-col-body.drag-over {
1682
+ background: var(--chip);
1683
+ }
1684
+
1685
+ .kanban-card {
1686
+ background: var(--paper);
1687
+ border: 1px solid var(--line2);
1688
+ padding: 10px 12px;
1689
+ cursor: grab;
1690
+ transition: box-shadow 0.15s, opacity 0.15s;
1691
+ display: flex;
1692
+ flex-direction: column;
1693
+ gap: 6px;
1694
+ }
1695
+
1696
+ .kanban-card:hover {
1697
+ box-shadow: var(--shadow2);
1698
+ }
1699
+
1700
+ .kanban-card.dragging {
1701
+ opacity: 0.4;
1702
+ }
1703
+
1704
+ .kanban-card-header {
1705
+ display: flex;
1706
+ align-items: flex-start;
1707
+ gap: 8px;
1708
+ }
1709
+
1710
+ .kanban-pri-dot {
1711
+ width: 8px;
1712
+ height: 8px;
1713
+ flex-shrink: 0;
1714
+ margin-top: 4px;
1715
+ }
1716
+
1717
+ .kanban-card-desc {
1718
+ font-size: 13px;
1719
+ font-weight: 600;
1720
+ color: var(--text);
1721
+ line-height: 1.3;
1722
+ word-break: break-word;
1723
+ }
1724
+
1725
+ .kanban-card-meta {
1726
+ display: flex;
1727
+ gap: 6px;
1728
+ flex-wrap: wrap;
1729
+ align-items: center;
1730
+ }
1731
+
1732
+ .kanban-tag {
1733
+ font-size: 10px;
1734
+ font-weight: 600;
1735
+ padding: 1px 6px;
1736
+ background: var(--chip);
1737
+ color: var(--primary);
1738
+ border: 1px solid var(--line2);
1739
+ font-family: var(--mono);
1740
+ }
1741
+
1742
+ .kanban-due {
1743
+ font-size: 10px;
1744
+ font-weight: 600;
1745
+ padding: 1px 6px;
1746
+ color: var(--muted);
1747
+ border: 1px solid var(--line2);
1748
+ }
1749
+
1750
+ .kanban-due.overdue {
1751
+ background: rgba(239, 68, 68, 0.1);
1752
+ color: #ef4444;
1753
+ border-color: rgba(239, 68, 68, 0.3);
1754
+ }
1755
+
1756
+ .kanban-card-actions {
1757
+ display: flex;
1758
+ gap: 4px;
1759
+ justify-content: flex-end;
1760
+ opacity: 0;
1761
+ transition: opacity 0.15s;
1762
+ }
1763
+
1764
+ .kanban-card:hover .kanban-card-actions {
1765
+ opacity: 1;
1766
+ }
1767
+
1768
+ .kanban-action-btn {
1769
+ background: var(--bg);
1770
+ border: 1px solid var(--line2);
1771
+ color: var(--muted);
1772
+ padding: 2px 8px;
1773
+ font-size: 12px;
1774
+ cursor: pointer;
1775
+ transition: var(--transition);
1776
+ }
1777
+
1778
+ .kanban-action-btn:hover {
1779
+ color: var(--text);
1780
+ background: var(--paper2);
1781
+ }
1782
+
1783
+ .kanban-action-btn.complete-btn:hover {
1784
+ color: #22c55e;
1785
+ border-color: #22c55e;
1786
+ }
1787
+
1788
+ .kanban-owner {
1789
+ font-size: 10px;
1790
+ color: var(--faint);
1791
+ font-style: italic;
1792
+ }
1793
+
1794
+ /* Kanban filter */
1795
+ .kanban-filter {
1796
+ background: var(--bg);
1797
+ border: 1px solid var(--line2);
1798
+ color: var(--text);
1799
+ padding: 5px 10px;
1800
+ font-size: 12px;
1801
+ font-family: var(--mono);
1802
+ min-width: 180px;
1803
+ }
1804
+
1805
+ /* Kanban blockers strip */
1806
+ .kanban-blockers-list {
1807
+ display: flex;
1808
+ flex-wrap: wrap;
1809
+ gap: 8px;
1810
+ }
1811
+
1812
+ .kanban-blocker-card {
1813
+ display: flex;
1814
+ align-items: center;
1815
+ gap: 8px;
1816
+ padding: 8px 12px;
1817
+ background: rgba(239, 68, 68, 0.04);
1818
+ border: 1px solid rgba(239, 68, 68, 0.15);
1819
+ border-left: 3px solid #ef4444;
1820
+ flex: 1 1 300px;
1821
+ max-width: 500px;
1822
+ }
1823
+
1824
+ .kanban-blocker-sev {
1825
+ font-size: 9px;
1826
+ font-weight: 800;
1827
+ letter-spacing: 0.5px;
1828
+ padding: 2px 6px;
1829
+ border: 1px solid;
1830
+ flex-shrink: 0;
1831
+ }
1832
+
1833
+ .kanban-blocker-title {
1834
+ font-size: 12px;
1835
+ font-weight: 600;
1836
+ color: var(--text);
1837
+ flex: 1;
1838
+ min-width: 0;
1839
+ overflow: hidden;
1840
+ text-overflow: ellipsis;
1841
+ white-space: nowrap;
1842
+ }
1843
+
1844
+ /* ── Quick-Add Modal ── */
1845
+ .qa-overlay {
1846
+ position: fixed;
1847
+ inset: 0;
1848
+ background: rgba(0, 0, 0, 0.5);
1849
+ z-index: 9999;
1850
+ display: flex;
1851
+ align-items: center;
1852
+ justify-content: center;
1853
+ }
1854
+
1855
+ .qa-modal {
1856
+ background: var(--bg);
1857
+ border: 1px solid var(--line2);
1858
+ box-shadow: var(--shadow);
1859
+ width: 440px;
1860
+ max-width: 95vw;
1861
+ padding: 16px;
1862
+ display: flex;
1863
+ flex-direction: column;
1864
+ gap: 10px;
1865
+ }
1866
+
1867
+ .qa-header {
1868
+ display: flex;
1869
+ justify-content: space-between;
1870
+ align-items: center;
1871
+ }
1872
+
1873
+ .qa-input {
1874
+ background: var(--paper);
1875
+ border: 1px solid var(--line2);
1876
+ color: var(--text);
1877
+ padding: 8px 10px;
1878
+ font-size: 13px;
1879
+ font-family: var(--sans);
1880
+ width: 100%;
1881
+ resize: none;
1882
+ }
1883
+
1884
+ .qa-input:focus {
1885
+ outline: none;
1886
+ border-color: var(--primary);
1887
+ }
1888
+
1889
+ .qa-select {
1890
+ background: var(--paper);
1891
+ border: 1px solid var(--line2);
1892
+ color: var(--text);
1893
+ padding: 6px 10px;
1894
+ font-size: 12px;
1895
+ flex: 1;
1896
+ }
1897
+
1898
+ .qa-row {
1899
+ display: flex;
1900
+ gap: 8px;
1901
+ align-items: center;
1902
+ }
1903
+
1904
+ /* ── Delta Banner ── */
1905
+ .delta-banner {
1906
+ display: flex;
1907
+ align-items: center;
1908
+ gap: 8px;
1909
+ padding: 8px 14px;
1910
+ margin-bottom: 12px;
1911
+ background: var(--chip);
1912
+ border: 1px solid var(--line2);
1913
+ font-size: 12px;
1914
+ color: var(--text);
1915
+ border-left: 3px solid var(--primary);
1600
1916
  }