@crewlethq/ui 0.13.0 → 0.15.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/README.md +42 -0
- package/dist/AppShell/AppShell.d.ts +76 -11
- package/dist/AppShell/index.d.ts +1 -1
- package/dist/AppShell/index.js +2 -2
- package/dist/{AppShell-CEVLW4QG.css → AppShell-6QUD7NWM.css} +74 -1
- package/dist/AvatarPicker/index.js +4 -4
- package/dist/Canvas/index.js +3 -3
- package/dist/Charts/StackedColumns.d.ts +30 -7
- package/dist/Charts/index.d.ts +1 -1
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-JUERFLAR.css → Charts-JYW4X5ZL.css} +18 -1
- package/dist/CommandPalette/index.js +3 -3
- package/dist/DataTable/index.js +5 -5
- package/dist/DataView/index.js +9 -9
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/{DateTimePicker-4AZBTODT.css → DateTimePicker-NJ6XH2TE.css} +4 -3
- package/dist/DescriptionList/DescriptionList.d.ts +9 -1
- package/dist/DescriptionList/index.js +1 -1
- package/dist/{DescriptionList-YYY3V3O6.css → DescriptionList-IXMRCSMK.css} +24 -0
- package/dist/FactList/index.js +3 -3
- package/dist/Layer/index.js +1 -1
- package/dist/Layer-J222IFNX.css +33 -0
- package/dist/Layout/index.js +1 -1
- package/dist/{Layout-2ZCV3IGF.css → Layout-ZBEGLXAE.css} +18 -0
- package/dist/ListInput/index.js +3 -3
- package/dist/MarkdownEditor/index.js +1 -1
- package/dist/Menu/index.js +2 -2
- package/dist/Modal/index.js +2 -2
- package/dist/{Modal-3YJ2GG2T.css → Modal-RQAYGG4L.css} +1 -1
- package/dist/OrgTable/index.js +5 -5
- package/dist/Popover/index.js +2 -2
- package/dist/Select/index.js +2 -2
- package/dist/{Select-XMZ44RWY.css → Select-2P7AWUE4.css} +32 -6
- package/dist/Shortcut/index.js +1 -1
- package/dist/Switcher/index.js +5 -5
- package/dist/TagsInput/index.js +3 -3
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/{TimeWindowPicker-GBF4JDFI.css → TimeWindowPicker-BZ5HHATU.css} +5 -4
- package/dist/Toaster/Toaster.d.ts +6 -1
- package/dist/Toaster/index.js +2 -2
- package/dist/{Toaster-KZ7YE2HA.css → Toaster-EOOOTSJT.css} +82 -87
- package/dist/Toolbar/index.js +1 -1
- package/dist/Tooltip/index.js +2 -2
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/TreeGrid/index.js +3 -3
- package/dist/{chunk-UZPHPW3Z.js → chunk-2GXTIK37.js} +4 -4
- package/dist/{chunk-RZ7RGECB.js → chunk-2OLCUNG7.js} +1 -1
- package/dist/{chunk-JDPAA2JU.js → chunk-2UU5IGZI.js} +2 -2
- package/dist/{chunk-B2CITO6R.js → chunk-7BZPYA5P.js} +3 -3
- package/dist/{chunk-2PZBIHRV.js → chunk-AMH67MLM.js} +2 -2
- package/dist/{chunk-6LXMLQUM.js → chunk-B2Z2CDM5.js} +2 -2
- package/dist/{chunk-O2ZDZZS7.js → chunk-BWRGFKJP.js} +3 -2
- package/dist/{chunk-75WOCYGC.js → chunk-DYHSQHAZ.js} +1 -1
- package/dist/{chunk-4FFHJBEN.js → chunk-EFNHOVC2.js} +1 -1
- package/dist/{chunk-XN4JBAN3.js → chunk-F2XSYBKH.js} +8 -2
- package/dist/{chunk-XFE5W2I4.js → chunk-FC4YTTFJ.js} +14 -4
- package/dist/{chunk-L3CTFFLZ.js → chunk-H3XOMT7W.js} +53 -9
- package/dist/{chunk-7RPGY3JE.js → chunk-HMPFGIWM.js} +1 -1
- package/dist/{chunk-HKGS67VG.js → chunk-IYZZL3MZ.js} +1 -1
- package/dist/{chunk-URYDN2KA.js → chunk-JI5AVQLA.js} +1 -1
- package/dist/{chunk-CF6DTETT.js → chunk-K4VORB64.js} +2 -2
- package/dist/{chunk-S3IENQ3E.js → chunk-LCF4WPYS.js} +3 -3
- package/dist/{chunk-4WNNEDKO.js → chunk-MLT2HBPN.js} +87 -74
- package/dist/{chunk-TFH6SYWB.js → chunk-NS7BVLL3.js} +1 -1
- package/dist/{chunk-LELD5KPA.js → chunk-QH3AKP2N.js} +22 -9
- package/dist/{chunk-WY2NLRZN.js → chunk-QV266R6G.js} +3 -3
- package/dist/{chunk-CQY5NTRS.js → chunk-QWOPX2MN.js} +1 -1
- package/dist/{chunk-53DVJCVW.js → chunk-VYOKRN2I.js} +1 -1
- package/dist/{chunk-W4ENKCXJ.js → chunk-ZAC7SKUN.js} +1 -1
- package/dist/generated/index.js +33 -33
- package/dist/index.js +33 -33
- package/dist/styles.css +279 -114
- package/package.json +3 -3
- package/dist/Layer-NAFSGCFA.css +0 -23
- package/dist/{chunk-LZP7FGT7.js → chunk-GARACZAH.js} +1 -1
- package/dist/{chunk-GG2QEZO2.js → chunk-JCO3SIST.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -535,7 +535,7 @@
|
|
|
535
535
|
}
|
|
536
536
|
|
|
537
537
|
|
|
538
|
-
/* AppShell-
|
|
538
|
+
/* AppShell-6QUD7NWM.css */
|
|
539
539
|
/*
|
|
540
540
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
541
541
|
* floats beside it.
|
|
@@ -753,7 +753,44 @@
|
|
|
753
753
|
color var(--motion-duration-fast) var(--motion-easing-default);
|
|
754
754
|
}
|
|
755
755
|
|
|
756
|
-
|
|
756
|
+
/*
|
|
757
|
+
* A CONTROL IN THE FOOT IS A ROW OF THE RAIL'S OWN GRAMMAR: the nav row's 30px
|
|
758
|
+
* step, its glyph-to-word gap, its word size and weight, and its secondary ink
|
|
759
|
+
* lifting to the primary under the pointer, as Settings above it is drawn. So
|
|
760
|
+
* the engine's row under Settings reads as one more row of the rail rather
|
|
761
|
+
* than as a caption, its words start on the line the nav's words start on, and
|
|
762
|
+
* it keeps one height in every state it says: one line of the compact step.
|
|
763
|
+
* A status line the rail only states keeps the quieter caption above, and the
|
|
764
|
+
* status block keeps its card.
|
|
765
|
+
*
|
|
766
|
+
* Its mark takes a nav glyph's width, `sm` (14px), whatever the mark is, so a
|
|
767
|
+
* 7px status dot is centred where the glyph above it is centred and the words
|
|
768
|
+
* beside it start where "Settings" starts.
|
|
769
|
+
*/
|
|
770
|
+
.crewlet-app-shell__rail-row--action:not(.crewlet-app-shell__rail-row--block),
|
|
771
|
+
.crewlet-app-shell__rail-foot > .crewlet-btn {
|
|
772
|
+
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
773
|
+
min-height: var(--size-nav-row);
|
|
774
|
+
padding-block: 0;
|
|
775
|
+
color: var(--color-text-secondary);
|
|
776
|
+
font-size: var(--font-size-compact);
|
|
777
|
+
font-weight: var(--font-weight-medium);
|
|
778
|
+
letter-spacing: var(--font-letter-spacing-snug);
|
|
779
|
+
line-height: var(--font-line-height-tight);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
.crewlet-app-shell__rail-row--action:not(.crewlet-app-shell__rail-row--block) > .crewlet-app-shell__rail-row-icon {
|
|
783
|
+
min-width: 14px;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/*
|
|
787
|
+
* OPEN IS POINTED AT. The row a panel is open from keeps the hover's lift for
|
|
788
|
+
* as long as the panel is open, drawn from `aria-expanded` so the picture and
|
|
789
|
+
* what a screen reader is told cannot come apart, as the switcher's trigger
|
|
790
|
+
* draws it.
|
|
791
|
+
*/
|
|
792
|
+
.crewlet-app-shell__rail-row--action:hover,
|
|
793
|
+
.crewlet-app-shell__rail-row--action[aria-expanded='true'] {
|
|
757
794
|
background: var(--color-surface-hover);
|
|
758
795
|
color: var(--color-text-primary);
|
|
759
796
|
}
|
|
@@ -831,6 +868,42 @@
|
|
|
831
868
|
flex: none;
|
|
832
869
|
}
|
|
833
870
|
|
|
871
|
+
/*
|
|
872
|
+
* THE COUNT: how many of something the row reports, after its words, drawn as
|
|
873
|
+
* a count in the nav is: the caption step, tabular figures so a count that
|
|
874
|
+
* ticks up does not move the words beside it, and a mark half a step off the
|
|
875
|
+
* figure. It is the tertiary step, as the nav's is, unless what it counts is
|
|
876
|
+
* wrong: a warning count is the warning ink, figure and mark together, which
|
|
877
|
+
* @crewlethq/tokens holds to 4.5:1 on the rail and under the hover overlay
|
|
878
|
+
* (RAIL_PAINTS), so on the row a panel is open from too.
|
|
879
|
+
*/
|
|
880
|
+
.crewlet-app-shell__rail-row-count {
|
|
881
|
+
display: inline-flex;
|
|
882
|
+
align-items: center;
|
|
883
|
+
flex: none;
|
|
884
|
+
gap: calc(var(--spacing-1) + 1px);
|
|
885
|
+
color: var(--color-text-tertiary);
|
|
886
|
+
font-size: var(--font-size-2xs);
|
|
887
|
+
font-variant-numeric: tabular-nums;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
.crewlet-app-shell__rail-row-count-mark {
|
|
891
|
+
display: inline-flex;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
.crewlet-app-shell__rail-row-count--warning {
|
|
895
|
+
color: var(--color-feedback-warning-ink);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
/* The chevron that says the row opens a panel, in the quiet step: a mark, not
|
|
899
|
+
a word, and it stays quiet while the row lifts, as the panel's own name is
|
|
900
|
+
what a reader is told. */
|
|
901
|
+
.crewlet-app-shell__rail-row-opens {
|
|
902
|
+
display: inline-flex;
|
|
903
|
+
flex: none;
|
|
904
|
+
color: var(--color-text-tertiary);
|
|
905
|
+
}
|
|
906
|
+
|
|
834
907
|
/*
|
|
835
908
|
* THE STATUS BLOCK: a row given a `detail` is the approved design's engine
|
|
836
909
|
* status, its words over a second line, on the card rung inside the plain
|
|
@@ -3297,7 +3370,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
3297
3370
|
}
|
|
3298
3371
|
|
|
3299
3372
|
|
|
3300
|
-
/* Charts-
|
|
3373
|
+
/* Charts-JYW4X5ZL.css */
|
|
3301
3374
|
/* The chart kit: a legend, a ranked bar list, a stacked bar, stacked
|
|
3302
3375
|
columns, an activity strip, a time series and the reading layer they share. Hand-drawn rather than a charting library, for one reason that
|
|
3303
3376
|
decides it: every mark here reads tokens, in two themes, at the contrast
|
|
@@ -3705,6 +3778,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
3705
3778
|
min-width: 0;
|
|
3706
3779
|
}
|
|
3707
3780
|
|
|
3781
|
+
/*
|
|
3782
|
+
* A FILL CHART GROWS INTO THE HEIGHT IT IS GIVEN (`height="fill"`). The figure
|
|
3783
|
+
* flexes, so in a card a taller neighbour stretches it takes the spare height,
|
|
3784
|
+
* and its rows (a style property) spend all of it on the plot's row. Nowhere to
|
|
3785
|
+
* grow, it is as tall as its content, the plot at its least.
|
|
3786
|
+
*/
|
|
3787
|
+
.crewlet-stacked-columns--fill {
|
|
3788
|
+
flex: 1 1 auto;
|
|
3789
|
+
}
|
|
3790
|
+
|
|
3708
3791
|
/*
|
|
3709
3792
|
* EACH WORD IS A BOX OF NO HEIGHT, spread from the top of the plot to its
|
|
3710
3793
|
* baseline, with the word centred on it: so every word stands exactly on the
|
|
@@ -3819,12 +3902,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
3819
3902
|
* legend at its END, top right, where the design's Spend card draws it; the
|
|
3820
3903
|
* legend is flushed to the end of that row and wraps from there. Below, the
|
|
3821
3904
|
* legend starts under the axis, a step clear of the dates.
|
|
3905
|
+
*
|
|
3906
|
+
* ON A CARD TOO NARROW FOR BOTH, THE LEGEND TAKES A ROW OF ITS OWN, under the
|
|
3907
|
+
* heading and still flushed to the end. Held on one line, the two shrank
|
|
3908
|
+
* together and the legend stood beside the title as a column of one series a
|
|
3909
|
+
* line. The rows stand a step apart, closer than the head stands to the plot,
|
|
3910
|
+
* so the legend still reads as the head's.
|
|
3822
3911
|
*/
|
|
3823
3912
|
.crewlet-stacked-columns__head {
|
|
3824
3913
|
grid-column: 1 / -1;
|
|
3825
3914
|
display: flex;
|
|
3915
|
+
flex-wrap: wrap;
|
|
3826
3916
|
align-items: flex-start;
|
|
3827
|
-
gap: var(--spacing-4);
|
|
3917
|
+
gap: var(--spacing-2) var(--spacing-4);
|
|
3828
3918
|
margin-bottom: var(--spacing-3);
|
|
3829
3919
|
min-width: 0;
|
|
3830
3920
|
}
|
|
@@ -7857,11 +7947,12 @@ body.crewlet-data-table-resizing {
|
|
|
7857
7947
|
}
|
|
7858
7948
|
|
|
7859
7949
|
|
|
7860
|
-
/* DateTimePicker-
|
|
7950
|
+
/* DateTimePicker-NJ6XH2TE.css */
|
|
7861
7951
|
/*
|
|
7862
7952
|
* DateTimePicker: a Select-shaped trigger over a calendar dialog.
|
|
7863
7953
|
*
|
|
7864
|
-
* The trigger borrows the Select's geometry
|
|
7954
|
+
* The trigger borrows the Select's geometry and its button boundary
|
|
7955
|
+
* (--color-border-strong; see Select.css) so a date box and a picker line
|
|
7865
7956
|
* up in the same toolbar; the panel holds the shared CalendarGrid, so the
|
|
7866
7957
|
* month looks and behaves the same here as in every other picker.
|
|
7867
7958
|
*/
|
|
@@ -7877,7 +7968,7 @@ body.crewlet-data-table-resizing {
|
|
|
7877
7968
|
height. */
|
|
7878
7969
|
padding: 0 var(--spacing-2) 0 var(--spacing-3);
|
|
7879
7970
|
background: var(--color-surface-subtle);
|
|
7880
|
-
border: 1px solid var(--color-border-
|
|
7971
|
+
border: 1px solid var(--color-border-strong);
|
|
7881
7972
|
border-radius: var(--radius-md);
|
|
7882
7973
|
color: var(--color-text-primary);
|
|
7883
7974
|
font-family: inherit;
|
|
@@ -7894,7 +7985,7 @@ body.crewlet-data-table-resizing {
|
|
|
7894
7985
|
}
|
|
7895
7986
|
|
|
7896
7987
|
.crewlet-datetime:hover:not(:disabled) {
|
|
7897
|
-
border-color: var(--color-border-hover);
|
|
7988
|
+
border-color: var(--color-border-strong-hover);
|
|
7898
7989
|
}
|
|
7899
7990
|
|
|
7900
7991
|
/*
|
|
@@ -8064,7 +8155,7 @@ svg.crewlet-datetime__chevron {
|
|
|
8064
8155
|
}
|
|
8065
8156
|
|
|
8066
8157
|
|
|
8067
|
-
/* DescriptionList-
|
|
8158
|
+
/* DescriptionList-IXMRCSMK.css */
|
|
8068
8159
|
/*
|
|
8069
8160
|
* Metadata pairs on one grid.
|
|
8070
8161
|
*
|
|
@@ -8125,6 +8216,30 @@ svg.crewlet-datetime__chevron {
|
|
|
8125
8216
|
}
|
|
8126
8217
|
}
|
|
8127
8218
|
|
|
8219
|
+
/*
|
|
8220
|
+
* FIT: the term column is as wide as its longest term, and the pairs stay side
|
|
8221
|
+
* by side at every width. It is for a panel of its own width, such as a
|
|
8222
|
+
* popover, where the window's width says nothing about the room the list has:
|
|
8223
|
+
* the narrow rule above is a question about the window, and a 260px panel is
|
|
8224
|
+
* 260px on a phone and on a desktop alike. Its terms are a word each, so the
|
|
8225
|
+
* column they take is a word wide and the details keep the rest.
|
|
8226
|
+
*
|
|
8227
|
+
* Written AFTER the narrow rule, which it overrides at the same weight, so
|
|
8228
|
+
* nothing here has to outrank a media query.
|
|
8229
|
+
*/
|
|
8230
|
+
.crewlet-description-list--fit {
|
|
8231
|
+
grid-template-columns: max-content minmax(0, 1fr);
|
|
8232
|
+
gap: var(--spacing-2) var(--spacing-4);
|
|
8233
|
+
}
|
|
8234
|
+
|
|
8235
|
+
.crewlet-description-list--fit.crewlet-description-list--dense {
|
|
8236
|
+
gap: var(--spacing-1) var(--spacing-3);
|
|
8237
|
+
}
|
|
8238
|
+
|
|
8239
|
+
.crewlet-description-list--fit .crewlet-description-list__detail {
|
|
8240
|
+
margin-bottom: 0;
|
|
8241
|
+
}
|
|
8242
|
+
|
|
8128
8243
|
|
|
8129
8244
|
/* DiffList-3EX64AAE.css */
|
|
8130
8245
|
/* DiffList: one path per row, with its mark, its word and its tint.
|
|
@@ -10678,7 +10793,7 @@ svg.crewlet-datetime__chevron {
|
|
|
10678
10793
|
}
|
|
10679
10794
|
|
|
10680
10795
|
|
|
10681
|
-
/* Layer-
|
|
10796
|
+
/* Layer-J222IFNX.css */
|
|
10682
10797
|
/*
|
|
10683
10798
|
* The portal target a LayerHost provides.
|
|
10684
10799
|
*
|
|
@@ -10690,13 +10805,23 @@ svg.crewlet-datetime__chevron {
|
|
|
10690
10805
|
* Its container establishes the positioning context. A host whose parent is
|
|
10691
10806
|
* static covers the nearest positioned ancestor instead, which is the
|
|
10692
10807
|
* viewport in the common case and is still a usable bound.
|
|
10808
|
+
*
|
|
10809
|
+
* IT TAKES NO PLACE IN THE STACKING ORDER OF ITS OWN. Every surface drawn in
|
|
10810
|
+
* it carries its own step in the layer band, its depth in the stack, and that
|
|
10811
|
+
* is what decides what paints on top. A z-index here made the host a stacking
|
|
10812
|
+
* context at the bottom of the band, which held everything inside it under
|
|
10813
|
+
* whatever the page stacked above that step: the shell's open drawer takes
|
|
10814
|
+
* the band's own steps beside the host rather than inside it, so a panel
|
|
10815
|
+
* opened from the drawer was drawn under the drawer it came from. A surface
|
|
10816
|
+
* at the same step as the drawer's rail, which is the next one opened above
|
|
10817
|
+
* it, paints over the rail because the host follows the shell in the
|
|
10818
|
+
* document.
|
|
10693
10819
|
*/
|
|
10694
10820
|
|
|
10695
10821
|
.crewlet-layer-host {
|
|
10696
10822
|
position: absolute;
|
|
10697
10823
|
inset: 0;
|
|
10698
10824
|
pointer-events: none;
|
|
10699
|
-
z-index: var(--z-index-layer-base);
|
|
10700
10825
|
}
|
|
10701
10826
|
|
|
10702
10827
|
.crewlet-layer-host > * {
|
|
@@ -10704,7 +10829,7 @@ svg.crewlet-datetime__chevron {
|
|
|
10704
10829
|
}
|
|
10705
10830
|
|
|
10706
10831
|
|
|
10707
|
-
/* Layout-
|
|
10832
|
+
/* Layout-ZBEGLXAE.css */
|
|
10708
10833
|
/*
|
|
10709
10834
|
* Stack, Inline, Spacer and AutoGrid.
|
|
10710
10835
|
*
|
|
@@ -10732,6 +10857,24 @@ svg.crewlet-datetime__chevron {
|
|
|
10732
10857
|
flex-direction: row;
|
|
10733
10858
|
}
|
|
10734
10859
|
|
|
10860
|
+
/*
|
|
10861
|
+
* DRAWN AS A LIST, IT IS STILL A RUN OF ITEMS. A Stack or an Inline spends no
|
|
10862
|
+
* pixel of its own, and a `ul` or an `ol` arrives with the browser's: a margin
|
|
10863
|
+
* above and below, a 40px indent and a marker on every item, so a list of five
|
|
10864
|
+
* names laid out as a Stack was pushed in and bulleted. They are taken back,
|
|
10865
|
+
* and the element stays a list to a screen reader. A list that wants its
|
|
10866
|
+
* markers is `List variant="bulleted"`.
|
|
10867
|
+
*
|
|
10868
|
+
* Inside :where(), so the rule weighs one class like every other here and a
|
|
10869
|
+
* caller's own class still decides what it sets.
|
|
10870
|
+
*/
|
|
10871
|
+
:where(ul, ol).crewlet-stack,
|
|
10872
|
+
:where(ul, ol).crewlet-inline {
|
|
10873
|
+
margin: 0;
|
|
10874
|
+
padding: 0;
|
|
10875
|
+
list-style: none;
|
|
10876
|
+
}
|
|
10877
|
+
|
|
10735
10878
|
/*
|
|
10736
10879
|
* A GRID OF CARDS KEEPS ITS TRACKS. `auto-fill` lays down every track the row
|
|
10737
10880
|
* has room for and leaves the empty ones empty; `auto-fit`, which this was,
|
|
@@ -12004,7 +12147,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12004
12147
|
}
|
|
12005
12148
|
|
|
12006
12149
|
|
|
12007
|
-
/* Modal-
|
|
12150
|
+
/* Modal-RQAYGG4L.css */
|
|
12008
12151
|
/*
|
|
12009
12152
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
12010
12153
|
*
|
|
@@ -12296,7 +12439,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12296
12439
|
* padding is only the least it keeps when a title wraps. It was the 16px step
|
|
12297
12440
|
* while the bar was 64px, which a full control step filled exactly; at 52px
|
|
12298
12441
|
* the same padding stood the head 12px past the bar behind it. At the 4px step
|
|
12299
|
-
* the head is the bar's height with the control step at every density,
|
|
12442
|
+
* the head is the bar's height with the control step at every density, 37.12px
|
|
12300
12443
|
* at comfortable included, and with a subtitle under the title.
|
|
12301
12444
|
*
|
|
12302
12445
|
* It used to be the tighter band, 49px with a close control alone, and the
|
|
@@ -15083,7 +15226,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15083
15226
|
}
|
|
15084
15227
|
|
|
15085
15228
|
|
|
15086
|
-
/* Select-
|
|
15229
|
+
/* Select-2P7AWUE4.css */
|
|
15087
15230
|
/*
|
|
15088
15231
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
15089
15232
|
*
|
|
@@ -15093,9 +15236,12 @@ svg.crewlet-datetime__chevron {
|
|
|
15093
15236
|
* into the nearest layer host and drawn with the shared listbox register, so
|
|
15094
15237
|
* a list of options looks the same wherever it is offered from.
|
|
15095
15238
|
*
|
|
15096
|
-
*
|
|
15097
|
-
*
|
|
15098
|
-
*
|
|
15239
|
+
* THE BOUNDARY IS A BUTTON'S, --color-border-strong, the secondary button's
|
|
15240
|
+
* and the date and time-window pickers'. A picker shows its value and its
|
|
15241
|
+
* chevron, and those are what a reader knows it by. --color-border-control,
|
|
15242
|
+
* at 3:1, is for the controls whose outline IS the control (a text box, a
|
|
15243
|
+
* checkbox, a switch; see Input.css): on a picker it drew the one bright box
|
|
15244
|
+
* in a row of buttons and switchers, brighter at rest than under the pointer.
|
|
15099
15245
|
*/
|
|
15100
15246
|
|
|
15101
15247
|
.crewlet-select {
|
|
@@ -15113,7 +15259,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15113
15259
|
width: 100%;
|
|
15114
15260
|
min-height: var(--size-control-md);
|
|
15115
15261
|
background-color: var(--color-surface-subtle);
|
|
15116
|
-
border: 1px solid var(--color-border-
|
|
15262
|
+
border: 1px solid var(--color-border-strong);
|
|
15117
15263
|
border-radius: var(--radius-md);
|
|
15118
15264
|
color: var(--color-text-primary);
|
|
15119
15265
|
/* The boundary is the only thing that moves. The ring is an outline, which
|
|
@@ -15134,7 +15280,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15134
15280
|
}
|
|
15135
15281
|
|
|
15136
15282
|
.crewlet-select:hover {
|
|
15137
|
-
border-color: var(--color-border-hover);
|
|
15283
|
+
border-color: var(--color-border-strong-hover);
|
|
15138
15284
|
}
|
|
15139
15285
|
|
|
15140
15286
|
/*
|
|
@@ -15283,7 +15429,7 @@ svg.crewlet-select__chevron {
|
|
|
15283
15429
|
display: flex;
|
|
15284
15430
|
flex-direction: column;
|
|
15285
15431
|
min-width: 0;
|
|
15286
|
-
max-height: var(--crewlet-select-menu-max-height);
|
|
15432
|
+
max-height: min(var(--crewlet-select-menu-max-height), 60vh);
|
|
15287
15433
|
/*
|
|
15288
15434
|
* THE PANEL IS THE PRODUCT'S SURFACE, on the panel hairline, at the panel
|
|
15289
15435
|
* corner. A list offered from a field is another panel over the one the
|
|
@@ -15310,11 +15456,25 @@ svg.crewlet-select__chevron {
|
|
|
15310
15456
|
position: absolute;
|
|
15311
15457
|
}
|
|
15312
15458
|
|
|
15459
|
+
/*
|
|
15460
|
+
* THE PANEL'S HEIGHT IS THE LIST'S. The shared listbox register caps a list
|
|
15461
|
+
* at min(360px, 60vh) on its own, which inside this panel made
|
|
15462
|
+
* `--crewlet-select-menu-max-height` a promise it could not keep past 360px:
|
|
15463
|
+
* a taller panel drew the same short list and scrolled it. Here the list
|
|
15464
|
+
* fills what the panel allows, and the panel keeps the register's cap on the
|
|
15465
|
+
* window (see `.crewlet-select__menu`).
|
|
15466
|
+
*/
|
|
15313
15467
|
.crewlet-select__list {
|
|
15314
15468
|
flex: 1;
|
|
15315
15469
|
min-height: 0;
|
|
15316
15470
|
}
|
|
15317
15471
|
|
|
15472
|
+
/* Scoped to the panel for the weight, as the option rules below are: the
|
|
15473
|
+
register's cap is one class, and the bundle orders equal weights by hash. */
|
|
15474
|
+
.crewlet-select__menu .crewlet-select__list {
|
|
15475
|
+
max-height: none;
|
|
15476
|
+
}
|
|
15477
|
+
|
|
15318
15478
|
.crewlet-select__group {
|
|
15319
15479
|
display: flex;
|
|
15320
15480
|
flex-direction: column;
|
|
@@ -15376,6 +15536,15 @@ svg.crewlet-select__chevron {
|
|
|
15376
15536
|
color: var(--color-brand-accent-ink);
|
|
15377
15537
|
}
|
|
15378
15538
|
|
|
15539
|
+
/*
|
|
15540
|
+
* AT THE ROW'S END in a list whose rows lead with a mark (see `tickAtEnd`),
|
|
15541
|
+
* so the mark starts at the panel's edge. After a hint it follows the hint,
|
|
15542
|
+
* which already takes the free space; without one it takes it itself.
|
|
15543
|
+
*/
|
|
15544
|
+
.crewlet-select__option-body + .crewlet-select__option-tick--end {
|
|
15545
|
+
margin-left: auto;
|
|
15546
|
+
}
|
|
15547
|
+
|
|
15379
15548
|
.crewlet-select__option-body {
|
|
15380
15549
|
display: flex;
|
|
15381
15550
|
flex-direction: column;
|
|
@@ -19305,12 +19474,13 @@ b.crewlet-switcher__match {
|
|
|
19305
19474
|
}
|
|
19306
19475
|
|
|
19307
19476
|
|
|
19308
|
-
/* TimeWindowPicker-
|
|
19477
|
+
/* TimeWindowPicker-BZ5HHATU.css */
|
|
19309
19478
|
/*
|
|
19310
19479
|
* TimeWindowPicker: one trigger over one panel.
|
|
19311
19480
|
*
|
|
19312
|
-
* The trigger takes the same geometry as a Select and a
|
|
19313
|
-
*
|
|
19481
|
+
* The trigger takes the same geometry and button boundary as a Select and a
|
|
19482
|
+
* DateTimePicker (--color-border-strong; see Select.css), so the three line
|
|
19483
|
+
* up in a filter bar. The panel is a RAIL of named windows beside
|
|
19314
19484
|
* the calendars, rather than two tabs with one of them hidden: the windows a
|
|
19315
19485
|
* reader picks by name are the road, and the absolute range is the turning off
|
|
19316
19486
|
* it, so both are on screen at once and each shows what the other chose.
|
|
@@ -19325,7 +19495,7 @@ b.crewlet-switcher__match {
|
|
|
19325
19495
|
/* The side inset only: see DateTimePicker's own trigger. */
|
|
19326
19496
|
padding: 0 var(--spacing-2) 0 var(--spacing-3);
|
|
19327
19497
|
background: var(--color-surface-subtle);
|
|
19328
|
-
border: 1px solid var(--color-border-
|
|
19498
|
+
border: 1px solid var(--color-border-strong);
|
|
19329
19499
|
border-radius: var(--radius-md);
|
|
19330
19500
|
color: var(--color-text-primary);
|
|
19331
19501
|
font-family: inherit;
|
|
@@ -19342,7 +19512,7 @@ b.crewlet-switcher__match {
|
|
|
19342
19512
|
}
|
|
19343
19513
|
|
|
19344
19514
|
.crewlet-time-window:hover:not(:disabled) {
|
|
19345
|
-
border-color: var(--color-border-hover);
|
|
19515
|
+
border-color: var(--color-border-strong-hover);
|
|
19346
19516
|
}
|
|
19347
19517
|
|
|
19348
19518
|
/*
|
|
@@ -19871,102 +20041,102 @@ svg.crewlet-time-window__tick {
|
|
|
19871
20041
|
}
|
|
19872
20042
|
|
|
19873
20043
|
|
|
19874
|
-
/* Toaster-
|
|
20044
|
+
/* Toaster-EOOOTSJT.css */
|
|
19875
20045
|
/*
|
|
19876
|
-
* The toast stack
|
|
20046
|
+
* The toast stack, drawn as the first release drew it (24a60c3): a dark strip
|
|
20047
|
+
* on the page's deepest ground with the large shadow and the rim light, a
|
|
20048
|
+
* 12px corner, the variant said by its mark alone, never a flood of its hue,
|
|
20049
|
+
* and the countdown as a wash behind the words that drains from the right.
|
|
19877
20050
|
*
|
|
19878
|
-
*
|
|
19879
|
-
*
|
|
19880
|
-
*
|
|
20051
|
+
* IN TOKENS RATHER THAN ITS LITERALS, so it follows every theme. The strip is
|
|
20052
|
+
* --color-surface-background: the first release mixed the panel with black,
|
|
20053
|
+
* which read as a dark bar on a light page, where its words measured 1.56:1.
|
|
20054
|
+
* The marks are the feedback INK steps, the soft moss, amber and rose it drew,
|
|
20055
|
+
* measured as text on every theme. The washes are the feedback SOFT steps.
|
|
19881
20056
|
*
|
|
19882
|
-
*
|
|
19883
|
-
*
|
|
19884
|
-
* the message is being read; a 2px bar at the edge says the same thing and
|
|
19885
|
-
* touches no text at all. It is decoration either way: the dismissal is a
|
|
19886
|
-
* timer now, so a reader who asks for reduced motion still gets the toast
|
|
19887
|
-
* taken away.
|
|
20057
|
+
* The wash is decoration: the dismissal is a timer, so a reader who asks for
|
|
20058
|
+
* reduced motion gets no wash and still gets the toast taken away.
|
|
19888
20059
|
*/
|
|
19889
|
-
|
|
19890
20060
|
.crewlet-toaster {
|
|
19891
20061
|
position: fixed;
|
|
19892
20062
|
z-index: var(--z-index-toast);
|
|
19893
20063
|
display: flex;
|
|
19894
20064
|
flex-direction: column;
|
|
19895
|
-
gap: var(--spacing-2);
|
|
19896
|
-
|
|
19897
|
-
The strip is one or two lines of 13px text and an action; at 380 the
|
|
19898
|
-
commonest failure message wrapped onto a third. */
|
|
19899
|
-
width: min(420px, calc(100vw - var(--spacing-9)));
|
|
20065
|
+
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
20066
|
+
width: min(380px, calc(100vw - 2 * var(--spacing-6)));
|
|
19900
20067
|
/* The stack itself takes no presses, so the screen under it stays live
|
|
19901
20068
|
while nothing is up; each toast takes them back for its own strip. */
|
|
19902
20069
|
pointer-events: none;
|
|
19903
20070
|
}
|
|
19904
20071
|
|
|
19905
20072
|
.crewlet-toaster--bottom-right {
|
|
19906
|
-
bottom: var(--spacing-
|
|
19907
|
-
right: var(--spacing-
|
|
20073
|
+
bottom: var(--spacing-6);
|
|
20074
|
+
right: var(--spacing-6);
|
|
19908
20075
|
}
|
|
19909
20076
|
|
|
19910
20077
|
.crewlet-toaster--top-right {
|
|
19911
|
-
top: var(--spacing-
|
|
19912
|
-
right: var(--spacing-
|
|
20078
|
+
top: var(--spacing-6);
|
|
20079
|
+
right: var(--spacing-6);
|
|
19913
20080
|
}
|
|
19914
20081
|
|
|
19915
20082
|
.crewlet-toaster--bottom-left {
|
|
19916
|
-
bottom: var(--spacing-
|
|
19917
|
-
left: var(--spacing-
|
|
20083
|
+
bottom: var(--spacing-6);
|
|
20084
|
+
left: var(--spacing-6);
|
|
19918
20085
|
}
|
|
19919
20086
|
|
|
19920
20087
|
.crewlet-toaster--top-left {
|
|
19921
|
-
top: var(--spacing-
|
|
19922
|
-
left: var(--spacing-
|
|
20088
|
+
top: var(--spacing-6);
|
|
20089
|
+
left: var(--spacing-6);
|
|
19923
20090
|
}
|
|
19924
20091
|
|
|
19925
20092
|
.crewlet-toast {
|
|
20093
|
+
/* The mark and the wash are the two places a variant spends its hue. */
|
|
19926
20094
|
--crewlet-toast-mark: var(--color-text-secondary);
|
|
19927
|
-
|
|
19928
|
-
|
|
19929
|
-
|
|
19930
|
-
*/
|
|
19931
|
-
--crewlet-toast-line: var(--color-border-default);
|
|
19932
|
-
--crewlet-toast-ink: var(--color-text-primary);
|
|
19933
|
-
--crewlet-toast-ink-quiet: var(--color-text-secondary);
|
|
20095
|
+
--crewlet-toast-wash: var(--color-surface-pressed);
|
|
20096
|
+
/* 14px at the normal density, and the corner the dismiss sits in beside it. */
|
|
20097
|
+
--crewlet-toast-inset: calc(var(--spacing-3) + var(--spacing-1) / 2);
|
|
19934
20098
|
|
|
19935
20099
|
pointer-events: auto;
|
|
19936
20100
|
position: relative;
|
|
19937
20101
|
display: flex;
|
|
19938
20102
|
align-items: flex-start;
|
|
19939
|
-
|
|
19940
|
-
|
|
19941
|
-
|
|
19942
|
-
|
|
19943
|
-
|
|
19944
|
-
|
|
19945
|
-
|
|
19946
|
-
|
|
19947
|
-
|
|
19948
|
-
box-shadow: var(--shadow-
|
|
19949
|
-
color: var(--
|
|
20103
|
+
gap: var(--spacing-3);
|
|
20104
|
+
padding: var(--crewlet-toast-inset) calc(var(--spacing-7) + var(--spacing-1) * 1.5) var(--crewlet-toast-inset)
|
|
20105
|
+
var(--crewlet-toast-inset);
|
|
20106
|
+
background: var(--color-surface-background);
|
|
20107
|
+
border: 1px solid var(--color-border-default);
|
|
20108
|
+
border-radius: var(--radius-lg);
|
|
20109
|
+
/* The large shadow and the rim light, both from tokens that are a shadow in
|
|
20110
|
+
every palette: --shadow-hairline is `none` in light, and a `none` inside a
|
|
20111
|
+
list drops the whole declaration. */
|
|
20112
|
+
box-shadow: var(--shadow-xl), var(--shadow-rim-lit);
|
|
20113
|
+
color: var(--color-text-primary);
|
|
19950
20114
|
font-family: var(--font-family-sans);
|
|
19951
20115
|
font-size: var(--font-size-compact);
|
|
19952
|
-
line-height: var(--font-line-height-
|
|
20116
|
+
line-height: var(--font-line-height-body);
|
|
19953
20117
|
letter-spacing: var(--font-letter-spacing-snug);
|
|
19954
20118
|
overflow: hidden;
|
|
19955
|
-
animation: crewlet-toast-in var(--motion-duration-
|
|
20119
|
+
animation: crewlet-toast-in var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
19956
20120
|
}
|
|
19957
20121
|
|
|
19958
20122
|
@keyframes crewlet-toast-in {
|
|
19959
20123
|
from {
|
|
19960
20124
|
opacity: 0;
|
|
19961
|
-
transform:
|
|
20125
|
+
transform: translateX(var(--spacing-4));
|
|
19962
20126
|
}
|
|
19963
|
-
|
|
19964
20127
|
to {
|
|
19965
20128
|
opacity: 1;
|
|
19966
|
-
transform:
|
|
20129
|
+
transform: translateX(0);
|
|
19967
20130
|
}
|
|
19968
20131
|
}
|
|
19969
20132
|
|
|
20133
|
+
/* The words sit over the wash: every child is raised, and the dismiss and the
|
|
20134
|
+
wash below take their own places back. */
|
|
20135
|
+
.crewlet-toast > * {
|
|
20136
|
+
position: relative;
|
|
20137
|
+
z-index: var(--z-index-raised);
|
|
20138
|
+
}
|
|
20139
|
+
|
|
19970
20140
|
.crewlet-toast__icon {
|
|
19971
20141
|
display: inline-flex;
|
|
19972
20142
|
flex: none;
|
|
@@ -19974,34 +20144,28 @@ svg.crewlet-time-window__tick {
|
|
|
19974
20144
|
color: var(--crewlet-toast-mark);
|
|
19975
20145
|
}
|
|
19976
20146
|
|
|
19977
|
-
/*
|
|
19978
|
-
|
|
19979
|
-
|
|
20147
|
+
/*
|
|
20148
|
+
* A VARIANT IS ITS MARK AND ITS WASH. The words stay in the strip's own inks
|
|
20149
|
+
* and the edge stays the hairline, so a failure is a rose mark rather than a
|
|
20150
|
+
* red strip: the outcome is said by the glyph and the title, and the sentence
|
|
20151
|
+
* beside them is read in the ink every sentence is read in. The wash is the
|
|
20152
|
+
* countdown, so only a toast that counts down draws one: a success is a moss
|
|
20153
|
+
* mark on a faint moss wash, and a failure, sticky unless it is given a
|
|
20154
|
+
* duration, draws none. Information is the neutral mark on the neutral wash.
|
|
20155
|
+
*/
|
|
19980
20156
|
.crewlet-toast--success {
|
|
19981
|
-
--crewlet-toast-mark: var(--color-feedback-success);
|
|
20157
|
+
--crewlet-toast-mark: var(--color-feedback-success-ink);
|
|
20158
|
+
--crewlet-toast-wash: var(--color-feedback-success-soft);
|
|
19982
20159
|
}
|
|
19983
20160
|
|
|
19984
20161
|
.crewlet-toast--warning {
|
|
19985
|
-
--crewlet-toast-mark: var(--color-feedback-warning);
|
|
20162
|
+
--crewlet-toast-mark: var(--color-feedback-warning-ink);
|
|
20163
|
+
--crewlet-toast-wash: var(--color-feedback-warning-soft);
|
|
19986
20164
|
}
|
|
19987
20165
|
|
|
19988
|
-
/*
|
|
19989
|
-
* A FAILURE IS THE ONE TONED STRIP. It is the outcome that is news rather than
|
|
19990
|
-
* confirmation and the one that does not take itself away, so the engine gives
|
|
19991
|
-
* it the hue twice: the fill step on the edge, where 3:1 is the floor a
|
|
19992
|
-
* boundary has to clear, and the INK step on every word, which is the measured
|
|
19993
|
-
* text pair on this surface. Never the fill behind a word: that is the swap
|
|
19994
|
-
* the whole soft-and-ink split exists to stop.
|
|
19995
|
-
*/
|
|
19996
20166
|
.crewlet-toast--danger {
|
|
19997
|
-
--crewlet-toast-mark: var(--color-feedback-danger);
|
|
19998
|
-
--crewlet-toast-
|
|
19999
|
-
--crewlet-toast-ink: var(--color-feedback-danger-ink);
|
|
20000
|
-
--crewlet-toast-ink-quiet: var(--color-feedback-danger-ink);
|
|
20001
|
-
}
|
|
20002
|
-
|
|
20003
|
-
.crewlet-toast--info {
|
|
20004
|
-
--crewlet-toast-mark: var(--color-feedback-info);
|
|
20167
|
+
--crewlet-toast-mark: var(--color-feedback-danger-ink);
|
|
20168
|
+
--crewlet-toast-wash: var(--color-feedback-danger-soft);
|
|
20005
20169
|
}
|
|
20006
20170
|
|
|
20007
20171
|
/* A usage limit notice is the application's own variant: it paints the glyph
|
|
@@ -20023,12 +20187,12 @@ svg.crewlet-time-window__tick {
|
|
|
20023
20187
|
}
|
|
20024
20188
|
|
|
20025
20189
|
.crewlet-toast__message {
|
|
20026
|
-
color: var(--
|
|
20190
|
+
color: var(--color-text-secondary);
|
|
20027
20191
|
overflow-wrap: anywhere;
|
|
20028
20192
|
}
|
|
20029
20193
|
|
|
20030
20194
|
.crewlet-toast__actions {
|
|
20031
|
-
margin-top: var(--spacing-2);
|
|
20195
|
+
margin-top: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
20032
20196
|
display: flex;
|
|
20033
20197
|
gap: var(--spacing-2);
|
|
20034
20198
|
}
|
|
@@ -20060,6 +20224,7 @@ svg.crewlet-time-window__tick {
|
|
|
20060
20224
|
border-color: var(--color-brand-accent-hover);
|
|
20061
20225
|
}
|
|
20062
20226
|
|
|
20227
|
+
/* A failure's one filled thing is the way out of it. */
|
|
20063
20228
|
.crewlet-toast--danger .crewlet-toast__action-btn,
|
|
20064
20229
|
.crewlet-toast--danger .crewlet-toast__action-link {
|
|
20065
20230
|
background: var(--color-feedback-danger);
|
|
@@ -20081,8 +20246,9 @@ svg.crewlet-time-window__tick {
|
|
|
20081
20246
|
}
|
|
20082
20247
|
|
|
20083
20248
|
/* The dismiss sits absolute in the corner so a multi-line message flows
|
|
20084
|
-
under it rather than around it
|
|
20085
|
-
|
|
20249
|
+
under it rather than around it, and after the body in the document, so it
|
|
20250
|
+
is drawn over the words at the same raised step. 24px square: the smallest
|
|
20251
|
+
target WCAG 2.2 accepts. */
|
|
20086
20252
|
.crewlet-toast__dismiss {
|
|
20087
20253
|
position: absolute;
|
|
20088
20254
|
top: var(--spacing-2);
|
|
@@ -20096,10 +20262,7 @@ svg.crewlet-time-window__tick {
|
|
|
20096
20262
|
border: 0;
|
|
20097
20263
|
border-radius: var(--radius-sm);
|
|
20098
20264
|
background: transparent;
|
|
20099
|
-
|
|
20100
|
-
close on a failure is part of the failure rather than the one grey thing
|
|
20101
|
-
inside it. */
|
|
20102
|
-
color: var(--crewlet-toast-ink-quiet);
|
|
20265
|
+
color: var(--color-text-tertiary);
|
|
20103
20266
|
cursor: pointer;
|
|
20104
20267
|
transition:
|
|
20105
20268
|
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
@@ -20107,25 +20270,28 @@ svg.crewlet-time-window__tick {
|
|
|
20107
20270
|
}
|
|
20108
20271
|
|
|
20109
20272
|
.crewlet-toast__dismiss:hover {
|
|
20110
|
-
background: var(--color-surface-
|
|
20111
|
-
color: var(--
|
|
20273
|
+
background: var(--color-surface-elevated);
|
|
20274
|
+
color: var(--color-text-primary);
|
|
20112
20275
|
}
|
|
20113
20276
|
|
|
20277
|
+
/*
|
|
20278
|
+
* THE COUNTDOWN IS A WASH BEHIND THE WORDS, the variant's soft step over the
|
|
20279
|
+
* whole strip, draining from the right as the time runs out. It sits under
|
|
20280
|
+
* every raised child, and it is the timer's picture, not the timer.
|
|
20281
|
+
*/
|
|
20114
20282
|
.crewlet-toast__progress {
|
|
20115
20283
|
position: absolute;
|
|
20116
|
-
|
|
20117
|
-
|
|
20118
|
-
bottom: 0;
|
|
20119
|
-
height: 2px;
|
|
20284
|
+
inset: 0;
|
|
20285
|
+
z-index: var(--z-index-base);
|
|
20120
20286
|
transform-origin: left center;
|
|
20121
|
-
background: var(--crewlet-toast-
|
|
20287
|
+
background: var(--crewlet-toast-wash);
|
|
20122
20288
|
pointer-events: none;
|
|
20123
20289
|
animation-name: crewlet-toast-drain;
|
|
20124
20290
|
animation-timing-function: linear;
|
|
20125
20291
|
animation-fill-mode: forwards;
|
|
20126
20292
|
}
|
|
20127
20293
|
|
|
20128
|
-
/* Paused by the class rather than by :hover, so the
|
|
20294
|
+
/* Paused by the class rather than by :hover, so the wash and the timer that
|
|
20129
20295
|
actually dismisses are stopped by the same event. */
|
|
20130
20296
|
.crewlet-toast__progress.is-paused {
|
|
20131
20297
|
animation-play-state: paused;
|
|
@@ -20135,7 +20301,6 @@ svg.crewlet-time-window__tick {
|
|
|
20135
20301
|
from {
|
|
20136
20302
|
transform: scaleX(1);
|
|
20137
20303
|
}
|
|
20138
|
-
|
|
20139
20304
|
to {
|
|
20140
20305
|
transform: scaleX(0);
|
|
20141
20306
|
}
|
|
@@ -20161,8 +20326,8 @@ svg.crewlet-time-window__tick {
|
|
|
20161
20326
|
|
|
20162
20327
|
/*
|
|
20163
20328
|
* The strip still arrives and still goes; it just does not slide, and the
|
|
20164
|
-
*
|
|
20165
|
-
*
|
|
20329
|
+
* wash is not drawn. The timer is untouched: a reader who asked for less
|
|
20330
|
+
* motion did not ask to be left with a toast that never leaves.
|
|
20166
20331
|
*/
|
|
20167
20332
|
@media (prefers-reduced-motion: reduce) {
|
|
20168
20333
|
.crewlet-toast {
|