@lolmath/ui 0.0.0-20260620204307 → 0.0.0-20260726214151

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/index.css CHANGED
@@ -1654,6 +1654,237 @@
1654
1654
  }
1655
1655
  }
1656
1656
  }
1657
+ @layer lol {
1658
+ ._resizableContainer_1vns6_2 {
1659
+ overflow: auto;
1660
+ position: relative;
1661
+ }
1662
+
1663
+ ._table_1vns6_7 {
1664
+ border-collapse: collapse;
1665
+ border-spacing: 0;
1666
+ width: 100%;
1667
+ outline: none;
1668
+
1669
+ font-family: var(--lol-font-family-spiegel);
1670
+ font-size: var(--lol-font-size-sm);
1671
+ line-height: var(--lol-line-height-sm);
1672
+ letter-spacing: var(--lol-letter-spacing-sm);
1673
+ font-weight: var(--lol-font-weight-sm);
1674
+
1675
+ &[data-focus-visible] {
1676
+ outline: 1px solid var(--lol-color-gold-400);
1677
+ outline-offset: 0.25rem;
1678
+ }
1679
+ }
1680
+
1681
+ ._row_1vns6_25 {
1682
+ color: var(--lol-color-grey-100);
1683
+ outline: none;
1684
+ transition: color 0.3s ease;
1685
+
1686
+ /* Every decoration is a background layer: a pseudo element on a table row
1687
+ is laid out as an anonymous cell and would shift the columns. */
1688
+ --lol-table-row-spine: none;
1689
+ --lol-table-row-hover: none;
1690
+ --lol-table-row-highlight: none;
1691
+
1692
+ background-image:
1693
+ var(--lol-table-row-spine), var(--lol-table-row-hover),
1694
+ var(--lol-table-row-highlight);
1695
+ background-repeat: no-repeat;
1696
+
1697
+ @media (prefers-reduced-motion: reduce) {
1698
+ transition: none;
1699
+ }
1700
+
1701
+ &[data-href] {
1702
+ cursor: pointer;
1703
+ }
1704
+
1705
+ &[data-hovered] {
1706
+ color: var(--lol-color-gold-100);
1707
+ --lol-table-row-hover: linear-gradient(
1708
+ 90deg,
1709
+ rgb(from var(--lol-color-gold-100) r g b / 0.08),
1710
+ transparent
1711
+ );
1712
+ }
1713
+
1714
+ &[data-selected] {
1715
+ color: var(--lol-color-gold-100);
1716
+ /* Gold spine on the selected row, matching the client's "current" row. */
1717
+ --lol-table-row-spine: linear-gradient(
1718
+ 90deg,
1719
+ var(--lol-color-gold-500) 0 0.25rem,
1720
+ transparent 0.25rem
1721
+ );
1722
+ --lol-table-row-highlight: linear-gradient(
1723
+ 90deg,
1724
+ rgb(from var(--lol-color-blue-400) r g b / 0.55),
1725
+ rgb(from var(--lol-color-blue-300) r g b / 0.1)
1726
+ );
1727
+ }
1728
+
1729
+ &[data-disabled] {
1730
+ color: var(--lol-color-grey-150);
1731
+ cursor: default;
1732
+ }
1733
+
1734
+ &[data-focus-visible] {
1735
+ outline: 1px solid var(--lol-color-gold-400);
1736
+ outline-offset: -1px;
1737
+ }
1738
+ }
1739
+
1740
+ ._cell_1vns6_84 {
1741
+ padding: 0.375rem 0.75rem;
1742
+ vertical-align: middle;
1743
+ outline: none;
1744
+
1745
+ &[data-focus-visible] {
1746
+ outline: 1px solid var(--lol-color-gold-400);
1747
+ outline-offset: -1px;
1748
+ }
1749
+ }
1750
+
1751
+ ._resizer_1vns6_95 {
1752
+ position: absolute;
1753
+ inset-block: 0;
1754
+ inset-inline-end: 0;
1755
+ width: 0.75rem;
1756
+ box-sizing: border-box;
1757
+ border-inline: 0.3125rem solid transparent;
1758
+ background-color: rgb(from var(--lol-color-gold-500) r g b / 0.6);
1759
+ background-clip: content-box;
1760
+ touch-action: none;
1761
+ outline: none;
1762
+ cursor: col-resize;
1763
+
1764
+ &[data-resizable-direction="left"] {
1765
+ cursor: e-resize;
1766
+ }
1767
+
1768
+ &[data-resizable-direction="right"] {
1769
+ cursor: w-resize;
1770
+ }
1771
+
1772
+ &[data-hovered],
1773
+ &[data-resizing] {
1774
+ background-color: var(--lol-color-gold-400);
1775
+ }
1776
+
1777
+ &[data-focus-visible] {
1778
+ background-color: var(--lol-color-gold-200);
1779
+ }
1780
+ }
1781
+
1782
+ /* Fixed footprint so toggling the sort direction never shifts the header. */
1783
+ ._sortIndicator_1vns6_127 {
1784
+ display: inline-block;
1785
+ vertical-align: middle;
1786
+ width: 0.5rem;
1787
+ margin-left: 0.375rem;
1788
+ opacity: 0;
1789
+ transition: opacity 0.3s ease;
1790
+
1791
+ @media (prefers-reduced-motion: reduce) {
1792
+ transition: none;
1793
+ }
1794
+
1795
+ &::after {
1796
+ content: "";
1797
+ display: block;
1798
+ width: 0;
1799
+ height: 0;
1800
+ border-style: solid;
1801
+ border-color: transparent;
1802
+ border-width: 0 0.25rem 0.375rem;
1803
+ border-bottom-color: currentColor;
1804
+ }
1805
+ }
1806
+
1807
+ ._column_1vns6_151 {
1808
+ position: relative;
1809
+ font-family: var(--lol-font-family-beaufort);
1810
+ color: var(--lol-color-gold-100);
1811
+ font-size: 0.75rem;
1812
+ font-weight: 700;
1813
+ letter-spacing: 0.075em;
1814
+ line-height: 1rem;
1815
+ text-transform: uppercase;
1816
+ white-space: nowrap;
1817
+ padding: 0.375rem 0.75rem;
1818
+ /* The client separates the header from the rows with a faint hairline
1819
+ rather than a full border. */
1820
+ border-bottom: 1px solid rgb(from var(--lol-color-grey-100) r g b / 0.25);
1821
+ outline: none;
1822
+
1823
+ /* Only sortable columns are interactive, so they are the only ones react
1824
+ aria marks as hovered or pressed. */
1825
+ &[data-allows-sorting] {
1826
+ cursor: pointer;
1827
+ user-select: none;
1828
+ transition: color 0.3s ease;
1829
+
1830
+ @media (prefers-reduced-motion: reduce) {
1831
+ transition: none;
1832
+ }
1833
+ }
1834
+
1835
+ &[data-hovered] {
1836
+ color: var(--lol-color-gold-200);
1837
+ }
1838
+
1839
+ &[data-pressed] {
1840
+ color: var(--lol-color-gold-500);
1841
+ }
1842
+
1843
+ &[data-hovered] ._sortIndicator_1vns6_127 {
1844
+ opacity: 0.5;
1845
+ }
1846
+
1847
+ &[data-sort-direction] ._sortIndicator_1vns6_127 {
1848
+ opacity: 1;
1849
+ }
1850
+
1851
+ &[data-sort-direction="descending"] ._sortIndicator_1vns6_127::after {
1852
+ border-width: 0.375rem 0.25rem 0;
1853
+ border-top-color: currentColor;
1854
+ border-bottom-color: transparent;
1855
+ }
1856
+
1857
+ &[data-focus-visible] {
1858
+ outline: 1px solid var(--lol-color-gold-400);
1859
+ outline-offset: -1px;
1860
+ }
1861
+ }
1862
+
1863
+ ._footer_1vns6_207 {
1864
+ color: var(--lol-color-gold-300);
1865
+
1866
+ & ._cell_1vns6_84 {
1867
+ border-top: 1px solid rgb(from var(--lol-color-grey-100) r g b / 0.25);
1868
+ }
1869
+ }
1870
+
1871
+ ._empty_1vns6_215 {
1872
+ padding: 1rem 0.75rem;
1873
+ text-align: center;
1874
+ }
1875
+
1876
+ ._start_1vns6_220 {
1877
+ text-align: start;
1878
+ }
1879
+
1880
+ ._center_1vns6_224 {
1881
+ text-align: center;
1882
+ }
1883
+
1884
+ ._end_1vns6_228 {
1885
+ text-align: end;
1886
+ }
1887
+ }
1657
1888
  @layer lol {
1658
1889
  ._list_nrxix_2 {
1659
1890
  margin-left: -1rem;
@@ -1772,3 +2003,176 @@
1772
2003
  }
1773
2004
  }
