@lolmath/ui 9.0.0 → 9.1.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/dist/index.css CHANGED
@@ -211,22 +211,22 @@
211
211
  }
212
212
  }
213
213
  @layer lol {
214
- ._round_16wcl_2 {
214
+ ._round_1k1xc_2 {
215
215
  border-radius: 9999px;
216
216
  }
217
217
 
218
- ._round_16wcl_2,
219
- ._square_16wcl_7 {
218
+ ._round_1k1xc_2,
219
+ ._square_1k1xc_7 {
220
220
  aspect-ratio: 1 / 1;
221
221
  padding: 0px;
222
222
  font-weight: 900;
223
223
  }
224
224
 
225
- ._button_16wcl_13 {
225
+ ._button_1k1xc_13 {
226
226
  border-radius: 0px;
227
227
  border: 2px solid transparent;
228
228
 
229
- &._thin_16wcl_17 {
229
+ &._thin_1k1xc_17 {
230
230
  border-width: 1px;
231
231
  }
232
232
 
@@ -257,17 +257,17 @@
257
257
  outline: none;
258
258
  }
259
259
 
260
- &._small_16wcl_48 {
260
+ &._small_1k1xc_48 {
261
261
  font-size: var(--lol-font-size-sm);
262
262
  min-height: var(--lol-form-height-small);
263
263
  }
264
264
 
265
- &._medium_16wcl_53 {
265
+ &._medium_1k1xc_53 {
266
266
  font-size: var(--lol-font-size-base);
267
267
  min-height: var(--lol-form-height-medium);
268
268
  }
269
269
 
270
- &._large_16wcl_58 {
270
+ &._large_1k1xc_58 {
271
271
  font-size: var(--lol-font-size-base);
272
272
  min-height: var(--lol-form-height-large);
273
273
  }
@@ -293,37 +293,79 @@
293
293
  }
294
294
  }
295
295
 
296
- ._primary_16wcl_84,
297
- ._secondary_16wcl_85,
298
- ._hextech_16wcl_86,
299
- ._dimmed_16wcl_87 {
300
- &:not(._square_16wcl_7, ._round_16wcl_2) {
301
- &._small_16wcl_48 {
296
+ /*
297
+ * ToggleButtonGroup. Lives here rather than in its own module because it has
298
+ * to reach into the button's border model: adjacent buttons are pulled
299
+ * together by exactly one border width so their two gradient borders read as
300
+ * a single seam instead of a double-thick one.
301
+ */
302
+ ._toggleButtonGroup_1k1xc_90 {
303
+ display: inline-flex;
304
+
305
+ & > ._button_1k1xc_13 + ._button_1k1xc_13 {
306
+ margin-left: -2px;
307
+ }
308
+
309
+ /* Must follow the rule above: thin buttons only need a 1px overlap. */
310
+ & > ._thin_1k1xc_17 + ._thin_1k1xc_17 {
311
+ margin-left: -1px;
312
+ }
313
+
314
+ /* Whichever button is highlighted owns the seams next to it. */
315
+ & > ._button_1k1xc_13:hover,
316
+ & > ._button_1k1xc_13:focus-visible,
317
+ & > ._button_1k1xc_13[data-selected] {
318
+ position: relative;
319
+ z-index: 1;
320
+ }
321
+
322
+ &[data-orientation="vertical"] {
323
+ flex-direction: column;
324
+ /* Equal widths keep the collapsed seams lined up. */
325
+ align-items: stretch;
326
+
327
+ & > ._button_1k1xc_13 + ._button_1k1xc_13 {
328
+ margin-left: 0;
329
+ margin-top: -2px;
330
+ }
331
+
332
+ & > ._thin_1k1xc_17 + ._thin_1k1xc_17 {
333
+ margin-top: -1px;
334
+ }
335
+ }
336
+ }
337
+
338
+ ._primary_1k1xc_126,
339
+ ._secondary_1k1xc_127,
340
+ ._hextech_1k1xc_128,
341
+ ._dimmed_1k1xc_129 {
342
+ &:not(._square_1k1xc_7, ._round_1k1xc_2) {
343
+ &._small_1k1xc_48 {
302
344
  padding: 0 0.5rem;
303
345
  }
304
346
 
305
- &._medium_16wcl_53 {
347
+ &._medium_1k1xc_53 {
306
348
  padding: 0 1rem;
307
349
  }
308
350
 
309
- &._large_16wcl_58 {
351
+ &._large_1k1xc_58 {
310
352
  padding: 0 1rem;
311
353
  }
312
354
  }
313
355
  }
314
356
 
315
- ._text_16wcl_103 {
316
- &._round_16wcl_2,
317
- &._square_16wcl_7 {
357
+ ._text_1k1xc_145 {
358
+ &._round_1k1xc_2,
359
+ &._square_1k1xc_7 {
318
360
  &:hover {
319
361
  --lol-button-background-gradient: var(--lol-gradient-grey-300);
320
362
  --lol-button-border-gradient: var(--lol-gradient-transparent);
321
363
  }
322
364
  }
323
365
 
324
- &._round_16wcl_2,
325
- &._square_16wcl_7,
326
- &._normal_16wcl_114 {
366
+ &._round_1k1xc_2,
367
+ &._square_1k1xc_7,
368
+ &._normal_1k1xc_156 {
327
369
  position: relative;
328
370
 
329
371
  &::after {
@@ -341,7 +383,7 @@
341
383
  }
342
384
  }
343
385
 
344
- ._hextech_16wcl_86 {
386
+ ._hextech_1k1xc_128 {
345
387
  color: var(--lol-color-blue-100);
346
388
  --lol-button-border-gradient: var(--lol-gradient-hextech);
347
389
  --lol-button-background-gradient: var(--lol-gradient-grey-300);
@@ -366,17 +408,17 @@
366
408
  }
367
409
  }
368
410
 
369
- ._dimmed_16wcl_87 {
411
+ ._dimmed_1k1xc_129 {
370
412
  --lol-button-background-gradient: var(--lol-gradient-hextech-black);
371
413
  --lol-button-border-gradient: var(--lol-gradient-grey-300);
372
414
 
373
- &._selected_16wcl_161,
415
+ &._selected_1k1xc_203,
374
416
  &:focus-visible {
375
417
  --lol-button-border-gradient: var(--lol-gradient-gold);
376
418
  }
377
419
  }
378
420
 
379
- ._primary_16wcl_84 {
421
+ ._primary_1k1xc_126 {
380
422
  --lol-button-border-gradient: var(--lol-gradient-gold);
381
423
  --lol-button-background-gradient: linear-gradient(
382
424
  to top,
@@ -404,31 +446,31 @@
404
446
  }
405
447
  }
406
448
 
407
- ._secondary_16wcl_85 {
449
+ ._secondary_1k1xc_127 {
408
450
  --lol-button-border-gradient: var(--lol-gradient-gold);
409
451
  --lol-button-background-gradient: var(--lol-gradient-grey-300);
410
452
  }
411
453
 
412
- ._primary_16wcl_84:hover,
413
- ._secondary_16wcl_85:hover,
414
- ._dimmed_16wcl_87:hover {
454
+ ._primary_1k1xc_126:hover,
455
+ ._secondary_1k1xc_127:hover,
456
+ ._dimmed_1k1xc_129:hover {
415
457
  --lol-button-border-gradient: var(--lol-gradient-gold-hover);
416
458
  }
417
459
 
418
- ._primary_16wcl_84:active,
419
- ._secondary_16wcl_85:active,
420
- ._dimmed_16wcl_87:active {
460
+ ._primary_1k1xc_126:active,
461
+ ._secondary_1k1xc_127:active,
462
+ ._dimmed_1k1xc_129:active {
421
463
  --lol-button-border-gradient: var(--lol-gradient-gold-press);
422
464
  }
423
465
 
424
- ._primary_16wcl_84:disabled,
425
- ._secondary_16wcl_85:disabled,
426
- ._dimmed_16wcl_87:disabled {
466
+ ._primary_1k1xc_126:disabled,
467
+ ._secondary_1k1xc_127:disabled,
468
+ ._dimmed_1k1xc_129:disabled {
427
469
  --lol-button-border-gradient: var(--lol-gradient-disabled);
428
470
  }
429
471
 
430
- ._primary_16wcl_84:focus-visible,
431
- ._secondary_16wcl_85:focus-visible {
472
+ ._primary_1k1xc_126:focus-visible,
473
+ ._secondary_1k1xc_127:focus-visible {
432
474
  outline-color: var(--lol-color-gold-400);
433
475
  }
434
476
  }
@@ -2003,3 +2045,218 @@
2003
2045
  }
2004
2046
  }
2005
2047
  }
2048
+ @layer lol {
2049
+ ._toolbar_pv0cj_2 {
2050
+ display: flex;
2051
+ align-items: center;
2052
+ gap: 0.5rem;
2053
+
2054
+ /*
2055
+ * Controls keep their own width in a vertical toolbar; stretching them
2056
+ * blows up anything sized by aspect ratio, like square/round buttons.
2057
+ */
2058
+ &[data-orientation="vertical"] {
2059
+ flex-direction: column;
2060
+ align-items: flex-start;
2061
+ }
2062
+ }
2063
+
2064
+ ._separator_pv0cj_17 {
2065
+ border: none;
2066
+ margin: 0;
2067
+ flex: none;
2068
+ align-self: stretch;
2069
+ height: 1px;
2070
+ background-image: linear-gradient(
2071
+ to right,
2072
+ rgba(0, 0, 0, 0),
2073
+ var(--lol-color-gold-600),
2074
+ rgba(0, 0, 0, 0)
2075
+ );
2076
+
2077
+ /* A vertical separator renders as a <div>, so it has no implicit size. */
2078
+ &[aria-orientation="vertical"] {
2079
+ height: auto;
2080
+ width: 1px;
2081
+ background-image: linear-gradient(
2082
+ to bottom,
2083
+ rgba(0, 0, 0, 0),
2084
+ var(--lol-color-gold-600),
2085
+ rgba(0, 0, 0, 0)
2086
+ );
2087
+ }
2088
+ }
2089
+ }
2090
+ @layer lol {
2091
+ ._tree_1jyu5_2 {
2092
+ --lol-tree-indent: 1.125rem;
2093
+
2094
+ box-sizing: border-box;
2095
+ overflow: auto;
2096
+ outline: none;
2097
+
2098
+ font-family: var(--lol-font-family-spiegel);
2099
+ font-size: var(--lol-font-size-sm);
2100
+ line-height: var(--lol-line-height-sm);
2101
+ letter-spacing: var(--lol-letter-spacing-sm);
2102
+ font-weight: var(--lol-font-weight-sm);
2103
+
2104
+ &[data-focus-visible] {
2105
+ outline: 1px solid var(--lol-color-gold-400);
2106
+ outline-offset: 0.25rem;
2107
+ }
2108
+ }
2109
+
2110
+ ._item_1jyu5_21 {
2111
+ display: flex;
2112
+ align-items: center;
2113
+ gap: 0.375rem;
2114
+ /* Rows are flattened siblings, so the nesting comes from the level react
2115
+ aria exposes on each row rather than from the DOM. */
2116
+ padding: 0.375rem 0.75rem 0.375rem
2117
+ calc(0.5rem + (var(--tree-item-level) - 1) * var(--lol-tree-indent));
2118
+ color: var(--lol-color-grey-100);
2119
+ outline: none;
2120
+ cursor: default;
2121
+ transition: color 0.3s ease;
2122
+
2123
+ /* Every decoration is a background layer so the row keeps a single box:
2124
+ the chevron and the checkbox already own the inline start. */
2125
+ --lol-tree-item-spine: none;
2126
+ --lol-tree-item-hover: none;
2127
+ --lol-tree-item-highlight: none;
2128
+
2129
+ background-image:
2130
+ var(--lol-tree-item-spine), var(--lol-tree-item-hover),
2131
+ var(--lol-tree-item-highlight);
2132
+ background-repeat: no-repeat;
2133
+
2134
+ @media (prefers-reduced-motion: reduce) {
2135
+ transition: none;
2136
+ }
2137
+
2138
+ /* Branches read as the client's collapsible section headers, leaves as
2139
+ list content. */
2140
+ &[data-has-child-items] {
2141
+ font-family: var(--lol-font-family-beaufort);
2142
+ font-size: 0.75rem;
2143
+ font-weight: 700;
2144
+ letter-spacing: 0.075em;
2145
+ line-height: 1rem;
2146
+ text-transform: uppercase;
2147
+ color: var(--lol-color-gold-300);
2148
+ }
2149
+
2150
+ &[data-selection-mode]:not([data-disabled]),
2151
+ &[data-href] {
2152
+ cursor: pointer;
2153
+ }
2154
+
2155
+ &[data-hovered] {
2156
+ color: var(--lol-color-gold-100);
2157
+ --lol-tree-item-hover: linear-gradient(
2158
+ 90deg,
2159
+ rgb(from var(--lol-color-gold-100) r g b / 0.08),
2160
+ transparent
2161
+ );
2162
+ }
2163
+
2164
+ &[data-selected] {
2165
+ color: var(--lol-color-gold-100);
2166
+ /* Gold spine plus hextech wash on the selected row, matching the
2167
+ client's "current" row. */
2168
+ --lol-tree-item-spine: linear-gradient(
2169
+ 90deg,
2170
+ var(--lol-color-gold-500) 0 0.25rem,
2171
+ transparent 0.25rem
2172
+ );
2173
+ --lol-tree-item-highlight: linear-gradient(
2174
+ 90deg,
2175
+ rgb(from var(--lol-color-blue-400) r g b / 0.55),
2176
+ rgb(from var(--lol-color-blue-300) r g b / 0.1)
2177
+ );
2178
+ }
2179
+
2180
+ &[data-disabled] {
2181
+ color: var(--lol-color-grey-150);
2182
+ cursor: default;
2183
+ }
2184
+
2185
+ &[data-focus-visible] {
2186
+ outline: 1px solid var(--lol-color-gold-400);
2187
+ outline-offset: -1px;
2188
+ }
2189
+ }
2190
+
2191
+ /* Top-level items are separated by the client's faint gold hairline. The
2192
+ sibling combinator keeps it off the first row, whichever level follows. */
2193
+ ._item_1jyu5_21 + ._item_1jyu5_21[data-level="1"] {
2194
+ border-top: 1px solid var(--lol-color-gold-600);
2195
+ }
2196
+
2197
+ ._chevron_1jyu5_108 {
2198
+ flex: none;
2199
+ width: 0.5rem;
2200
+ height: 0.75rem;
2201
+ padding: 0;
2202
+ border: none;
2203
+ outline: none;
2204
+ cursor: pointer;
2205
+
2206
+ --lol-tree-chevron: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAoCAYAAADg+OpoAAABF0lEQVR42r3WMY7CQAxA0R8r2oobUMBB9hTLPegguQJUNHuJLbZb7RU4BvQIiZaKJiNFo0wy8dhYiiJNLD+N5RmlOv9sGYgtsAQajKJOICeg6p69BSQjCMAOOFpDMYIlJhOIGSbAqitSTeQWYQJcgQ3wzMhXY6F1f8CXJ9YfBlcsHm83TAbWXDBJrJtjMvLNFJOJAmaYZBQwwSRzaIoxmXEUijCZecDVmCiuLRVWKy/jgP0CHxmYakchHpm7ArhpoU/gH1hk5DbAUd6BaFqnQuZCamQOVITkQsVIDmSCTEFmyBhkiqQgc2QIckFiyA3pQ65IgNbeSIAuwLcn0m9dCxy8kHgYUlgxMjTeMWaCpP4Z2u59t0IAXn+VXtMKZ5riAAAAAElFTkSuQmCC");
2207
+ background: var(--lol-tree-chevron) no-repeat center / contain;
2208
+ transition: rotate 0.15s ease;
2209
+
2210
+ @media (prefers-reduced-motion: reduce) {
2211
+ transition: none;
2212
+ }
2213
+
2214
+ &[data-focus-visible] {
2215
+ outline: 1px solid var(--lol-color-gold-400);
2216
+ outline-offset: 0.125rem;
2217
+ }
2218
+ }
2219
+
2220
+ ._chevronSpacer_1jyu5_131 {
2221
+ flex: none;
2222
+ width: 0.5rem;
2223
+ }
2224
+
2225
+ ._item_1jyu5_21[data-expanded] ._chevron_1jyu5_108 {
2226
+ rotate: 90deg;
2227
+ }
2228
+
2229
+ ._item_1jyu5_21[data-hovered] ._chevron_1jyu5_108,
2230
+ ._chevron_1jyu5_108[data-hovered],
2231
+ ._chevron_1jyu5_108[data-focus-visible] {
2232
+ --lol-tree-chevron: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAoCAYAAADg+OpoAAABGElEQVR42r3WO47CMBCA4T+jaCtuQLEcZE+x3IOOxxVIRcM1tlvtPTgBNFQIQUu1TSxFVpw44xlGiiI5o/nk0dhK9bie6IkVMAe2GEWdQA5A1T4bC0gGEIA10FhDMYIlJiOIGSbAZ1ukGsktwgS4AEvglZGvxkLrfoFvT6w7DK5YPN5umPSsuWCSWDfHZOCbKSYjBcwwyShggknm0BRjMuEoFGEy8YCrMVFcWyqsVl7GAfsBPjIw1Y5CPDN3BXDTQl/AHzDLyN0CjbwD0bROhUyF1MgUqAjJhYqRHMgEGYPMkCHIFElB5kgf5ILEkBvShVyRAC28kQCdgaMn0m3dDth7IfEwpLBipG+8Y8wESf0z7Nr33QoB+AdPzF+bRdCP8QAAAABJRU5ErkJggg==");
2233
+ }
2234
+
2235
+ ._item_1jyu5_21[data-disabled] ._chevron_1jyu5_108 {
2236
+ cursor: default;
2237
+ filter: grayscale(100%);
2238
+ }
2239
+
2240
+ ._label_1jyu5_151 {
2241
+ flex: 1;
2242
+ min-width: 0;
2243
+ overflow: hidden;
2244
+ white-space: nowrap;
2245
+ text-overflow: ellipsis;
2246
+ }
2247
+
2248
+ ._empty_1jyu5_159 {
2249
+ padding: 1rem 0.75rem;
2250
+ text-align: center;
2251
+ }
2252
+
2253
+ ._loadMore_1jyu5_164 {
2254
+ display: flex;
2255
+ justify-content: center;
2256
+ padding: 0.5rem;
2257
+ }
2258
+
2259
+ ._spinner_1jyu5_170 {
2260
+ width: 1.5rem;
2261
+ }
2262
+ }