@lolmath/ui 9.0.0 → 9.1.1

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