1774
2005
  }
2006
+ @layer lol {
2007
+ ._tree_1jyu5_2 {
2008
+ --lol-tree-indent: 1.125rem;
2009
+
2010
+ box-sizing: border-box;
2011
+ overflow: auto;
2012
+ outline: none;
2013
+
2014
+ font-family: var(--lol-font-family-spiegel);
2015
+ font-size: var(--lol-font-size-sm);
2016
+ line-height: var(--lol-line-height-sm);
2017
+ letter-spacing: var(--lol-letter-spacing-sm);
2018
+ font-weight: var(--lol-font-weight-sm);
2019
+
2020
+ &[data-focus-visible] {
2021
+ outline: 1px solid var(--lol-color-gold-400);
2022
+ outline-offset: 0.25rem;
2023
+ }
2024
+ }
2025
+
2026
+ ._item_1jyu5_21 {
2027
+ display: flex;
2028
+ align-items: center;
2029
+ gap: 0.375rem;
2030
+ /* Rows are flattened siblings, so the nesting comes from the level react
2031
+ aria exposes on each row rather than from the DOM. */
2032
+ padding: 0.375rem 0.75rem 0.375rem
2033
+ calc(0.5rem + (var(--tree-item-level) - 1) * var(--lol-tree-indent));
2034
+ color: var(--lol-color-grey-100);
2035
+ outline: none;
2036
+ cursor: default;
2037
+ transition: color 0.3s ease;
2038
+
2039
+ /* Every decoration is a background layer so the row keeps a single box:
2040
+ the chevron and the checkbox already own the inline start. */
2041
+ --lol-tree-item-spine: none;
2042
+ --lol-tree-item-hover: none;
2043
+ --lol-tree-item-highlight: none;
2044
+
2045
+ background-image:
2046
+ var(--lol-tree-item-spine), var(--lol-tree-item-hover),
2047
+ var(--lol-tree-item-highlight);
2048
+ background-repeat: no-repeat;
2049
+
2050
+ @media (prefers-reduced-motion: reduce) {
2051
+ transition: none;
2052
+ }
2053
+
2054
+ /* Branches read as the client's collapsible section headers, leaves as
2055
+ list content. */
2056
+ &[data-has-child-items] {
2057
+ font-family: var(--lol-font-family-beaufort);
2058
+ font-size: 0.75rem;
2059
+ font-weight: 700;
2060
+ letter-spacing: 0.075em;
2061
+ line-height: 1rem;
2062
+ text-transform: uppercase;
2063
+ color: var(--lol-color-gold-300);
2064
+ }
2065
+
2066
+ &[data-selection-mode]:not([data-disabled]),
2067
+ &[data-href] {
2068
+ cursor: pointer;
2069
+ }
2070
+
2071
+ &[data-hovered] {
2072
+ color: var(--lol-color-gold-100);
2073
+ --lol-tree-item-hover: linear-gradient(
2074
+ 90deg,
2075
+ rgb(from var(--lol-color-gold-100) r g b / 0.08),
2076
+ transparent
2077
+ );
2078
+ }
2079
+
2080
+ &[data-selected] {
2081
+ color: var(--lol-color-gold-100);
2082
+ /* Gold spine plus hextech wash on the selected row, matching the
2083
+ client's "current" row. */
2084
+ --lol-tree-item-spine: linear-gradient(
2085
+ 90deg,
2086
+ var(--lol-color-gold-500) 0 0.25rem,
2087
+ transparent 0.25rem
2088
+ );
2089
+ --lol-tree-item-highlight: linear-gradient(
2090
+ 90deg,
2091
+ rgb(from var(--lol-color-blue-400) r g b / 0.55),
2092
+ rgb(from var(--lol-color-blue-300) r g b / 0.1)
2093
+ );
2094
+ }
2095
+
2096
+ &[data-disabled] {
2097
+ color: var(--lol-color-grey-150);
2098
+ cursor: default;
2099
+ }
2100
+
2101
+ &[data-focus-visible] {
2102
+ outline: 1px solid var(--lol-color-gold-400);
2103
+ outline-offset: -1px;
2104
+ }
2105
+ }
2106
+
2107
+ /* Top-level items are separated by the client's faint gold hairline. The
2108
+ sibling combinator keeps it off the first row, whichever level follows. */
2109
+ ._item_1jyu5_21 + ._item_1jyu5_21[data-level="1"] {
2110
+ border-top: 1px solid var(--lol-color-gold-600);
2111
+ }
2112
+
2113
+ ._chevron_1jyu5_108 {
2114
+ flex: none;
2115
+ width: 0.5rem;
2116
+ height: 0.75rem;
2117
+ padding: 0;
2118
+ border: none;
2119
+ outline: none;
2120
+ cursor: pointer;
2121
+
2122
+ --lol-tree-chevron: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAoCAYAAADg+OpoAAABF0lEQVR42r3WMY7CQAxA0R8r2oobUMBB9hTLPegguQJUNHuJLbZb7RU4BvQIiZaKJiNFo0wy8dhYiiJNLD+N5RmlOv9sGYgtsAQajKJOICeg6p69BSQjCMAOOFpDMYIlJhOIGSbAqitSTeQWYQJcgQ3wzMhXY6F1f8CXJ9YfBlcsHm83TAbWXDBJrJtjMvLNFJOJAmaYZBQwwSRzaIoxmXEUijCZecDVmCiuLRVWKy/jgP0CHxmYakchHpm7ArhpoU/gH1hk5DbAUd6BaFqnQuZCamQOVITkQsVIDmSCTEFmyBhkiqQgc2QIckFiyA3pQ65IgNbeSIAuwLcn0m9dCxy8kHgYUlgxMjTeMWaCpP4Z2u59t0IAXn+VXtMKZ5riAAAAAElFTkSuQmCC");
2123
+ background: var(--lol-tree-chevron) no-repeat center / contain;
2124
+ transition: rotate 0.15s ease;
2125
+
2126
+ @media (prefers-reduced-motion: reduce) {
2127
+ transition: none;
2128
+ }
2129
+
2130
+ &[data-focus-visible] {
2131
+ outline: 1px solid var(--lol-color-gold-400);
2132
+ outline-offset: 0.125rem;
2133
+ }
2134
+ }
2135
+
2136
+ ._chevronSpacer_1jyu5_131 {
2137
+ flex: none;
2138
+ width: 0.5rem;
2139
+ }
2140
+
2141
+ ._item_1jyu5_21[data-expanded] ._chevron_1jyu5_108 {
2142
+ rotate: 90deg;
2143
+ }
2144
+
2145
+ ._item_1jyu5_21[data-hovered] ._chevron_1jyu5_108,
2146
+ ._chevron_1jyu5_108[data-hovered],
2147
+ ._chevron_1jyu5_108[data-focus-visible] {
2148
+ --lol-tree-chevron: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAoCAYAAADg+OpoAAABGElEQVR42r3WO47CMBCA4T+jaCtuQLEcZE+x3IOOxxVIRcM1tlvtPTgBNFQIQUu1TSxFVpw44xlGiiI5o/nk0dhK9bie6IkVMAe2GEWdQA5A1T4bC0gGEIA10FhDMYIlJiOIGSbAZ1ukGsktwgS4AEvglZGvxkLrfoFvT6w7DK5YPN5umPSsuWCSWDfHZOCbKSYjBcwwyShggknm0BRjMuEoFGEy8YCrMVFcWyqsVl7GAfsBPjIw1Y5CPDN3BXDTQl/AHzDLyN0CjbwD0bROhUyF1MgUqAjJhYqRHMgEGYPMkCHIFElB5kgf5ILEkBvShVyRAC28kQCdgaMn0m3dDth7IfEwpLBipG+8Y8wESf0z7Nr33QoB+AdPzF+bRdCP8QAAAABJRU5ErkJggg==");
2149
+ }
2150
+
2151
+ ._item_1jyu5_21[data-disabled] ._chevron_1jyu5_108 {
2152
+ cursor: default;
2153
+ filter: grayscale(100%);
2154
+ }
2155
+
2156
+ ._label_1jyu5_151 {
2157
+ flex: 1;
2158
+ min-width: 0;
2159
+ overflow: hidden;
2160
+ white-space: nowrap;
2161
+ text-overflow: ellipsis;
2162
+ }
2163
+
2164
+ ._empty_1jyu5_159 {
2165
+ padding: 1rem 0.75rem;
2166
+ text-align: center;
2167
+ }
2168
+
2169
+ ._loadMore_1jyu5_164 {
2170
+ display: flex;
2171
+ justify-content: center;
2172
+ padding: 0.5rem;
2173
+ }
2174
+
2175
+ ._spinner_1jyu5_170 {
2176
+ width: 1.5rem;
2177
+ }
2178
+ }