@wtfalch/design 0.9.0 → 0.9.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/components/Select.js +1 -1
- package/dist/components/SizeGrid.js +6 -2
- package/dist/styles/index.css +122 -36
- package/dist/tf.css +122 -36
- package/dist/valet.css +122 -36
- package/package.json +1 -1
package/dist/valet.css
CHANGED
|
@@ -291,12 +291,9 @@
|
|
|
291
291
|
--font-sans: var(--font-sans);
|
|
292
292
|
--font-mono: var(--font-mono);
|
|
293
293
|
--text-xs: var(--text-xs);
|
|
294
|
-
--text-xs--line-height: inherit;
|
|
295
294
|
--text-sm: var(--text-sm);
|
|
296
|
-
--text-sm--line-height: inherit;
|
|
297
295
|
--text-base: var(--text-base);
|
|
298
296
|
--text-lg: var(--text-lg);
|
|
299
|
-
--text-lg--line-height: inherit;
|
|
300
297
|
--text-xl: var(--text-xl);
|
|
301
298
|
--font-weight-normal: var(--weight);
|
|
302
299
|
--tracking-normal: var(--tracking);
|
|
@@ -311,14 +308,12 @@
|
|
|
311
308
|
--spacing-5: var(--space-5);
|
|
312
309
|
--spacing-6: var(--space-6);
|
|
313
310
|
--spacing-10: var(--space-10);
|
|
314
|
-
--text-2xs--line-height: inherit;
|
|
315
311
|
--text-2xs: var(--text-2xs);
|
|
316
312
|
--text-md: var(--text-md);
|
|
317
313
|
--font-weight-strong: var(--weight-strong);
|
|
318
314
|
--radius-pill: var(--radius-pill);
|
|
319
315
|
--color-text: var(--text);
|
|
320
316
|
--color-muted: var(--muted);
|
|
321
|
-
--color-accent: var(--accent);
|
|
322
317
|
--color-border: var(--border);
|
|
323
318
|
--color-border-strong: var(--border-strong);
|
|
324
319
|
}
|
|
@@ -574,9 +569,6 @@
|
|
|
574
569
|
--tw-border-style: dashed;
|
|
575
570
|
border-style: dashed;
|
|
576
571
|
}
|
|
577
|
-
.border-accent {
|
|
578
|
-
border-color: var(--color-accent);
|
|
579
|
-
}
|
|
580
572
|
.border-border {
|
|
581
573
|
border-color: var(--color-border);
|
|
582
574
|
}
|
|
@@ -627,19 +619,15 @@
|
|
|
627
619
|
}
|
|
628
620
|
.text-2xs {
|
|
629
621
|
font-size: var(--text-2xs);
|
|
630
|
-
line-height: var(--tw-leading, var(--text-2xs--line-height));
|
|
631
622
|
}
|
|
632
623
|
.text-lg {
|
|
633
624
|
font-size: var(--text-lg);
|
|
634
|
-
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
635
625
|
}
|
|
636
626
|
.text-sm {
|
|
637
627
|
font-size: var(--text-sm);
|
|
638
|
-
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
639
628
|
}
|
|
640
629
|
.text-xs {
|
|
641
630
|
font-size: var(--text-xs);
|
|
642
|
-
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
643
631
|
}
|
|
644
632
|
.leading-\[0\] {
|
|
645
633
|
--tw-leading: 0;
|
|
@@ -694,9 +682,6 @@
|
|
|
694
682
|
--tw-numeric-spacing: tabular-nums;
|
|
695
683
|
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
696
684
|
}
|
|
697
|
-
.opacity-0 {
|
|
698
|
-
opacity: 0%;
|
|
699
|
-
}
|
|
700
685
|
.opacity-60 {
|
|
701
686
|
opacity: 60%;
|
|
702
687
|
}
|
|
@@ -739,9 +724,6 @@
|
|
|
739
724
|
.surface-panel {
|
|
740
725
|
background: var(--panel);
|
|
741
726
|
}
|
|
742
|
-
.surface-panel-2 {
|
|
743
|
-
background: var(--panel-2);
|
|
744
|
-
}
|
|
745
727
|
.disabled\:cursor-default:disabled {
|
|
746
728
|
cursor: default;
|
|
747
729
|
}
|
|
@@ -981,7 +963,19 @@
|
|
|
981
963
|
}
|
|
982
964
|
}
|
|
983
965
|
|
|
984
|
-
/* ---- ./
|
|
966
|
+
/* ---- ./_system-light.css ---- */
|
|
967
|
+
/* The `system` theme's light half.
|
|
968
|
+
*
|
|
969
|
+
* Its own file, and outside the components layer, because it is a *theme*
|
|
970
|
+
* rather than a component rule. `tokens.css` states the dark base on `:root`
|
|
971
|
+
* and is unlayered; the moment this sat inside `@layer components` it lost to
|
|
972
|
+
* that, and every `system` specimen rendered dark on a light-mode machine.
|
|
973
|
+
* Unlayered beats layered whatever the selector says, which is exactly the
|
|
974
|
+
* trap this repository keeps finding in different costumes.
|
|
975
|
+
*
|
|
976
|
+
* The underscore marks it the same way `_tailwind.built.css` is marked:
|
|
977
|
+
* `copy-css.mjs` passes both through without wrapping them.
|
|
978
|
+
*/
|
|
985
979
|
/* Light, only under the `system` theme. This used to override `:root`
|
|
986
980
|
unconditionally, so choosing a dark theme on a light-mode laptop got
|
|
987
981
|
silently repainted. Every other theme states its own palette. */
|
|
@@ -1010,6 +1004,8 @@
|
|
|
1010
1004
|
}
|
|
1011
1005
|
}
|
|
1012
1006
|
|
|
1007
|
+
/* ---- ./base.css ---- */
|
|
1008
|
+
@layer components {
|
|
1013
1009
|
/* Derived from the two surfaces every theme already defines, so a theme gets a
|
|
1014
1010
|
control colour without knowing this exists. */
|
|
1015
1011
|
/* Pseudo-elements too. `*` does not match them, and `box-sizing` is not
|
|
@@ -1870,8 +1866,10 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
1870
1866
|
color: var(--muted);
|
|
1871
1867
|
opacity: 1;
|
|
1872
1868
|
}
|
|
1869
|
+
}
|
|
1873
1870
|
|
|
1874
1871
|
/* ---- ./select.css ---- */
|
|
1872
|
+
@layer components {
|
|
1875
1873
|
/* How big a control is, asked for rather than inherited.
|
|
1876
1874
|
Four sizes existed and every one of them came from a descendant selector:
|
|
1877
1875
|
`.set-row button` was 11px in 3px of padding, `.approval-actions button` was
|
|
@@ -1966,16 +1964,19 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
1966
1964
|
/* State is read off React Aria's attributes: `data-open` on the root,
|
|
1967
1965
|
`data-focused` / `data-selected` / `data-disabled` on an item, where
|
|
1968
1966
|
`.open`, `[data-active]`, `.on` and `.off` used to be. */
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1967
|
+
/* The list keeps two things the utilities on `Select` cannot say.
|
|
1968
|
+
*
|
|
1969
|
+
* `scroll-padding-block`: the same room while the list is scrolled as it has
|
|
1970
|
+
* at rest. Padding at the top of a scroll container scrolls away with the
|
|
1971
|
+
* content, so the row `scrollIntoView({block: 'nearest'})` brings up ended
|
|
1972
|
+
* flush against the border and read as clipped rather than as one of a set --
|
|
1973
|
+
* and this list opens scrolled to whatever is chosen, so that was the
|
|
1974
|
+
* ordinary state.
|
|
1975
|
+
*
|
|
1976
|
+
* `box-shadow`: `--shadow-2` is a token, and a utility would have to inline
|
|
1977
|
+
* the value, which is the one thing the vocabulary exists to stop. */
|
|
1978
|
+
.sel-list {
|
|
1974
1979
|
scroll-padding-block: var(--space-1);
|
|
1975
|
-
list-style: none;
|
|
1976
|
-
border: var(--border-width) solid var(--border-strong);
|
|
1977
|
-
border-radius: var(--radius-md);
|
|
1978
|
-
background: var(--panel);
|
|
1979
1980
|
box-shadow: var(--shadow-2);
|
|
1980
1981
|
}
|
|
1981
1982
|
|
|
@@ -1990,6 +1991,19 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
1990
1991
|
|
|
1991
1992
|
/* The tick marks the chosen row. Colour alone would not: a list where the only
|
|
1992
1993
|
difference is a hue is a list you cannot read past. */
|
|
1994
|
+
/* The tick's resting state lives here, beside the state that overrides it.
|
|
1995
|
+
*
|
|
1996
|
+
* It was `opacity-0` on the element and `opacity: 1` here, which worked only
|
|
1997
|
+
* while this sheet was unlayered. A utility is in `@layer utilities` and
|
|
1998
|
+
* beats `@layer components` whatever the selector, so the moment the sheets
|
|
1999
|
+
* moved into a layer the tick stopped appearing on the selected row -- the
|
|
2000
|
+
* resting state won permanently.
|
|
2001
|
+
*
|
|
2002
|
+
* The rule generalises: a utility for a resting state whose active state is a
|
|
2003
|
+
* relationship between elements will always beat that active state. The pair
|
|
2004
|
+
* has to sit in the same layer. */
|
|
2005
|
+
.sel-tick { opacity: 0; }
|
|
2006
|
+
|
|
1993
2007
|
.sel-item[data-selected] .sel-tick { opacity: 1; }
|
|
1994
2008
|
|
|
1995
2009
|
/* The icon on a speaker's row in the open list -- `Select`'s `aside`. Last in
|
|
@@ -2024,8 +2038,10 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
2024
2038
|
.field > input,
|
|
2025
2039
|
.field > textarea,
|
|
2026
2040
|
.field > .sel { width: 100%; }
|
|
2041
|
+
}
|
|
2027
2042
|
|
|
2028
2043
|
/* ---- ./dangerzone.css ---- */
|
|
2044
|
+
@layer components {
|
|
2029
2045
|
/* Destructive, and legible as such standing still. */
|
|
2030
2046
|
.btn.danger {
|
|
2031
2047
|
color: var(--bad);
|
|
@@ -2137,8 +2153,10 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
2137
2153
|
controls in the same column at the same indent that do not line up read as
|
|
2138
2154
|
an accident rather than as a pair. */
|
|
2139
2155
|
.field-row > button { min-width: 9ch; }
|
|
2156
|
+
}
|
|
2140
2157
|
|
|
2141
2158
|
/* ---- ./callout.css ---- */
|
|
2159
|
+
@layer components {
|
|
2142
2160
|
/* One shape for everything that tells you something.
|
|
2143
2161
|
`.banner` and `.callout` were the same box drawn twice: a bordered, rounded,
|
|
2144
2162
|
12px panel with a tint. They differed in padding by a pixel in each direction
|
|
@@ -2277,8 +2295,10 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
2277
2295
|
}
|
|
2278
2296
|
|
|
2279
2297
|
.callout button { flex: none; }
|
|
2298
|
+
}
|
|
2280
2299
|
|
|
2281
2300
|
/* ---- ./card.css ---- */
|
|
2301
|
+
@layer components {
|
|
2282
2302
|
/* `.card` is public API, not this component's private styling.
|
|
2283
2303
|
*
|
|
2284
2304
|
* Consumers apply it to their own markup -- the gallery's skeleton specimen
|
|
@@ -2420,8 +2440,10 @@ input:active, textarea:active, select:active { transform: none; }
|
|
|
2420
2440
|
}
|
|
2421
2441
|
|
|
2422
2442
|
.card[aria-pressed='true']:hover { border-color: var(--accent); }
|
|
2443
|
+
}
|
|
2423
2444
|
|
|
2424
2445
|
/* ---- ./toggle.css ---- */
|
|
2446
|
+
@layer components {
|
|
2425
2447
|
.card-action .switch-row { padding: 0; gap: var(--space-2); }
|
|
2426
2448
|
|
|
2427
2449
|
.card-action .switch-row .switch-body { flex: none; }
|
|
@@ -2652,8 +2674,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
2652
2674
|
@media (prefers-reduced-motion: reduce) {
|
|
2653
2675
|
.toggle-sweep::before { animation: none; background: color-mix(in oklab, var(--accent) 45%, transparent); }
|
|
2654
2676
|
}
|
|
2677
|
+
}
|
|
2655
2678
|
|
|
2656
2679
|
/* ---- ./skeleton.css ---- */
|
|
2680
|
+
@layer components {
|
|
2657
2681
|
.muted { color: var(--muted); }
|
|
2658
2682
|
|
|
2659
2683
|
.pulse-block {
|
|
@@ -2708,8 +2732,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
2708
2732
|
/* Still distinguishable from a real block of colour, and still still. */
|
|
2709
2733
|
.skel-pulse { animation: none; opacity: 0.8; }
|
|
2710
2734
|
}
|
|
2735
|
+
}
|
|
2711
2736
|
|
|
2712
2737
|
/* ---- ./rows.css ---- */
|
|
2738
|
+
@layer components {
|
|
2713
2739
|
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2714
2740
|
|
|
2715
2741
|
/* A name and the pills that qualify it, on one line, where the name is the only
|
|
@@ -2970,8 +2996,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
2970
2996
|
.row-hit:hover .truncate { color: var(--accent); }
|
|
2971
2997
|
|
|
2972
2998
|
.row-hit:focus-visible { outline: none; box-shadow: var(--focus-ring); }
|
|
2999
|
+
}
|
|
2973
3000
|
|
|
2974
3001
|
/* ---- ./progress.css ---- */
|
|
3002
|
+
@layer components {
|
|
2975
3003
|
/* progress ----------------------------------------------------------- */
|
|
2976
3004
|
|
|
2977
3005
|
/* The bar itself: a track with a child it fills, an animation and a
|
|
@@ -3013,8 +3041,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
3013
3041
|
/* Still distinguishable from empty, and from full. */
|
|
3014
3042
|
.bar-indeterminate > i { animation: none; width: 100%; opacity: 0.35; }
|
|
3015
3043
|
}
|
|
3044
|
+
}
|
|
3016
3045
|
|
|
3017
3046
|
/* ---- ./tabs.css ---- */
|
|
3047
|
+
@layer components {
|
|
3018
3048
|
/* ---------------------------------------------------------------- tabs */
|
|
3019
3049
|
.tabs { position: relative; display: flex; gap: var(--space-1); }
|
|
3020
3050
|
|
|
@@ -3115,8 +3145,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
3115
3145
|
}
|
|
3116
3146
|
|
|
3117
3147
|
.tabs-vertical .tab:active:not(:disabled) { border-color: transparent; }
|
|
3148
|
+
}
|
|
3118
3149
|
|
|
3119
3150
|
/* ---- ./toast.css ---- */
|
|
3151
|
+
@layer components {
|
|
3120
3152
|
/* ---------------------------------------------------------------- toasts */
|
|
3121
3153
|
.toasts {
|
|
3122
3154
|
position: fixed;
|
|
@@ -3214,8 +3246,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
3214
3246
|
outline: 2px solid var(--accent);
|
|
3215
3247
|
outline-offset: 2px;
|
|
3216
3248
|
}
|
|
3249
|
+
}
|
|
3217
3250
|
|
|
3218
3251
|
/* ---- ./modal.css ---- */
|
|
3252
|
+
@layer components {
|
|
3219
3253
|
/* modal --------------------------------------------------------------- */
|
|
3220
3254
|
|
|
3221
3255
|
/* `hidden` needs saying out loud here. The browser's own `[hidden]` rule is a
|
|
@@ -3446,8 +3480,10 @@ input[type='radio']:active:not(:disabled) {
|
|
|
3446
3480
|
.modal.sheet[data-entering],
|
|
3447
3481
|
.modal.sheet[data-exiting] { animation: none; }
|
|
3448
3482
|
}
|
|
3483
|
+
}
|
|
3449
3484
|
|
|
3450
3485
|
/* ---- ./slider.css ---- */
|
|
3486
|
+
@layer components {
|
|
3451
3487
|
/* slider ----------------------------------------------------------------- */
|
|
3452
3488
|
/* A number from a range -- `Slider.tsx` says when one is the right control.
|
|
3453
3489
|
The row is laid out like a switch row: words on the left, the control on the
|
|
@@ -3669,8 +3705,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
3669
3705
|
the scale, and the two line up; an explicit `size-*` still wins. */
|
|
3670
3706
|
:where(.set-row) button,
|
|
3671
3707
|
:where(.set-row) .slider-box { font-size: var(--text-xs); }
|
|
3708
|
+
}
|
|
3672
3709
|
|
|
3673
3710
|
/* ---- ./checkbox.css ---- */
|
|
3711
|
+
@layer components {
|
|
3674
3712
|
/* A row you choose. There is no checkbox in it.
|
|
3675
3713
|
Every one of the fourteen in this app sits beside a name and a line of
|
|
3676
3714
|
explanation, so the row was always the thing being designed and the 17px
|
|
@@ -3840,8 +3878,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
3840
3878
|
.choice[data-disabled] .choice-why { opacity: 0.5; }
|
|
3841
3879
|
|
|
3842
3880
|
.choice[data-disabled]::after { opacity: 0.4; }
|
|
3881
|
+
}
|
|
3843
3882
|
|
|
3844
3883
|
/* ---- ./table.css ---- */
|
|
3884
|
+
@layer components {
|
|
3845
3885
|
/* A second line under a row's name, inside the `<th scope="row">` that makes it
|
|
3846
3886
|
one. The cell is bold because it is a heading; what hangs under it is not,
|
|
3847
3887
|
and inherited the weight -- so a pinned version read as loud as the thing it
|
|
@@ -3889,27 +3929,48 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
3889
3929
|
.data-table .num { text-align: right; font-variant-numeric: tabular-nums; font-family: var(--font-mono); }
|
|
3890
3930
|
|
|
3891
3931
|
.data-table thead th[style*='right'] { text-align: right; }
|
|
3932
|
+
}
|
|
3892
3933
|
|
|
3893
3934
|
/* ---- ./sizegrid.css ---- */
|
|
3894
|
-
|
|
3935
|
+
@layer components {
|
|
3936
|
+
/* The cell's colour, all of it, in one place.
|
|
3937
|
+
*
|
|
3938
|
+
* `SizeGrid` draws the cell's geometry with utilities and leaves every colour
|
|
3939
|
+
* here, because `on` and `chosen` override the resting state -- and a utility
|
|
3940
|
+
* is in `@layer utilities`, which beats `@layer components` whatever the
|
|
3941
|
+
* selector. Stated as `surface-panel-2` and `border-border` on the element,
|
|
3942
|
+
* the resting state won permanently and no cell ever lit up.
|
|
3895
3943
|
*
|
|
3896
|
-
*
|
|
3897
|
-
*
|
|
3898
|
-
*
|
|
3899
|
-
|
|
3900
|
-
|
|
3944
|
+
* That is the third time this pattern has bitten: `Select`'s tick and
|
|
3945
|
+
* `Empty`'s figure were the other two. The rule: a resting state whose
|
|
3946
|
+
* active state is a CSS rule has to be a CSS rule too. */
|
|
3947
|
+
.size-cell {
|
|
3948
|
+
border: var(--border-width) solid var(--border);
|
|
3949
|
+
background: var(--panel-2);
|
|
3950
|
+
}
|
|
3951
|
+
|
|
3952
|
+
/* `on` follows the pointer; `chosen` is what is actually saved, shown only
|
|
3953
|
+
when nothing is hovered so the two can never contradict each other. */
|
|
3901
3954
|
.size-cell.on {
|
|
3902
3955
|
border-color: var(--accent);
|
|
3903
3956
|
background: color-mix(in srgb, var(--accent) 45%, transparent);
|
|
3904
3957
|
}
|
|
3905
3958
|
|
|
3959
|
+
.size-cell.chosen { border-color: var(--accent); }
|
|
3960
|
+
}
|
|
3961
|
+
|
|
3906
3962
|
/* ---- ./tooltip.css ---- */
|
|
3963
|
+
@layer components {
|
|
3907
3964
|
/* A callout: something worth knowing, with nothing to answer. Distinct from a
|
|
3908
3965
|
`?`, which is an offer to read more, and from a banner, which is a problem.
|
|
3909
3966
|
The mark is a round `i` rather than an emoji so it takes the theme's colours
|
|
3910
3967
|
and stays the same size as the text beside it. */
|
|
3911
|
-
/* An info-toned `.callout`, spelled the old way. Identical to it now rather
|
|
3912
|
-
nearly identical to it, which is the whole point of the consolidation
|
|
3968
|
+
/* An info-toned `.callout`, spelled the old way. Identical to it now rather
|
|
3969
|
+
than nearly identical to it, which is the whole point of the consolidation.
|
|
3970
|
+
(This comment has been unterminated since before the Tailwind branch -- it
|
|
3971
|
+
stops mid-sentence and never closes, so the CSS parser merged it with the
|
|
3972
|
+
one below and recovered. Nothing was lost from the stylesheet; the rest of
|
|
3973
|
+
the sentence was. Closed here rather than guessed at.) */
|
|
3913
3974
|
|
|
3914
3975
|
/* What is left once `Tooltip` draws its own mark: the hover and focus that
|
|
3915
3976
|
reach the mark from its parent, and the tip -- whose closed and open
|
|
@@ -3992,8 +4053,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
3992
4053
|
}
|
|
3993
4054
|
|
|
3994
4055
|
.explain-tip strong { color: var(--text); font-weight: 600; }
|
|
4056
|
+
}
|
|
3995
4057
|
|
|
3996
4058
|
/* ---- ./illustration.css ---- */
|
|
4059
|
+
@layer components {
|
|
3997
4060
|
/* illustrations -------------------------------------------------------- */
|
|
3998
4061
|
|
|
3999
4062
|
/* Open Peeps, two colours, wearing whatever the theme is.
|
|
@@ -4031,8 +4094,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4031
4094
|
* original rule already carried a note about needing two classes to beat
|
|
4032
4095
|
* `.illo`; layers make that impossible rather than merely fiddly. */
|
|
4033
4096
|
.nothing-figure { color: var(--muted); }
|
|
4097
|
+
}
|
|
4034
4098
|
|
|
4035
4099
|
/* ---- ./field.css ---- */
|
|
4100
|
+
@layer components {
|
|
4036
4101
|
/* fields --------------------------------------------------------------- */
|
|
4037
4102
|
|
|
4038
4103
|
/* Label, description, input, error -- in the order they are wanted. The
|
|
@@ -4207,8 +4272,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4207
4272
|
background: var(--panel-2);
|
|
4208
4273
|
color: var(--text);
|
|
4209
4274
|
}
|
|
4275
|
+
}
|
|
4210
4276
|
|
|
4211
4277
|
/* ---- ./tour.css ---- */
|
|
4278
|
+
@layer components {
|
|
4212
4279
|
/* tour ----------------------------------------------------------------- */
|
|
4213
4280
|
|
|
4214
4281
|
/* The layer sits over everything and catches nothing: the scrim is painted by
|
|
@@ -4270,12 +4337,14 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4270
4337
|
.tour-actions { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-2); }
|
|
4271
4338
|
|
|
4272
4339
|
.tour-count { color: var(--muted); font-size: var(--text-xs); }
|
|
4340
|
+
}
|
|
4273
4341
|
|
|
4274
4342
|
/* The mail and forum shell, added in 0.4.0. After the rest, because the
|
|
4275
4343
|
anchored surfaces (`.pop`, `.menu-sheet`, `.cmd`) sit over everything and a
|
|
4276
4344
|
rule of equal specificity that came earlier would lose to whatever the
|
|
4277
4345
|
sheets they cover happen to set. */
|
|
4278
4346
|
/* ---- ./stat.css ---- */
|
|
4347
|
+
@layer components {
|
|
4279
4348
|
/* What the utilities on `Stat` cannot say: a tone on the tile colouring the
|
|
4280
4349
|
figure inside it. An attribute on the parent selecting a child is a
|
|
4281
4350
|
relationship; a utility is a property on one element.
|
|
@@ -4286,8 +4355,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4286
4355
|
.stat[data-tone='good'] .stat-value { color: var(--good); }
|
|
4287
4356
|
.stat[data-tone='warn'] .stat-value { color: var(--warn); }
|
|
4288
4357
|
.stat[data-tone='bad'] .stat-value { color: var(--bad); }
|
|
4358
|
+
}
|
|
4289
4359
|
|
|
4290
4360
|
/* ---- ./shell.css ---- */
|
|
4361
|
+
@layer components {
|
|
4291
4362
|
/* The measure, and only the measure.
|
|
4292
4363
|
*
|
|
4293
4364
|
* `Shell` draws itself with utilities -- it is layout and nothing else. What
|
|
@@ -4314,8 +4385,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4314
4385
|
font-size: var(--text-sm);
|
|
4315
4386
|
white-space: nowrap;
|
|
4316
4387
|
}
|
|
4388
|
+
}
|
|
4317
4389
|
|
|
4318
4390
|
/* ---- ./scrollarea.css ---- */
|
|
4391
|
+
@layer components {
|
|
4319
4392
|
/* A box that scrolls, with its edges drawn.
|
|
4320
4393
|
|
|
4321
4394
|
The fades are `::before`/`::after` on the scroller itself, pinned with
|
|
@@ -4408,8 +4481,10 @@ input[type='range'].slider:disabled::-moz-range-thumb { opacity: 0; }
|
|
|
4408
4481
|
.scroller.faded::before,
|
|
4409
4482
|
.scroller.faded::after { transition: none; }
|
|
4410
4483
|
}
|
|
4484
|
+
}
|
|
4411
4485
|
|
|
4412
4486
|
/* ---- ./splitpane.css ---- */
|
|
4487
|
+
@layer components {
|
|
4413
4488
|
/* Two panes and the handle between them. */
|
|
4414
4489
|
.split {
|
|
4415
4490
|
display: flex;
|
|
@@ -4509,8 +4584,10 @@ body.splitting * { cursor: inherit !important; }
|
|
|
4509
4584
|
@media (prefers-reduced-motion: reduce) {
|
|
4510
4585
|
.split-grip { transition: none; }
|
|
4511
4586
|
}
|
|
4587
|
+
}
|
|
4512
4588
|
|
|
4513
4589
|
/* ---- ./popover.css ---- */
|
|
4590
|
+
@layer components {
|
|
4514
4591
|
/* A small surface anchored to what opened it. Same sheet as the select's list,
|
|
4515
4592
|
because they are the same object -- something that appeared over the page,
|
|
4516
4593
|
attached to a control. */
|
|
@@ -4564,8 +4641,10 @@ body.splitting * { cursor: inherit !important; }
|
|
|
4564
4641
|
.pop[data-entering],
|
|
4565
4642
|
.pop[data-exiting] { animation: none; }
|
|
4566
4643
|
}
|
|
4644
|
+
}
|
|
4567
4645
|
|
|
4568
4646
|
/* ---- ./menu.css ---- */
|
|
4647
|
+
@layer components {
|
|
4569
4648
|
/* What is left once `Menu` draws its sheet and its list: the rows, whose
|
|
4570
4649
|
`data-focused`, `data-pressed` and danger states React Aria stamps on
|
|
4571
4650
|
them, and the rules that reach from a row into what it holds. The
|
|
@@ -4647,8 +4726,10 @@ body.splitting * { cursor: inherit !important; }
|
|
|
4647
4726
|
}
|
|
4648
4727
|
|
|
4649
4728
|
.menu-sheet { box-shadow: var(--shadow-2); }
|
|
4729
|
+
}
|
|
4650
4730
|
|
|
4651
4731
|
/* ---- ./command.css ---- */
|
|
4732
|
+
@layer components {
|
|
4652
4733
|
/* The command palette: a field over the app and a list under it. */
|
|
4653
4734
|
.cmd-scrim {
|
|
4654
4735
|
position: fixed;
|
|
@@ -4790,8 +4871,10 @@ body.splitting * { cursor: inherit !important; }
|
|
|
4790
4871
|
.cmd-scrim[data-exiting],
|
|
4791
4872
|
.cmd[data-entering] { animation: none; }
|
|
4792
4873
|
}
|
|
4874
|
+
}
|
|
4793
4875
|
|
|
4794
4876
|
/* ---- ./pagination.css ---- */
|
|
4877
|
+
@layer components {
|
|
4795
4878
|
/* What is left once `Pagination` draws its own frame: the step and page
|
|
4796
4879
|
buttons, whose hover, focus-visible and current states are pseudo-classes
|
|
4797
4880
|
on two selectors at once, and `.pager-count strong`, which reaches into
|
|
@@ -4910,8 +4993,10 @@ body.splitting * { cursor: inherit !important; }
|
|
|
4910
4993
|
.pager-page,
|
|
4911
4994
|
.pager-jump { transition: none; }
|
|
4912
4995
|
}
|
|
4996
|
+
}
|
|
4913
4997
|
|
|
4914
4998
|
/* ---- ./identity.css ---- */
|
|
4999
|
+
@layer components {
|
|
4915
5000
|
/* A person, said in one line: initials, name, sometimes the address. */
|
|
4916
5001
|
.ident {
|
|
4917
5002
|
display: inline-flex;
|
|
@@ -5012,6 +5097,7 @@ body.splitting * { cursor: inherit !important; }
|
|
|
5012
5097
|
|
|
5013
5098
|
.ident-remove:hover { background: var(--panel); color: var(--text); }
|
|
5014
5099
|
.ident-remove:focus-visible { outline: none; box-shadow: var(--focus-ring); }
|
|
5100
|
+
}
|
|
5015
5101
|
/* ---- valet: the themes ---- */
|
|
5016
5102
|
:root[data-theme='valet']{--bg:#f4f5f8;--panel:#ffffff;--panel-2:#eceef3;--border:#dcdfe7;--border-strong:#7b8597;--text:#171a21;--muted:#5b6474;--accent:#4f46e5;--accent-dim:#a9a4f0;--on-accent:#ffffff;--good:#1b7f4b;--warn:#8a5f0a;--bad:#bf3a31;--info:#0e6f8e;--app-bg:#f4f5f8;--shadow-1:0 4px 14px rgba(23, 26, 33, 0.08);--shadow-2:0 8px 24px rgba(23, 26, 33, 0.10);--shadow-3:0 12px 32px rgba(23, 26, 33, 0.12);--scrim:rgba(23, 26, 33, 0.32);color-scheme:light}
|
|
5017
5103
|
:root[data-theme='valet-night']{--bg:#0c0f14;--panel:#141820;--panel-2:#1b2029;--border:#262c37;--border-strong:#616b7d;--text:#e8eaf0;--muted:#9ba4b5;--accent:#8f88ff;--accent-dim:#3f3a8f;--on-accent:#0d0b2e;--good:#5fcb8f;--warn:#e2ae58;--bad:#f28b84;--info:#57c4e8;--app-bg:#0c0f14;--shadow-1:0 6px 20px rgba(0, 0, 0, 0.28);--shadow-2:0 8px 28px rgba(0, 0, 0, 0.34);--shadow-3:0 10px 34px rgba(0, 0, 0, 0.38);--scrim:rgba(0, 0, 0, 0.5);color-scheme:dark}
|