@tanstack/ai-devtools-core 0.3.9 → 0.3.11

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.
@@ -1588,6 +1588,713 @@ const stylesFactory = (theme: 'light' | 'dark') => {
1588
1588
  font-weight: ${font.weight.semibold};
1589
1589
  `,
1590
1590
  },
1591
+
1592
+ iterationTimeline: {
1593
+ container: css`
1594
+ position: relative;
1595
+ padding: ${size[3]} ${size[3]};
1596
+ overflow-y: auto;
1597
+ flex: 1;
1598
+ `,
1599
+ pipeline: css`
1600
+ position: relative;
1601
+ display: flex;
1602
+ flex-direction: column;
1603
+ gap: ${size[3]};
1604
+ `,
1605
+ iterList: css`
1606
+ display: flex;
1607
+ flex-direction: column;
1608
+ gap: 0;
1609
+ `,
1610
+ // --- User message group card ---
1611
+ card: css`
1612
+ position: relative;
1613
+ border-radius: ${border.radius.md};
1614
+ background: ${t(colors.gray[50], colors.darkGray[700])};
1615
+ border: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1616
+ overflow: hidden;
1617
+ `,
1618
+ cardCompleted: css`
1619
+ border-color: ${t(colors.green[200], colors.green[900] + '60')};
1620
+ `,
1621
+ cardError: css`
1622
+ border-color: ${t(colors.red[300], colors.red[800])};
1623
+ `,
1624
+ cardActive: css`
1625
+ border-color: ${t(colors.blue[300], colors.blue[700])};
1626
+ `,
1627
+ cardHeader: css`
1628
+ display: flex;
1629
+ align-items: flex-start;
1630
+ gap: ${size[2]};
1631
+ padding: ${size[3]} ${size[3]};
1632
+ cursor: pointer;
1633
+ user-select: none;
1634
+
1635
+ &:hover {
1636
+ background: ${t(colors.gray[100], colors.darkGray[600])};
1637
+ }
1638
+ `,
1639
+ cardHeaderContent: css`
1640
+ flex: 1;
1641
+ min-width: 0;
1642
+ display: flex;
1643
+ flex-direction: column;
1644
+ gap: ${size[1]};
1645
+ `,
1646
+ cardHeaderLabel: css`
1647
+ font-size: ${fontSize.sm};
1648
+ font-weight: ${font.weight.semibold};
1649
+ color: ${t(colors.gray[800], colors.gray[200])};
1650
+ line-height: 1.3;
1651
+ `,
1652
+ cardSubtitle: css`
1653
+ display: flex;
1654
+ align-items: center;
1655
+ gap: ${size[1.5]};
1656
+ flex-wrap: wrap;
1657
+ `,
1658
+ subtitleText: css`
1659
+ font-size: 10px;
1660
+ font-family: ${fontFamily.mono};
1661
+ color: ${t(colors.gray[500], colors.gray[400])};
1662
+ `,
1663
+ subtitleBadge: css`
1664
+ font-size: 9px;
1665
+ padding: 0 ${size[1]};
1666
+ border-radius: ${border.radius.xs};
1667
+ background: ${t(colors.gray[100], colors.darkGray[500])};
1668
+ color: ${t(colors.gray[500], colors.gray[400])};
1669
+ `,
1670
+ subtitleBadgeWarn: css`
1671
+ font-size: 9px;
1672
+ padding: 0 ${size[1]};
1673
+ border-radius: ${border.radius.xs};
1674
+ background: ${t(colors.purple[50], colors.purple[900] + '30')};
1675
+ color: ${t(colors.purple[600], colors.purple[300])};
1676
+ `,
1677
+ subtitleExpandToggle: css`
1678
+ font-size: 9px;
1679
+ color: ${t(colors.blue[500], colors.blue[400])};
1680
+ cursor: pointer;
1681
+ text-decoration: underline;
1682
+ text-decoration-style: dotted;
1683
+ &:hover {
1684
+ color: ${t(colors.blue[600], colors.blue[300])};
1685
+ }
1686
+ `,
1687
+ configPanelWrapper: css`
1688
+ display: grid;
1689
+ grid-template-rows: 0fr;
1690
+ transition: grid-template-rows 0.2s ease-out;
1691
+ `,
1692
+ configPanelWrapperOpen: css`
1693
+ grid-template-rows: 1fr;
1694
+ `,
1695
+ configPanel: css`
1696
+ overflow: hidden;
1697
+ & > div {
1698
+ padding: ${size[2]} ${size[3]};
1699
+ border-top: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1700
+ background: ${t(colors.gray[50], colors.darkGray[700])};
1701
+ font-size: ${fontSize.xs};
1702
+ }
1703
+ `,
1704
+ configPanelSection: css`
1705
+ display: flex;
1706
+ flex-direction: column;
1707
+ gap: ${size[1]};
1708
+ padding-bottom: ${size[2]};
1709
+
1710
+ &:last-child {
1711
+ padding-bottom: 0;
1712
+ }
1713
+
1714
+ & + & {
1715
+ border-top: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1716
+ padding-top: ${size[2]};
1717
+ }
1718
+ `,
1719
+ configPanelLabel: css`
1720
+ font-weight: ${font.weight.semibold};
1721
+ color: ${t(colors.gray[500], colors.gray[400])};
1722
+ font-size: 10px;
1723
+ text-transform: uppercase;
1724
+ letter-spacing: 0.5px;
1725
+ flex-shrink: 0;
1726
+ `,
1727
+ configToolsList: css`
1728
+ display: flex;
1729
+ flex-wrap: wrap;
1730
+ gap: ${size[1]};
1731
+ `,
1732
+ configToolChip: css`
1733
+ display: inline-flex;
1734
+ align-items: center;
1735
+ gap: ${size[1]};
1736
+ padding: 1px ${size[1.5]};
1737
+ border-radius: ${border.radius.sm};
1738
+ font-size: 10px;
1739
+ font-family: ${fontFamily.mono};
1740
+ color: ${t(colors.yellow[800], colors.yellow[300])};
1741
+ background: ${t(colors.yellow[50], colors.yellow[900] + '25')};
1742
+ border: 1px solid ${t(colors.yellow[200], colors.yellow[800] + '40')};
1743
+ `,
1744
+ configToolChipCount: css`
1745
+ font-size: 9px;
1746
+ font-weight: ${font.weight.bold};
1747
+ padding: 0 ${size[1]};
1748
+ border-radius: ${border.radius.xs};
1749
+ background: ${t(colors.yellow[200], colors.yellow[800] + '50')};
1750
+ color: ${t(colors.yellow[700], colors.yellow[200])};
1751
+ `,
1752
+ configJsonTreeContainer: css`
1753
+ border-radius: ${border.radius.sm};
1754
+ overflow: hidden;
1755
+ border: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1756
+ background: ${t(colors.gray[50], colors.darkGray[800])};
1757
+ padding: ${size[1.5]} ${size[2]};
1758
+ `,
1759
+ systemPromptCard: css`
1760
+ border-radius: ${border.radius.sm};
1761
+ overflow: hidden;
1762
+ border: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1763
+ background: ${t(colors.gray[50], colors.darkGray[800])};
1764
+ `,
1765
+ systemPromptHeader: css`
1766
+ display: flex;
1767
+ align-items: center;
1768
+ gap: ${size[1.5]};
1769
+ padding: ${size[1.5]} ${size[2]};
1770
+ cursor: pointer;
1771
+ user-select: none;
1772
+ font-size: ${fontSize.xs};
1773
+
1774
+ &:hover {
1775
+ background: ${t(colors.gray[100], colors.darkGray[700])};
1776
+ }
1777
+ `,
1778
+ systemPromptIndex: css`
1779
+ font-weight: ${font.weight.bold};
1780
+ color: ${t(colors.gray[400], colors.gray[500])};
1781
+ font-size: 10px;
1782
+ flex-shrink: 0;
1783
+ `,
1784
+ systemPromptPreview: css`
1785
+ flex: 1;
1786
+ min-width: 0;
1787
+ color: ${t(colors.gray[600], colors.gray[400])};
1788
+ font-family: ${fontFamily.mono};
1789
+ font-size: ${fontSize.xs};
1790
+ overflow: hidden;
1791
+ text-overflow: ellipsis;
1792
+ white-space: nowrap;
1793
+ `,
1794
+ systemPromptFull: css`
1795
+ margin: 0;
1796
+ padding: ${size[2]} ${size[3]};
1797
+ font-size: ${fontSize.xs};
1798
+ font-family: ${fontFamily.mono};
1799
+ white-space: pre-wrap;
1800
+ word-break: break-word;
1801
+ max-height: 300px;
1802
+ overflow-y: auto;
1803
+ color: ${t(colors.gray[700], colors.gray[200])};
1804
+ border-top: 1px solid ${t(colors.gray[200], colors.darkGray[600])};
1805
+ background: ${t(colors.gray[50], colors.darkGray[900])};
1806
+ line-height: 1.5;
1807
+ `,
1808
+ cardHeaderBadges: css`
1809
+ display: flex;
1810
+ align-items: center;
1811
+ gap: ${size[1]};
1812
+ flex-shrink: 0;
1813
+ flex-wrap: wrap;
1814
+ justify-content: flex-end;
1815
+ `,
1816
+ chevron: css`
1817
+ color: ${t(colors.gray[400], colors.gray[500])};
1818
+ font-size: 10px;
1819
+ transition: transform 0.2s ease;
1820
+ flex-shrink: 0;
1821
+ margin-top: 3px;
1822
+ `,
1823
+ chevronOpen: css`
1824
+ transform: rotate(90deg);
1825
+ `,
1826
+ badge: css`
1827
+ font-size: ${fontSize.xs};
1828
+ padding: 1px ${size[2]};
1829
+ border-radius: ${border.radius.sm};
1830
+ font-family: ${fontFamily.mono};
1831
+ font-weight: ${font.weight.medium};
1832
+ white-space: nowrap;
1833
+ `,
1834
+ badgeDuration: css`
1835
+ background: ${t(colors.gray[100], colors.darkGray[500])};
1836
+ color: ${t(colors.gray[600], colors.gray[300])};
1837
+ `,
1838
+ badgeFinishReason: css`
1839
+ background: ${t(colors.blue[50], colors.blue[900] + '40')};
1840
+ color: ${t(colors.blue[700], colors.blue[300])};
1841
+ `,
1842
+ badgeFinishReasonStop: css`
1843
+ background: ${t(colors.green[50], colors.green[900] + '40')};
1844
+ color: ${t(colors.green[700], colors.green[300])};
1845
+ `,
1846
+ badgeFinishReasonToolCalls: css`
1847
+ background: ${t(colors.yellow[50], colors.yellow[900] + '40')};
1848
+ color: ${t(colors.yellow[700], colors.yellow[300])};
1849
+ `,
1850
+ badgeUsage: css`
1851
+ background: ${t(colors.purple[50], colors.purple[900] + '40')};
1852
+ color: ${t(colors.purple[700], colors.purple[300])};
1853
+ `,
1854
+ cardBody: css`
1855
+ display: grid;
1856
+ grid-template-rows: 0fr;
1857
+ transition: grid-template-rows 0.2s ease-out;
1858
+ `,
1859
+ cardBodyOpen: css`
1860
+ grid-template-rows: 1fr;
1861
+ `,
1862
+ cardBodyInner: css`
1863
+ overflow: hidden;
1864
+ `,
1865
+ userBubble: css`
1866
+ width: 22px;
1867
+ height: 22px;
1868
+ border-radius: 50%;
1869
+ display: flex;
1870
+ align-items: center;
1871
+ justify-content: center;
1872
+ font-size: 10px;
1873
+ font-weight: ${font.weight.bold};
1874
+ color: ${colors.white};
1875
+ flex-shrink: 0;
1876
+ background: ${t(colors.blue[500], colors.blue[600])};
1877
+ margin-top: 1px;
1878
+ `,
1879
+
1880
+ // --- Iteration card (inside user group) ---
1881
+ iterCard: css`
1882
+ position: relative;
1883
+ background: ${t(colors.gray[50], colors.darkGray[700])};
1884
+ border-top: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
1885
+ overflow: hidden;
1886
+ animation: iterStaggerIn 0.3s ease-out both;
1887
+ width: 100%;
1888
+
1889
+ @keyframes iterStaggerIn {
1890
+ from {
1891
+ opacity: 0;
1892
+ transform: translateY(4px);
1893
+ }
1894
+ to {
1895
+ opacity: 1;
1896
+ transform: translateY(0);
1897
+ }
1898
+ }
1899
+ `,
1900
+ iterCardHeader: css`
1901
+ display: flex;
1902
+ align-items: center;
1903
+ gap: ${size[2]};
1904
+ padding: ${size[2]} ${size[3]};
1905
+ cursor: pointer;
1906
+ user-select: none;
1907
+
1908
+ &:hover {
1909
+ background: ${t(colors.gray[100], colors.darkGray[600])};
1910
+ }
1911
+ `,
1912
+ iterHeaderCompleted: css`
1913
+ border-left: 3px solid ${t(colors.green[400], colors.green[500])};
1914
+ `,
1915
+ iterHeaderError: css`
1916
+ border-left: 3px solid ${t(colors.red[400], colors.red[500])};
1917
+ `,
1918
+ iterHeaderActive: css`
1919
+ border-left: 3px solid ${t(colors.blue[400], colors.blue[500])};
1920
+ animation: iterActivePulse 2s ease-in-out infinite;
1921
+
1922
+ @keyframes iterActivePulse {
1923
+ 0%,
1924
+ 100% {
1925
+ border-left-color: ${t(colors.blue[400], colors.blue[500])};
1926
+ }
1927
+ 50% {
1928
+ border-left-color: ${t(colors.blue[200], colors.blue[700])};
1929
+ }
1930
+ }
1931
+ `,
1932
+ iterCardTitle: css`
1933
+ font-size: ${fontSize.xs};
1934
+ font-weight: ${font.weight.semibold};
1935
+ color: ${t(colors.gray[700], colors.gray[300])};
1936
+ `,
1937
+
1938
+ // --- Config row ---
1939
+ configRow: css`
1940
+ display: flex;
1941
+ align-items: center;
1942
+ flex-wrap: wrap;
1943
+ gap: ${size[2]};
1944
+ padding: ${size[1.5]} ${size[3]};
1945
+ font-size: ${fontSize.xs};
1946
+ color: ${t(colors.gray[500], colors.gray[400])};
1947
+ font-family: ${fontFamily.mono};
1948
+ border-bottom: 1px solid ${t(colors.gray[100], colors.darkGray[600])};
1949
+ `,
1950
+ configRowText: css`
1951
+ color: ${t(colors.gray[500], colors.gray[400])};
1952
+ `,
1953
+ configRowMeta: css`
1954
+ color: ${t(colors.gray[400], colors.gray[500])};
1955
+ `,
1956
+ configDiffChip: css`
1957
+ font-size: 9px;
1958
+ padding: 0 ${size[1]};
1959
+ border-radius: ${border.radius.xs};
1960
+ background: ${t(colors.yellow[100], colors.yellow[900] + '40')};
1961
+ color: ${t(colors.yellow[700], colors.yellow[400])};
1962
+ font-weight: ${font.weight.bold};
1963
+ text-transform: uppercase;
1964
+ letter-spacing: 0.05em;
1965
+ `,
1966
+ configDetails: css`
1967
+ width: 100%;
1968
+ margin-top: ${size[2]};
1969
+ display: flex;
1970
+ flex-direction: column;
1971
+ gap: ${size[2]};
1972
+ `,
1973
+ configDiffSection: css`
1974
+ display: flex;
1975
+ flex-direction: column;
1976
+ gap: ${size[1]};
1977
+ `,
1978
+ configDiffRow: css`
1979
+ display: flex;
1980
+ align-items: center;
1981
+ gap: ${size[1]};
1982
+ font-size: 10px;
1983
+ `,
1984
+ configDiffKey: css`
1985
+ font-weight: ${font.weight.semibold};
1986
+ color: ${t(colors.gray[600], colors.gray[300])};
1987
+ `,
1988
+ configDiffFrom: css`
1989
+ color: ${t(colors.red[600], colors.red[400])};
1990
+ text-decoration: line-through;
1991
+ `,
1992
+ configDiffArrow: css`
1993
+ color: ${t(colors.gray[400], colors.gray[500])};
1994
+ `,
1995
+ configDiffTo: css`
1996
+ color: ${t(colors.green[600], colors.green[400])};
1997
+ font-weight: ${font.weight.semibold};
1998
+ `,
1999
+ configSystemPrompts: css`
2000
+ display: flex;
2001
+ flex-direction: column;
2002
+ gap: ${size[1]};
2003
+ `,
2004
+ systemPromptItem: css`
2005
+ font-size: ${fontSize.xs};
2006
+ padding: ${size[2]};
2007
+ border-radius: ${border.radius.sm};
2008
+ background: ${t(colors.gray[50], colors.darkGray[600])};
2009
+ white-space: pre-wrap;
2010
+ word-break: break-word;
2011
+ line-height: 1.5;
2012
+ color: ${t(colors.gray[700], colors.gray[200])};
2013
+ max-height: 120px;
2014
+ overflow-y: auto;
2015
+ `,
2016
+ // --- Step row ---
2017
+ step: css`
2018
+ display: flex;
2019
+ align-items: center;
2020
+ gap: ${size[1.5]};
2021
+ padding: ${size[1.5]} ${size[3]};
2022
+ font-size: ${fontSize.xs};
2023
+ border-bottom: 1px solid ${t(colors.gray[100], colors.darkGray[600])};
2024
+
2025
+ &:last-child {
2026
+ border-bottom: none;
2027
+ }
2028
+ `,
2029
+ stepResponseLong: css`
2030
+ flex-direction: column;
2031
+ align-items: flex-start;
2032
+ gap: ${size[1]};
2033
+ `,
2034
+ stepPrefix: css`
2035
+ flex-shrink: 0;
2036
+ font-size: 10px;
2037
+ font-weight: ${font.weight.bold};
2038
+ text-transform: uppercase;
2039
+ letter-spacing: 0.03em;
2040
+ padding: 1px ${size[1.5]};
2041
+ border-radius: ${border.radius.xs};
2042
+ `,
2043
+ stepPrefixMiddleware: css`
2044
+ color: ${t(colors.purple[700], colors.purple[300])};
2045
+ background: ${t(colors.purple[50], colors.purple[900] + '30')};
2046
+ `,
2047
+ stepPrefixToolCall: css`
2048
+ color: ${t(colors.yellow[800], colors.yellow[300])};
2049
+ background: ${t(colors.yellow[50], colors.yellow[900] + '30')};
2050
+ `,
2051
+ stepPrefixToolResult: css`
2052
+ color: ${t(colors.cyan[700], colors.cyan[300])};
2053
+ background: ${t(colors.cyan[900] + '15', colors.cyan[900] + '30')};
2054
+ `,
2055
+ stepPrefixAssistant: css`
2056
+ color: ${t(colors.blue[700], colors.blue[300])};
2057
+ background: ${t(colors.blue[50], colors.blue[900] + '30')};
2058
+ `,
2059
+ stepPrefixThinking: css`
2060
+ color: ${t(colors.pink[700], colors.pink[300])};
2061
+ background: ${t(colors.pink[50], colors.pink[900] + '30')};
2062
+ `,
2063
+ stepContent: css`
2064
+ flex: 1;
2065
+ min-width: 0;
2066
+ color: ${t(colors.gray[600], colors.gray[400])};
2067
+ font-family: ${fontFamily.mono};
2068
+ overflow: hidden;
2069
+ text-overflow: ellipsis;
2070
+ white-space: nowrap;
2071
+ `,
2072
+ stepContentLong: css`
2073
+ color: ${t(colors.gray[700], colors.gray[200])};
2074
+ font-size: ${fontSize.sm};
2075
+ line-height: 1.5;
2076
+ white-space: pre-wrap;
2077
+ word-break: break-word;
2078
+ width: 100%;
2079
+ `,
2080
+ stepDuration: css`
2081
+ flex-shrink: 0;
2082
+ font-family: ${fontFamily.mono};
2083
+ font-size: 10px;
2084
+ color: ${t(colors.gray[400], colors.gray[500])};
2085
+ `,
2086
+ stepExpandToggle: css`
2087
+ flex-shrink: 0;
2088
+ cursor: pointer;
2089
+ color: ${t(colors.blue[500], colors.blue[400])};
2090
+ font-size: 10px;
2091
+ user-select: none;
2092
+ padding: 0 ${size[1]};
2093
+
2094
+ &:hover {
2095
+ text-decoration: underline;
2096
+ }
2097
+ `,
2098
+ stepJsonPanel: css`
2099
+ margin: ${size[1.5]} ${size[3]};
2100
+ padding: ${size[1.5]} ${size[2]} ${size[1.5]} ${size[5]};
2101
+ border-radius: ${border.radius.sm};
2102
+ border: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
2103
+ background: ${t(colors.gray[50], colors.darkGray[800])};
2104
+ `,
2105
+ stepDetail: css`
2106
+ padding: ${size[2]};
2107
+ margin: 0 ${size[3]} ${size[1.5]};
2108
+ border-radius: ${border.radius.sm};
2109
+ background: ${t(colors.gray[50], colors.darkGray[600])};
2110
+ font-size: ${fontSize.xs};
2111
+ font-family: ${fontFamily.mono};
2112
+ white-space: pre-wrap;
2113
+ word-break: break-word;
2114
+ max-height: 200px;
2115
+ overflow-y: auto;
2116
+ color: ${t(colors.gray[700], colors.gray[200])};
2117
+ `,
2118
+ responseDetail: css`
2119
+ padding: ${size[3]};
2120
+ margin: 0 ${size[3]} ${size[1.5]};
2121
+ border-radius: ${border.radius.sm};
2122
+ background: ${t(colors.gray[50], colors.darkGray[600])};
2123
+ font-size: ${fontSize.sm};
2124
+ line-height: 1.6;
2125
+ white-space: pre-wrap;
2126
+ word-break: break-word;
2127
+ max-height: 400px;
2128
+ overflow-y: auto;
2129
+ color: ${t(colors.gray[800], colors.gray[100])};
2130
+ `,
2131
+ thinkingDetail: css`
2132
+ padding: ${size[3]};
2133
+ margin: 0 ${size[3]} ${size[1.5]};
2134
+ border-radius: ${border.radius.sm};
2135
+ background: ${t(colors.pink[50], colors.pink[900] + '15')};
2136
+ border-left: 3px solid ${t(colors.pink[300], colors.pink[600])};
2137
+ font-size: ${fontSize.sm};
2138
+ font-style: italic;
2139
+ line-height: 1.6;
2140
+ white-space: pre-wrap;
2141
+ word-break: break-word;
2142
+ max-height: 400px;
2143
+ overflow-y: auto;
2144
+ color: ${t(colors.gray[700], colors.gray[200])};
2145
+ `,
2146
+ jsonTreeContainer: css`
2147
+ padding: ${size[1]} ${size[3]} ${size[2]};
2148
+ `,
2149
+
2150
+ // --- Middleware badge styles ---
2151
+ mwBadge: css`
2152
+ display: inline-flex;
2153
+ align-items: center;
2154
+ padding: 1px ${size[1.5]};
2155
+ border-radius: ${border.radius.sm};
2156
+ font-size: 10px;
2157
+ font-family: ${fontFamily.mono};
2158
+ font-weight: ${font.weight.semibold};
2159
+ white-space: nowrap;
2160
+ flex-shrink: 0;
2161
+ `,
2162
+ mwBadgeDefault: css`
2163
+ background: ${t(colors.gray[100], colors.darkGray[500])};
2164
+ color: ${t(colors.gray[600], colors.gray[300])};
2165
+ `,
2166
+ mwBadgeTransform: css`
2167
+ background: ${t(colors.purple[50], colors.purple[900] + '30')};
2168
+ color: ${t(colors.purple[700], colors.purple[300])};
2169
+ `,
2170
+ mwBadgeError: css`
2171
+ background: ${t(colors.red[50], colors.red[900] + '30')};
2172
+ color: ${t(colors.red[700], colors.red[300])};
2173
+ `,
2174
+ mwBadgeToolCall: css`
2175
+ background: ${t(colors.yellow[50], colors.yellow[900] + '30')};
2176
+ color: ${t(colors.yellow[800], colors.yellow[300])};
2177
+ `,
2178
+ mwBadgeToolResult: css`
2179
+ background: ${t(colors.cyan[900] + '15', colors.cyan[900] + '30')};
2180
+ color: ${t(colors.cyan[700], colors.cyan[300])};
2181
+ `,
2182
+ mwHook: css`
2183
+ font-size: 10px;
2184
+ font-family: ${fontFamily.mono};
2185
+ color: ${t(colors.gray[500], colors.gray[400])};
2186
+ flex-shrink: 0;
2187
+ `,
2188
+ mwSuffix: css`
2189
+ font-size: 9px;
2190
+ font-weight: ${font.weight.bold};
2191
+ text-transform: uppercase;
2192
+ letter-spacing: 0.03em;
2193
+ padding: 1px ${size[1]};
2194
+ border-radius: ${border.radius.xs};
2195
+ background: ${t(colors.yellow[100], colors.yellow[900] + '40')};
2196
+ color: ${t(colors.yellow[800], colors.yellow[300])};
2197
+ flex-shrink: 0;
2198
+ `,
2199
+ mwChangesContainer: css`
2200
+ padding: ${size[1]} ${size[3]} ${size[2]};
2201
+ `,
2202
+
2203
+ // --- JSON Viewer ---
2204
+ jsonViewer: css`
2205
+ border: 1px solid ${t(colors.gray[200], colors.darkGray[500])};
2206
+ border-radius: ${border.radius.sm};
2207
+ overflow: hidden;
2208
+ background: ${t(colors.gray[50], colors.darkGray[800])};
2209
+ `,
2210
+ jsonViewerHeader: css`
2211
+ display: flex;
2212
+ align-items: center;
2213
+ gap: ${size[1.5]};
2214
+ padding: ${size[1.5]} ${size[2]};
2215
+ cursor: pointer;
2216
+ user-select: none;
2217
+ font-size: 10px;
2218
+
2219
+ &:hover {
2220
+ background: ${t(colors.gray[100], colors.darkGray[700])};
2221
+ }
2222
+ `,
2223
+ jsonViewerChevron: css`
2224
+ color: ${t(colors.gray[400], colors.gray[500])};
2225
+ font-size: 8px;
2226
+ transition: transform 0.15s ease;
2227
+ flex-shrink: 0;
2228
+ `,
2229
+ jsonViewerLabel: css`
2230
+ font-weight: ${font.weight.semibold};
2231
+ color: ${t(colors.gray[600], colors.gray[300])};
2232
+ font-size: 10px;
2233
+ flex-shrink: 0;
2234
+ `,
2235
+ jsonViewerPreview: css`
2236
+ flex: 1;
2237
+ min-width: 0;
2238
+ color: ${t(colors.gray[500], colors.gray[400])};
2239
+ font-family: ${fontFamily.mono};
2240
+ font-size: 10px;
2241
+ overflow: hidden;
2242
+ text-overflow: ellipsis;
2243
+ white-space: nowrap;
2244
+ `,
2245
+ jsonViewerContent: css`
2246
+ margin: 0;
2247
+ padding: ${size[2]};
2248
+ font-size: ${fontSize.xs};
2249
+ font-family: ${fontFamily.mono};
2250
+ white-space: pre-wrap;
2251
+ word-break: break-word;
2252
+ max-height: 300px;
2253
+ overflow-y: auto;
2254
+ color: ${t(colors.gray[700], colors.gray[200])};
2255
+ border-top: 1px solid ${t(colors.gray[200], colors.darkGray[600])};
2256
+ background: ${t(colors.gray[50], colors.darkGray[900])};
2257
+ line-height: 1.5;
2258
+ `,
2259
+ jsonViewerContainer: css`
2260
+ padding: ${size[1]} ${size[3]} ${size[2]};
2261
+ `,
2262
+
2263
+ // --- Standalone middleware display (MiddlewareEventsSection) ---
2264
+ middlewareContainer: css`
2265
+ display: flex;
2266
+ flex-wrap: wrap;
2267
+ gap: ${size[1]};
2268
+ `,
2269
+ middlewarePill: css`
2270
+ display: inline-flex;
2271
+ align-items: center;
2272
+ gap: ${size[1]};
2273
+ padding: 1px ${size[1.5]};
2274
+ border-radius: ${border.radius.sm};
2275
+ font-size: 10px;
2276
+ font-family: ${fontFamily.mono};
2277
+ background: ${t(colors.gray[100], colors.darkGray[500])};
2278
+ color: ${t(colors.gray[600], colors.gray[300])};
2279
+ white-space: nowrap;
2280
+ `,
2281
+ middlewarePillTransform: css`
2282
+ background: ${t(colors.purple[50], colors.purple[900] + '30')};
2283
+ color: ${t(colors.purple[700], colors.purple[300])};
2284
+ `,
2285
+ middlewarePillSuffix: css`
2286
+ font-weight: ${font.weight.bold};
2287
+ font-size: 9px;
2288
+ text-transform: uppercase;
2289
+ `,
2290
+
2291
+ noIterations: css`
2292
+ text-align: center;
2293
+ padding: ${size[6]};
2294
+ color: ${t(colors.gray[400], colors.gray[500])};
2295
+ font-size: ${fontSize.sm};
2296
+ `,
2297
+ },
1591
2298
  }
1592
2299
  }
1593
2300