@crewlethq/ui 0.13.0 → 0.14.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 +16 -0
- package/dist/AvatarPicker/index.js +1 -1
- package/dist/CommandPalette/index.js +2 -2
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +5 -5
- package/dist/DateTimePicker/index.js +1 -1
- package/dist/{DateTimePicker-4AZBTODT.css → DateTimePicker-NJ6XH2TE.css} +4 -3
- package/dist/ListInput/index.js +2 -2
- package/dist/Modal/index.js +1 -1
- package/dist/{Modal-3YJ2GG2T.css → Modal-RQAYGG4L.css} +1 -1
- package/dist/OrgTable/index.js +1 -1
- package/dist/Select/index.js +1 -1
- package/dist/{Select-XMZ44RWY.css → Select-2P7AWUE4.css} +32 -6
- package/dist/Switcher/index.js +3 -3
- package/dist/TagsInput/index.js +2 -2
- package/dist/TimeWindowPicker/index.js +2 -2
- package/dist/{TimeWindowPicker-GBF4JDFI.css → TimeWindowPicker-BZ5HHATU.css} +5 -4
- package/dist/Toaster/index.js +1 -1
- package/dist/{Toaster-KZ7YE2HA.css → Toaster-VZKISP2S.css} +80 -87
- package/dist/{chunk-WY2NLRZN.js → chunk-3VVKJ7AZ.js} +1 -1
- package/dist/{chunk-UZPHPW3Z.js → chunk-5IXMLWGW.js} +2 -2
- package/dist/{chunk-JDPAA2JU.js → chunk-AXNQCAFC.js} +1 -1
- package/dist/{chunk-LELD5KPA.js → chunk-CBZSSKH3.js} +5 -5
- package/dist/{chunk-B2CITO6R.js → chunk-IFM63LAG.js} +2 -2
- package/dist/{chunk-XFE5W2I4.js → chunk-IXUU5DLZ.js} +13 -3
- package/dist/{chunk-CF6DTETT.js → chunk-TFMJH2E6.js} +1 -1
- package/dist/{chunk-HKGS67VG.js → chunk-WYQOHFML.js} +1 -1
- package/dist/{chunk-S3IENQ3E.js → chunk-Y6NR7QJ3.js} +2 -2
- package/dist/generated/index.js +27 -27
- package/dist/index.js +27 -27
- package/dist/styles.css +127 -106
- package/package.json +3 -3
- 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
|
@@ -7857,11 +7857,12 @@ body.crewlet-data-table-resizing {
|
|
|
7857
7857
|
}
|
|
7858
7858
|
|
|
7859
7859
|
|
|
7860
|
-
/* DateTimePicker-
|
|
7860
|
+
/* DateTimePicker-NJ6XH2TE.css */
|
|
7861
7861
|
/*
|
|
7862
7862
|
* DateTimePicker: a Select-shaped trigger over a calendar dialog.
|
|
7863
7863
|
*
|
|
7864
|
-
* The trigger borrows the Select's geometry
|
|
7864
|
+
* The trigger borrows the Select's geometry and its button boundary
|
|
7865
|
+
* (--color-border-strong; see Select.css) so a date box and a picker line
|
|
7865
7866
|
* up in the same toolbar; the panel holds the shared CalendarGrid, so the
|
|
7866
7867
|
* month looks and behaves the same here as in every other picker.
|
|
7867
7868
|
*/
|
|
@@ -7877,7 +7878,7 @@ body.crewlet-data-table-resizing {
|
|
|
7877
7878
|
height. */
|
|
7878
7879
|
padding: 0 var(--spacing-2) 0 var(--spacing-3);
|
|
7879
7880
|
background: var(--color-surface-subtle);
|
|
7880
|
-
border: 1px solid var(--color-border-
|
|
7881
|
+
border: 1px solid var(--color-border-strong);
|
|
7881
7882
|
border-radius: var(--radius-md);
|
|
7882
7883
|
color: var(--color-text-primary);
|
|
7883
7884
|
font-family: inherit;
|
|
@@ -7894,7 +7895,7 @@ body.crewlet-data-table-resizing {
|
|
|
7894
7895
|
}
|
|
7895
7896
|
|
|
7896
7897
|
.crewlet-datetime:hover:not(:disabled) {
|
|
7897
|
-
border-color: var(--color-border-hover);
|
|
7898
|
+
border-color: var(--color-border-strong-hover);
|
|
7898
7899
|
}
|
|
7899
7900
|
|
|
7900
7901
|
/*
|
|
@@ -12004,7 +12005,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12004
12005
|
}
|
|
12005
12006
|
|
|
12006
12007
|
|
|
12007
|
-
/* Modal-
|
|
12008
|
+
/* Modal-RQAYGG4L.css */
|
|
12008
12009
|
/*
|
|
12009
12010
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
12010
12011
|
*
|
|
@@ -12296,7 +12297,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12296
12297
|
* padding is only the least it keeps when a title wraps. It was the 16px step
|
|
12297
12298
|
* while the bar was 64px, which a full control step filled exactly; at 52px
|
|
12298
12299
|
* 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,
|
|
12300
|
+
* the head is the bar's height with the control step at every density, 37.12px
|
|
12300
12301
|
* at comfortable included, and with a subtitle under the title.
|
|
12301
12302
|
*
|
|
12302
12303
|
* It used to be the tighter band, 49px with a close control alone, and the
|
|
@@ -15083,7 +15084,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15083
15084
|
}
|
|
15084
15085
|
|
|
15085
15086
|
|
|
15086
|
-
/* Select-
|
|
15087
|
+
/* Select-2P7AWUE4.css */
|
|
15087
15088
|
/*
|
|
15088
15089
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
15089
15090
|
*
|
|
@@ -15093,9 +15094,12 @@ svg.crewlet-datetime__chevron {
|
|
|
15093
15094
|
* into the nearest layer host and drawn with the shared listbox register, so
|
|
15094
15095
|
* a list of options looks the same wherever it is offered from.
|
|
15095
15096
|
*
|
|
15096
|
-
*
|
|
15097
|
-
*
|
|
15098
|
-
*
|
|
15097
|
+
* THE BOUNDARY IS A BUTTON'S, --color-border-strong, the secondary button's
|
|
15098
|
+
* and the date and time-window pickers'. A picker shows its value and its
|
|
15099
|
+
* chevron, and those are what a reader knows it by. --color-border-control,
|
|
15100
|
+
* at 3:1, is for the controls whose outline IS the control (a text box, a
|
|
15101
|
+
* checkbox, a switch; see Input.css): on a picker it drew the one bright box
|
|
15102
|
+
* in a row of buttons and switchers, brighter at rest than under the pointer.
|
|
15099
15103
|
*/
|
|
15100
15104
|
|
|
15101
15105
|
.crewlet-select {
|
|
@@ -15113,7 +15117,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15113
15117
|
width: 100%;
|
|
15114
15118
|
min-height: var(--size-control-md);
|
|
15115
15119
|
background-color: var(--color-surface-subtle);
|
|
15116
|
-
border: 1px solid var(--color-border-
|
|
15120
|
+
border: 1px solid var(--color-border-strong);
|
|
15117
15121
|
border-radius: var(--radius-md);
|
|
15118
15122
|
color: var(--color-text-primary);
|
|
15119
15123
|
/* The boundary is the only thing that moves. The ring is an outline, which
|
|
@@ -15134,7 +15138,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15134
15138
|
}
|
|
15135
15139
|
|
|
15136
15140
|
.crewlet-select:hover {
|
|
15137
|
-
border-color: var(--color-border-hover);
|
|
15141
|
+
border-color: var(--color-border-strong-hover);
|
|
15138
15142
|
}
|
|
15139
15143
|
|
|
15140
15144
|
/*
|
|
@@ -15283,7 +15287,7 @@ svg.crewlet-select__chevron {
|
|
|
15283
15287
|
display: flex;
|
|
15284
15288
|
flex-direction: column;
|
|
15285
15289
|
min-width: 0;
|
|
15286
|
-
max-height: var(--crewlet-select-menu-max-height);
|
|
15290
|
+
max-height: min(var(--crewlet-select-menu-max-height), 60vh);
|
|
15287
15291
|
/*
|
|
15288
15292
|
* THE PANEL IS THE PRODUCT'S SURFACE, on the panel hairline, at the panel
|
|
15289
15293
|
* corner. A list offered from a field is another panel over the one the
|
|
@@ -15310,11 +15314,25 @@ svg.crewlet-select__chevron {
|
|
|
15310
15314
|
position: absolute;
|
|
15311
15315
|
}
|
|
15312
15316
|
|
|
15317
|
+
/*
|
|
15318
|
+
* THE PANEL'S HEIGHT IS THE LIST'S. The shared listbox register caps a list
|
|
15319
|
+
* at min(360px, 60vh) on its own, which inside this panel made
|
|
15320
|
+
* `--crewlet-select-menu-max-height` a promise it could not keep past 360px:
|
|
15321
|
+
* a taller panel drew the same short list and scrolled it. Here the list
|
|
15322
|
+
* fills what the panel allows, and the panel keeps the register's cap on the
|
|
15323
|
+
* window (see `.crewlet-select__menu`).
|
|
15324
|
+
*/
|
|
15313
15325
|
.crewlet-select__list {
|
|
15314
15326
|
flex: 1;
|
|
15315
15327
|
min-height: 0;
|
|
15316
15328
|
}
|
|
15317
15329
|
|
|
15330
|
+
/* Scoped to the panel for the weight, as the option rules below are: the
|
|
15331
|
+
register's cap is one class, and the bundle orders equal weights by hash. */
|
|
15332
|
+
.crewlet-select__menu .crewlet-select__list {
|
|
15333
|
+
max-height: none;
|
|
15334
|
+
}
|
|
15335
|
+
|
|
15318
15336
|
.crewlet-select__group {
|
|
15319
15337
|
display: flex;
|
|
15320
15338
|
flex-direction: column;
|
|
@@ -15376,6 +15394,15 @@ svg.crewlet-select__chevron {
|
|
|
15376
15394
|
color: var(--color-brand-accent-ink);
|
|
15377
15395
|
}
|
|
15378
15396
|
|
|
15397
|
+
/*
|
|
15398
|
+
* AT THE ROW'S END in a list whose rows lead with a mark (see `tickAtEnd`),
|
|
15399
|
+
* so the mark starts at the panel's edge. After a hint it follows the hint,
|
|
15400
|
+
* which already takes the free space; without one it takes it itself.
|
|
15401
|
+
*/
|
|
15402
|
+
.crewlet-select__option-body + .crewlet-select__option-tick--end {
|
|
15403
|
+
margin-left: auto;
|
|
15404
|
+
}
|
|
15405
|
+
|
|
15379
15406
|
.crewlet-select__option-body {
|
|
15380
15407
|
display: flex;
|
|
15381
15408
|
flex-direction: column;
|
|
@@ -19305,12 +19332,13 @@ b.crewlet-switcher__match {
|
|
|
19305
19332
|
}
|
|
19306
19333
|
|
|
19307
19334
|
|
|
19308
|
-
/* TimeWindowPicker-
|
|
19335
|
+
/* TimeWindowPicker-BZ5HHATU.css */
|
|
19309
19336
|
/*
|
|
19310
19337
|
* TimeWindowPicker: one trigger over one panel.
|
|
19311
19338
|
*
|
|
19312
|
-
* The trigger takes the same geometry as a Select and a
|
|
19313
|
-
*
|
|
19339
|
+
* The trigger takes the same geometry and button boundary as a Select and a
|
|
19340
|
+
* DateTimePicker (--color-border-strong; see Select.css), so the three line
|
|
19341
|
+
* up in a filter bar. The panel is a RAIL of named windows beside
|
|
19314
19342
|
* the calendars, rather than two tabs with one of them hidden: the windows a
|
|
19315
19343
|
* reader picks by name are the road, and the absolute range is the turning off
|
|
19316
19344
|
* it, so both are on screen at once and each shows what the other chose.
|
|
@@ -19325,7 +19353,7 @@ b.crewlet-switcher__match {
|
|
|
19325
19353
|
/* The side inset only: see DateTimePicker's own trigger. */
|
|
19326
19354
|
padding: 0 var(--spacing-2) 0 var(--spacing-3);
|
|
19327
19355
|
background: var(--color-surface-subtle);
|
|
19328
|
-
border: 1px solid var(--color-border-
|
|
19356
|
+
border: 1px solid var(--color-border-strong);
|
|
19329
19357
|
border-radius: var(--radius-md);
|
|
19330
19358
|
color: var(--color-text-primary);
|
|
19331
19359
|
font-family: inherit;
|
|
@@ -19342,7 +19370,7 @@ b.crewlet-switcher__match {
|
|
|
19342
19370
|
}
|
|
19343
19371
|
|
|
19344
19372
|
.crewlet-time-window:hover:not(:disabled) {
|
|
19345
|
-
border-color: var(--color-border-hover);
|
|
19373
|
+
border-color: var(--color-border-strong-hover);
|
|
19346
19374
|
}
|
|
19347
19375
|
|
|
19348
19376
|
/*
|
|
@@ -19871,102 +19899,102 @@ svg.crewlet-time-window__tick {
|
|
|
19871
19899
|
}
|
|
19872
19900
|
|
|
19873
19901
|
|
|
19874
|
-
/* Toaster-
|
|
19902
|
+
/* Toaster-VZKISP2S.css */
|
|
19875
19903
|
/*
|
|
19876
|
-
* The toast stack
|
|
19904
|
+
* The toast stack, drawn as the first release drew it (24a60c3): a dark strip
|
|
19905
|
+
* on the page's deepest ground with the large shadow and the rim light, a
|
|
19906
|
+
* 12px corner, the variant said by its mark alone, never a flood of its hue,
|
|
19907
|
+
* and the countdown as a wash behind the words that drains from the right.
|
|
19877
19908
|
*
|
|
19878
|
-
*
|
|
19879
|
-
*
|
|
19880
|
-
*
|
|
19909
|
+
* IN TOKENS RATHER THAN ITS LITERALS, so it follows every theme. The strip is
|
|
19910
|
+
* --color-surface-background: the first release mixed the panel with black,
|
|
19911
|
+
* which read as a dark bar on a light page, where its words measured 1.56:1.
|
|
19912
|
+
* The marks are the feedback INK steps, the soft moss, amber and rose it drew,
|
|
19913
|
+
* measured as text on every theme. The washes are the feedback SOFT steps.
|
|
19881
19914
|
*
|
|
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.
|
|
19915
|
+
* The wash is decoration: the dismissal is a timer, so a reader who asks for
|
|
19916
|
+
* reduced motion gets no wash and still gets the toast taken away.
|
|
19888
19917
|
*/
|
|
19889
|
-
|
|
19890
19918
|
.crewlet-toaster {
|
|
19891
19919
|
position: fixed;
|
|
19892
19920
|
z-index: var(--z-index-toast);
|
|
19893
19921
|
display: flex;
|
|
19894
19922
|
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)));
|
|
19923
|
+
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
19924
|
+
width: min(380px, calc(100vw - 2 * var(--spacing-6)));
|
|
19900
19925
|
/* The stack itself takes no presses, so the screen under it stays live
|
|
19901
19926
|
while nothing is up; each toast takes them back for its own strip. */
|
|
19902
19927
|
pointer-events: none;
|
|
19903
19928
|
}
|
|
19904
19929
|
|
|
19905
19930
|
.crewlet-toaster--bottom-right {
|
|
19906
|
-
bottom: var(--spacing-
|
|
19907
|
-
right: var(--spacing-
|
|
19931
|
+
bottom: var(--spacing-6);
|
|
19932
|
+
right: var(--spacing-6);
|
|
19908
19933
|
}
|
|
19909
19934
|
|
|
19910
19935
|
.crewlet-toaster--top-right {
|
|
19911
|
-
top: var(--spacing-
|
|
19912
|
-
right: var(--spacing-
|
|
19936
|
+
top: var(--spacing-6);
|
|
19937
|
+
right: var(--spacing-6);
|
|
19913
19938
|
}
|
|
19914
19939
|
|
|
19915
19940
|
.crewlet-toaster--bottom-left {
|
|
19916
|
-
bottom: var(--spacing-
|
|
19917
|
-
left: var(--spacing-
|
|
19941
|
+
bottom: var(--spacing-6);
|
|
19942
|
+
left: var(--spacing-6);
|
|
19918
19943
|
}
|
|
19919
19944
|
|
|
19920
19945
|
.crewlet-toaster--top-left {
|
|
19921
|
-
top: var(--spacing-
|
|
19922
|
-
left: var(--spacing-
|
|
19946
|
+
top: var(--spacing-6);
|
|
19947
|
+
left: var(--spacing-6);
|
|
19923
19948
|
}
|
|
19924
19949
|
|
|
19925
19950
|
.crewlet-toast {
|
|
19951
|
+
/* The mark and the wash are the two places a variant spends its hue. */
|
|
19926
19952
|
--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);
|
|
19953
|
+
--crewlet-toast-wash: var(--color-surface-pressed);
|
|
19954
|
+
/* 14px at the normal density, and the corner the dismiss sits in beside it. */
|
|
19955
|
+
--crewlet-toast-inset: calc(var(--spacing-3) + var(--spacing-1) / 2);
|
|
19934
19956
|
|
|
19935
19957
|
pointer-events: auto;
|
|
19936
19958
|
position: relative;
|
|
19937
19959
|
display: flex;
|
|
19938
19960
|
align-items: flex-start;
|
|
19939
|
-
|
|
19940
|
-
|
|
19941
|
-
|
|
19942
|
-
|
|
19943
|
-
|
|
19944
|
-
|
|
19945
|
-
|
|
19946
|
-
|
|
19947
|
-
|
|
19948
|
-
box-shadow: var(--shadow-
|
|
19949
|
-
color: var(--
|
|
19961
|
+
gap: var(--spacing-3);
|
|
19962
|
+
padding: var(--crewlet-toast-inset) calc(var(--spacing-7) + var(--spacing-1) * 1.5) var(--crewlet-toast-inset)
|
|
19963
|
+
var(--crewlet-toast-inset);
|
|
19964
|
+
background: var(--color-surface-background);
|
|
19965
|
+
border: 1px solid var(--color-border-default);
|
|
19966
|
+
border-radius: var(--radius-lg);
|
|
19967
|
+
/* The large shadow and the rim light, both from tokens that are a shadow in
|
|
19968
|
+
every palette: --shadow-hairline is `none` in light, and a `none` inside a
|
|
19969
|
+
list drops the whole declaration. */
|
|
19970
|
+
box-shadow: var(--shadow-xl), var(--shadow-rim-lit);
|
|
19971
|
+
color: var(--color-text-primary);
|
|
19950
19972
|
font-family: var(--font-family-sans);
|
|
19951
19973
|
font-size: var(--font-size-compact);
|
|
19952
|
-
line-height: var(--font-line-height-
|
|
19974
|
+
line-height: var(--font-line-height-body);
|
|
19953
19975
|
letter-spacing: var(--font-letter-spacing-snug);
|
|
19954
19976
|
overflow: hidden;
|
|
19955
|
-
animation: crewlet-toast-in var(--motion-duration-
|
|
19977
|
+
animation: crewlet-toast-in var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
19956
19978
|
}
|
|
19957
19979
|
|
|
19958
19980
|
@keyframes crewlet-toast-in {
|
|
19959
19981
|
from {
|
|
19960
19982
|
opacity: 0;
|
|
19961
|
-
transform:
|
|
19983
|
+
transform: translateX(var(--spacing-4));
|
|
19962
19984
|
}
|
|
19963
|
-
|
|
19964
19985
|
to {
|
|
19965
19986
|
opacity: 1;
|
|
19966
|
-
transform:
|
|
19987
|
+
transform: translateX(0);
|
|
19967
19988
|
}
|
|
19968
19989
|
}
|
|
19969
19990
|
|
|
19991
|
+
/* The words sit over the wash: every child is raised, and the dismiss and the
|
|
19992
|
+
wash below take their own places back. */
|
|
19993
|
+
.crewlet-toast > * {
|
|
19994
|
+
position: relative;
|
|
19995
|
+
z-index: var(--z-index-raised);
|
|
19996
|
+
}
|
|
19997
|
+
|
|
19970
19998
|
.crewlet-toast__icon {
|
|
19971
19999
|
display: inline-flex;
|
|
19972
20000
|
flex: none;
|
|
@@ -19974,34 +20002,26 @@ svg.crewlet-time-window__tick {
|
|
|
19974
20002
|
color: var(--crewlet-toast-mark);
|
|
19975
20003
|
}
|
|
19976
20004
|
|
|
19977
|
-
/*
|
|
19978
|
-
|
|
19979
|
-
|
|
20005
|
+
/*
|
|
20006
|
+
* A VARIANT IS ITS MARK AND ITS WASH. The words stay in the strip's own inks
|
|
20007
|
+
* and the edge stays the hairline, so a failure is a rose mark on a faint rose
|
|
20008
|
+
* wash rather than a red strip: the outcome is said by the glyph and the title,
|
|
20009
|
+
* and the sentence beside them is read in the ink every sentence is read in.
|
|
20010
|
+
* Information is the neutral mark on the neutral wash.
|
|
20011
|
+
*/
|
|
19980
20012
|
.crewlet-toast--success {
|
|
19981
|
-
--crewlet-toast-mark: var(--color-feedback-success);
|
|
20013
|
+
--crewlet-toast-mark: var(--color-feedback-success-ink);
|
|
20014
|
+
--crewlet-toast-wash: var(--color-feedback-success-soft);
|
|
19982
20015
|
}
|
|
19983
20016
|
|
|
19984
20017
|
.crewlet-toast--warning {
|
|
19985
|
-
--crewlet-toast-mark: var(--color-feedback-warning);
|
|
20018
|
+
--crewlet-toast-mark: var(--color-feedback-warning-ink);
|
|
20019
|
+
--crewlet-toast-wash: var(--color-feedback-warning-soft);
|
|
19986
20020
|
}
|
|
19987
20021
|
|
|
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
20022
|
.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);
|
|
20023
|
+
--crewlet-toast-mark: var(--color-feedback-danger-ink);
|
|
20024
|
+
--crewlet-toast-wash: var(--color-feedback-danger-soft);
|
|
20005
20025
|
}
|
|
20006
20026
|
|
|
20007
20027
|
/* A usage limit notice is the application's own variant: it paints the glyph
|
|
@@ -20023,12 +20043,12 @@ svg.crewlet-time-window__tick {
|
|
|
20023
20043
|
}
|
|
20024
20044
|
|
|
20025
20045
|
.crewlet-toast__message {
|
|
20026
|
-
color: var(--
|
|
20046
|
+
color: var(--color-text-secondary);
|
|
20027
20047
|
overflow-wrap: anywhere;
|
|
20028
20048
|
}
|
|
20029
20049
|
|
|
20030
20050
|
.crewlet-toast__actions {
|
|
20031
|
-
margin-top: var(--spacing-2);
|
|
20051
|
+
margin-top: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
20032
20052
|
display: flex;
|
|
20033
20053
|
gap: var(--spacing-2);
|
|
20034
20054
|
}
|
|
@@ -20060,6 +20080,7 @@ svg.crewlet-time-window__tick {
|
|
|
20060
20080
|
border-color: var(--color-brand-accent-hover);
|
|
20061
20081
|
}
|
|
20062
20082
|
|
|
20083
|
+
/* A failure's one filled thing is the way out of it. */
|
|
20063
20084
|
.crewlet-toast--danger .crewlet-toast__action-btn,
|
|
20064
20085
|
.crewlet-toast--danger .crewlet-toast__action-link {
|
|
20065
20086
|
background: var(--color-feedback-danger);
|
|
@@ -20081,8 +20102,9 @@ svg.crewlet-time-window__tick {
|
|
|
20081
20102
|
}
|
|
20082
20103
|
|
|
20083
20104
|
/* The dismiss sits absolute in the corner so a multi-line message flows
|
|
20084
|
-
under it rather than around it
|
|
20085
|
-
|
|
20105
|
+
under it rather than around it, and after the body in the document, so it
|
|
20106
|
+
is drawn over the words at the same raised step. 24px square: the smallest
|
|
20107
|
+
target WCAG 2.2 accepts. */
|
|
20086
20108
|
.crewlet-toast__dismiss {
|
|
20087
20109
|
position: absolute;
|
|
20088
20110
|
top: var(--spacing-2);
|
|
@@ -20096,10 +20118,7 @@ svg.crewlet-time-window__tick {
|
|
|
20096
20118
|
border: 0;
|
|
20097
20119
|
border-radius: var(--radius-sm);
|
|
20098
20120
|
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);
|
|
20121
|
+
color: var(--color-text-tertiary);
|
|
20103
20122
|
cursor: pointer;
|
|
20104
20123
|
transition:
|
|
20105
20124
|
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
@@ -20107,25 +20126,28 @@ svg.crewlet-time-window__tick {
|
|
|
20107
20126
|
}
|
|
20108
20127
|
|
|
20109
20128
|
.crewlet-toast__dismiss:hover {
|
|
20110
|
-
background: var(--color-surface-
|
|
20111
|
-
color: var(--
|
|
20129
|
+
background: var(--color-surface-elevated);
|
|
20130
|
+
color: var(--color-text-primary);
|
|
20112
20131
|
}
|
|
20113
20132
|
|
|
20133
|
+
/*
|
|
20134
|
+
* THE COUNTDOWN IS A WASH BEHIND THE WORDS, the variant's soft step over the
|
|
20135
|
+
* whole strip, draining from the right as the time runs out. It sits under
|
|
20136
|
+
* every raised child, and it is the timer's picture, not the timer.
|
|
20137
|
+
*/
|
|
20114
20138
|
.crewlet-toast__progress {
|
|
20115
20139
|
position: absolute;
|
|
20116
|
-
|
|
20117
|
-
|
|
20118
|
-
bottom: 0;
|
|
20119
|
-
height: 2px;
|
|
20140
|
+
inset: 0;
|
|
20141
|
+
z-index: var(--z-index-base);
|
|
20120
20142
|
transform-origin: left center;
|
|
20121
|
-
background: var(--crewlet-toast-
|
|
20143
|
+
background: var(--crewlet-toast-wash);
|
|
20122
20144
|
pointer-events: none;
|
|
20123
20145
|
animation-name: crewlet-toast-drain;
|
|
20124
20146
|
animation-timing-function: linear;
|
|
20125
20147
|
animation-fill-mode: forwards;
|
|
20126
20148
|
}
|
|
20127
20149
|
|
|
20128
|
-
/* Paused by the class rather than by :hover, so the
|
|
20150
|
+
/* Paused by the class rather than by :hover, so the wash and the timer that
|
|
20129
20151
|
actually dismisses are stopped by the same event. */
|
|
20130
20152
|
.crewlet-toast__progress.is-paused {
|
|
20131
20153
|
animation-play-state: paused;
|
|
@@ -20135,7 +20157,6 @@ svg.crewlet-time-window__tick {
|
|
|
20135
20157
|
from {
|
|
20136
20158
|
transform: scaleX(1);
|
|
20137
20159
|
}
|
|
20138
|
-
|
|
20139
20160
|
to {
|
|
20140
20161
|
transform: scaleX(0);
|
|
20141
20162
|
}
|
|
@@ -20161,8 +20182,8 @@ svg.crewlet-time-window__tick {
|
|
|
20161
20182
|
|
|
20162
20183
|
/*
|
|
20163
20184
|
* The strip still arrives and still goes; it just does not slide, and the
|
|
20164
|
-
*
|
|
20165
|
-
*
|
|
20185
|
+
* wash is not drawn. The timer is untouched: a reader who asked for less
|
|
20186
|
+
* motion did not ask to be left with a toast that never leaves.
|
|
20166
20187
|
*/
|
|
20167
20188
|
@media (prefers-reduced-motion: reduce) {
|
|
20168
20189
|
.crewlet-toast {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"clean": "rm -rf dist src/generated"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@crewlethq/icons": "0.
|
|
46
|
-
"@crewlethq/tokens": "0.
|
|
45
|
+
"@crewlethq/icons": "0.14.0",
|
|
46
|
+
"@crewlethq/tokens": "0.14.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"react": ">=18",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Kbd } from './chunk-SMBKXWML.js';
|
|
2
2
|
import { FormField, Textarea, Input } from './chunk-FTEJPHBI.js';
|
|
3
|
-
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
4
3
|
import { announce } from './chunk-RSAQOKH3.js';
|
|
4
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
5
5
|
import { isComposing } from './chunk-R25RGPUB.js';
|
|
6
6
|
import './ListInput-O7LJKOIG.css';
|
|
7
7
|
import { useState, useRef, useLayoutEffect } from 'react';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Tag } from './chunk-LOECRMHA.js';
|
|
2
2
|
import { useListbox } from './chunk-F73MC7EZ.js';
|
|
3
|
-
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
4
3
|
import { announce } from './chunk-RSAQOKH3.js';
|
|
4
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
5
5
|
import { isComposing } from './chunk-R25RGPUB.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
7
|
import './TagsInput-P2HS5QL4.css';
|