@crewlethq/ui 0.38.0 → 0.39.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 +36 -2
- package/dist/AgentHandoffPanel/index.js +3 -3
- package/dist/ArtifactBar/index.js +1 -1
- package/dist/{ArtifactBar-FWPBBKQ5.css → ArtifactBar-6PGWGKN2.css} +13 -1
- package/dist/ArtifactCard/index.js +2 -2
- package/dist/AuthLayout/index.js +2 -2
- package/dist/Card/Card.d.ts +14 -2
- package/dist/Card/index.js +1 -1
- package/dist/{Card-G2ZGT5Z6.css → Card-JR2UPQH7.css} +20 -0
- package/dist/CatalogTile/CatalogTile.d.ts +47 -0
- package/dist/CatalogTile/index.d.ts +3 -0
- package/dist/CatalogTile/index.js +3 -0
- package/dist/CatalogTile-TGR2ZZVQ.css +131 -0
- package/dist/CodeBlock/index.js +1 -1
- package/dist/{CodeBlock-GYNJ2HI6.css → CodeBlock-N5ETJF24.css} +13 -0
- package/dist/CommandPalette/index.js +3 -3
- package/dist/CommentThread/index.js +3 -3
- package/dist/Composer/index.js +2 -2
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +4 -4
- package/dist/DatasetSource/DatasetSource.d.ts +7 -1
- package/dist/DatasetSource/index.js +1 -1
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/List/List.d.ts +8 -0
- package/dist/List/index.js +1 -1
- package/dist/{List-MYJIV6MP.css → List-YHLIZFK4.css} +46 -0
- package/dist/ListInput/ListInput.d.ts +9 -1
- package/dist/ListInput/index.js +2 -2
- package/dist/Modal/index.js +1 -1
- package/dist/{Modal-7MWRCWAI.css → Modal-TOEWHDCQ.css} +5 -0
- package/dist/ObjectHeader/index.js +1 -1
- package/dist/{ObjectHeader-D7GU7QNI.css → ObjectHeader-ZOS22FKX.css} +7 -8
- package/dist/SettingsTable/SettingsTable.d.ts +66 -0
- package/dist/SettingsTable/index.d.ts +3 -0
- package/dist/SettingsTable/index.js +3 -0
- package/dist/SettingsTable-6DUFAFXG.css +160 -0
- package/dist/ShareDialog/index.js +2 -2
- package/dist/SheetColumnEditor/index.js +3 -3
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-4T7TMWMN.css → StatCard-HAA3F5GX.css} +8 -3
- package/dist/StatGroup/index.js +1 -1
- package/dist/{StatGroup-DOFHX5QJ.css → StatGroup-ZMW7VQWP.css} +27 -0
- package/dist/Switcher/index.js +2 -2
- package/dist/TileGrid/TileGrid.d.ts +33 -0
- package/dist/TileGrid/index.d.ts +3 -0
- package/dist/TileGrid/index.js +2 -0
- package/dist/TileGrid-I6LNYD2H.css +52 -0
- package/dist/{chunk-XBURIXHO.js → chunk-3TXY3PJZ.js} +1 -1
- package/dist/chunk-4RKTZSEW.js +64 -0
- package/dist/{chunk-A23KDROH.js → chunk-FXBGEANQ.js} +1 -1
- package/dist/{chunk-IPWU6ERC.js → chunk-HQJ24WPM.js} +4 -2
- package/dist/{chunk-SVGARBDY.js → chunk-IAGYPTEJ.js} +2 -2
- package/dist/{chunk-ZK3VYY7L.js → chunk-INHXF2CL.js} +24 -11
- package/dist/{chunk-6NNY5WBF.js → chunk-JKAGN4V4.js} +1 -1
- package/dist/{chunk-UWRBD2YO.js → chunk-KNHUBHFX.js} +1 -1
- package/dist/{chunk-PT6WKXKW.js → chunk-MMPKN7WV.js} +1 -1
- package/dist/{chunk-NRBAXRWE.js → chunk-N3TFYBN3.js} +1 -1
- package/dist/chunk-NNTO3TNC.js +9 -0
- package/dist/{chunk-DS2C73RJ.js → chunk-NZWX27J7.js} +2 -2
- package/dist/{chunk-VGE3G3T4.js → chunk-ODOJJGXH.js} +1 -1
- package/dist/{chunk-BT5H2THK.js → chunk-OUD75UB2.js} +1 -1
- package/dist/{chunk-YQG4PZGC.js → chunk-QRKT4XTT.js} +2 -2
- package/dist/{chunk-BJI3RFXG.js → chunk-S4DREXGM.js} +1 -1
- package/dist/{chunk-GDDE4UM7.js → chunk-SEC2GR2V.js} +1 -1
- package/dist/{chunk-S27UBCVX.js → chunk-TZYFTC4M.js} +1 -1
- package/dist/{chunk-OTCXRJ7D.js → chunk-U2XAJONO.js} +1 -1
- package/dist/{chunk-3ZUINC7C.js → chunk-WYYCPV46.js} +6 -1
- package/dist/{chunk-PAQXOP2M.js → chunk-XGBUUQDU.js} +2 -2
- package/dist/chunk-XNXK5MA4.js +48 -0
- package/dist/{chunk-XO7PUL4F.js → chunk-YPTTSJPM.js} +1 -1
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.js +60 -57
- package/dist/index.js +60 -57
- package/dist/styles.css +499 -20
- package/package.json +3 -3
- package/dist/{chunk-4L2BWSHR.js → chunk-F3WZ5AKM.js} +1 -1
- package/dist/{chunk-ETVEGR2Y.js → chunk-ISA2O2BK.js} +1 -1
- /package/dist/{chunk-4QQ3MND5.js → chunk-QRLIWCLX.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -2291,7 +2291,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2291
2291
|
}
|
|
2292
2292
|
|
|
2293
2293
|
|
|
2294
|
-
/* ArtifactBar-
|
|
2294
|
+
/* ArtifactBar-6PGWGKN2.css */
|
|
2295
2295
|
/*
|
|
2296
2296
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2297
2297
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2323,7 +2323,12 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2323
2323
|
its place, and at a row's height of its own the line under it jumped by
|
|
2324
2324
|
three pixels between the gallery and the artifact opened from it. */
|
|
2325
2325
|
height: calc(var(--size-shell-topbar) - 1px);
|
|
2326
|
-
|
|
2326
|
+
/* THE SHELL TOP BAR'S INSET, the scroller's gutter at its end included: the
|
|
2327
|
+
bar stands in that bar's place, and at a 12px inset of its own a create
|
|
2328
|
+
page's controls ended 19px past the content under them, where every other
|
|
2329
|
+
page's end over it. The same two steps as the top bar, 20px wide and 16px
|
|
2330
|
+
under the shell's breakpoint (below). */
|
|
2331
|
+
padding: 0 calc(var(--spacing-5) + var(--crewlet-app-shell-gutter, 0px)) 0 var(--spacing-5);
|
|
2327
2332
|
min-width: 0;
|
|
2328
2333
|
}
|
|
2329
2334
|
|
|
@@ -2708,6 +2713,13 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2708
2713
|
}
|
|
2709
2714
|
}
|
|
2710
2715
|
|
|
2716
|
+
/* The shell's breakpoint, where its top bar and content take 16px. */
|
|
2717
|
+
@media (width < 1024px) {
|
|
2718
|
+
.crewlet-artifact-bar__row {
|
|
2719
|
+
padding: 0 calc(var(--spacing-4) + var(--crewlet-app-shell-gutter, 0px)) 0 var(--spacing-4);
|
|
2720
|
+
}
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2711
2723
|
|
|
2712
2724
|
/* ArtifactCard-OGTMO2KI.css */
|
|
2713
2725
|
/*
|
|
@@ -6266,7 +6278,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6266
6278
|
}
|
|
6267
6279
|
|
|
6268
6280
|
|
|
6269
|
-
/* Card-
|
|
6281
|
+
/* Card-JR2UPQH7.css */
|
|
6270
6282
|
/*
|
|
6271
6283
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
6272
6284
|
* control.
|
|
@@ -6764,6 +6776,26 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6764
6776
|
}
|
|
6765
6777
|
}
|
|
6766
6778
|
|
|
6779
|
+
/*
|
|
6780
|
+
* STACKED, ASKED FOR: the subtitle under the title at every width, the shape
|
|
6781
|
+
* the narrow step above draws, for a row of cards of different widths whose
|
|
6782
|
+
* heads have to stand at one height rather than one inline and one stacked.
|
|
6783
|
+
*/
|
|
6784
|
+
.crewlet-card__header--stacked {
|
|
6785
|
+
flex-wrap: wrap;
|
|
6786
|
+
row-gap: var(--spacing-1);
|
|
6787
|
+
}
|
|
6788
|
+
|
|
6789
|
+
.crewlet-card__header--stacked > .crewlet-card__header-main {
|
|
6790
|
+
flex: 1 1 0;
|
|
6791
|
+
}
|
|
6792
|
+
|
|
6793
|
+
.crewlet-card__header--stacked > .crewlet-card__subtitle {
|
|
6794
|
+
order: 1;
|
|
6795
|
+
flex: 1 1 100%;
|
|
6796
|
+
white-space: normal;
|
|
6797
|
+
}
|
|
6798
|
+
|
|
6767
6799
|
.crewlet-card__description {
|
|
6768
6800
|
margin: 0;
|
|
6769
6801
|
font-size: var(--font-size-compact);
|
|
@@ -6778,6 +6810,140 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6778
6810
|
}
|
|
6779
6811
|
|
|
6780
6812
|
|
|
6813
|
+
/* CatalogTile-TGR2ZZVQ.css */
|
|
6814
|
+
/*
|
|
6815
|
+
* CatalogTile: mark, name and state, one sentence, and a foot with a quiet
|
|
6816
|
+
* fact and one action.
|
|
6817
|
+
*
|
|
6818
|
+
* ONE WELL FOR EVERY MARK. A vendor's mark is drawn in the vendor's colours,
|
|
6819
|
+
* so the box it stands in is the one thing a catalogue can hold constant: the
|
|
6820
|
+
* same size, the same raised ground and the same hairline for every tile,
|
|
6821
|
+
* set up or not. A drained mark on a grey box read as a placeholder image
|
|
6822
|
+
* (a white plate on grey is not a logo), so a tile not yet set up says so by
|
|
6823
|
+
* its ground, never by its mark.
|
|
6824
|
+
*/
|
|
6825
|
+
|
|
6826
|
+
.crewlet-catalog-tile {
|
|
6827
|
+
display: flex;
|
|
6828
|
+
flex-direction: column;
|
|
6829
|
+
gap: var(--spacing-3);
|
|
6830
|
+
min-width: 0;
|
|
6831
|
+
padding: var(--spacing-4);
|
|
6832
|
+
background: var(--color-surface-subtle);
|
|
6833
|
+
border: 1px solid var(--color-border-default);
|
|
6834
|
+
border-radius: var(--radius-lg);
|
|
6835
|
+
color: var(--color-text-primary);
|
|
6836
|
+
}
|
|
6837
|
+
|
|
6838
|
+
.crewlet-catalog-tile--quiet {
|
|
6839
|
+
background: var(--color-surface-background);
|
|
6840
|
+
}
|
|
6841
|
+
|
|
6842
|
+
.crewlet-catalog-tile__head {
|
|
6843
|
+
display: flex;
|
|
6844
|
+
align-items: center;
|
|
6845
|
+
gap: var(--spacing-3);
|
|
6846
|
+
min-width: 0;
|
|
6847
|
+
}
|
|
6848
|
+
|
|
6849
|
+
.crewlet-catalog-tile__mark {
|
|
6850
|
+
display: inline-flex;
|
|
6851
|
+
flex: none;
|
|
6852
|
+
align-items: center;
|
|
6853
|
+
justify-content: center;
|
|
6854
|
+
width: var(--size-row-lg);
|
|
6855
|
+
height: var(--size-row-lg);
|
|
6856
|
+
border-radius: var(--radius-md);
|
|
6857
|
+
background: var(--color-surface-elevated);
|
|
6858
|
+
border: 1px solid var(--color-border-default);
|
|
6859
|
+
color: var(--color-text-primary);
|
|
6860
|
+
}
|
|
6861
|
+
|
|
6862
|
+
/* The name, and under it the state when there is one; centred on the mark
|
|
6863
|
+
either way, so a tile with no state is not a tile with a hole in it. */
|
|
6864
|
+
.crewlet-catalog-tile__title {
|
|
6865
|
+
display: flex;
|
|
6866
|
+
flex-direction: column;
|
|
6867
|
+
align-items: flex-start;
|
|
6868
|
+
justify-content: center;
|
|
6869
|
+
gap: var(--spacing-1);
|
|
6870
|
+
min-width: 0;
|
|
6871
|
+
}
|
|
6872
|
+
|
|
6873
|
+
.crewlet-catalog-tile__name {
|
|
6874
|
+
margin: 0;
|
|
6875
|
+
font-family: var(--font-family-sans);
|
|
6876
|
+
font-size: var(--font-size-sm);
|
|
6877
|
+
font-weight: var(--font-weight-semibold);
|
|
6878
|
+
line-height: var(--font-line-height-snug);
|
|
6879
|
+
color: var(--color-text-primary);
|
|
6880
|
+
overflow-wrap: anywhere;
|
|
6881
|
+
}
|
|
6882
|
+
|
|
6883
|
+
.crewlet-catalog-tile__status {
|
|
6884
|
+
display: inline-flex;
|
|
6885
|
+
}
|
|
6886
|
+
|
|
6887
|
+
.crewlet-catalog-tile__description {
|
|
6888
|
+
flex: 1;
|
|
6889
|
+
margin: 0;
|
|
6890
|
+
/* Two lines reserved, so a tile saying what it is for and one saying what
|
|
6891
|
+
is owed keep their feet on one line in a row. */
|
|
6892
|
+
min-height: calc(2em * var(--font-line-height-body));
|
|
6893
|
+
font-size: var(--font-size-compact);
|
|
6894
|
+
line-height: var(--font-line-height-body);
|
|
6895
|
+
color: var(--color-text-secondary);
|
|
6896
|
+
}
|
|
6897
|
+
|
|
6898
|
+
.crewlet-catalog-tile__foot {
|
|
6899
|
+
display: flex;
|
|
6900
|
+
align-items: center;
|
|
6901
|
+
gap: var(--spacing-2);
|
|
6902
|
+
/* A SMALL CONTROL'S HEIGHT OF CONTENT, under the rule and the padding: a
|
|
6903
|
+
foot holding only a fact stands as tall as one holding a button, so the
|
|
6904
|
+
rules of every foot in a row sit on one line. Measured on the content
|
|
6905
|
+
box, since under border-box sizing the padding spent the floor and a
|
|
6906
|
+
fact-only foot stood 8px shorter. */
|
|
6907
|
+
box-sizing: content-box;
|
|
6908
|
+
min-height: var(--size-control-sm);
|
|
6909
|
+
padding-top: var(--spacing-3);
|
|
6910
|
+
border-top: 1px solid var(--color-border-default);
|
|
6911
|
+
}
|
|
6912
|
+
|
|
6913
|
+
.crewlet-catalog-tile__meta {
|
|
6914
|
+
flex: 1;
|
|
6915
|
+
min-width: 0;
|
|
6916
|
+
overflow: hidden;
|
|
6917
|
+
text-overflow: ellipsis;
|
|
6918
|
+
white-space: nowrap;
|
|
6919
|
+
font-size: var(--font-size-xs);
|
|
6920
|
+
color: var(--color-text-tertiary);
|
|
6921
|
+
}
|
|
6922
|
+
|
|
6923
|
+
.crewlet-catalog-tile__action {
|
|
6924
|
+
display: inline-flex;
|
|
6925
|
+
flex: none;
|
|
6926
|
+
}
|
|
6927
|
+
|
|
6928
|
+
/*
|
|
6929
|
+
* ONE TILE A ROW RESERVES NOTHING. The two reserved lines exist to keep the
|
|
6930
|
+
* feet of tiles side by side on one line; a grid folded to one track has no
|
|
6931
|
+
* neighbours to line up with, and on a phone the reserve was a blank line in
|
|
6932
|
+
* every short tile.
|
|
6933
|
+
*/
|
|
6934
|
+
@container crewlet-tile-grid (width < 40rem) {
|
|
6935
|
+
.crewlet-tile-grid[data-columns='3'] .crewlet-catalog-tile__description {
|
|
6936
|
+
min-height: 0;
|
|
6937
|
+
}
|
|
6938
|
+
}
|
|
6939
|
+
|
|
6940
|
+
@container crewlet-tile-grid (width < 28rem) {
|
|
6941
|
+
.crewlet-tile-grid .crewlet-catalog-tile__description {
|
|
6942
|
+
min-height: 0;
|
|
6943
|
+
}
|
|
6944
|
+
}
|
|
6945
|
+
|
|
6946
|
+
|
|
6781
6947
|
/* ChangeMark-3VMTW7MT.css */
|
|
6782
6948
|
/*
|
|
6783
6949
|
* A change mark (ChangeMark.tsx): a notch in the top end corner of whatever
|
|
@@ -8340,7 +8506,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8340
8506
|
}
|
|
8341
8507
|
|
|
8342
8508
|
|
|
8343
|
-
/* CodeBlock-
|
|
8509
|
+
/* CodeBlock-N5ETJF24.css */
|
|
8344
8510
|
/*
|
|
8345
8511
|
* CodeBlock, a monospace command, config or record surface. One step off the
|
|
8346
8512
|
* page, with an optional header carrying a filename and the copy control.
|
|
@@ -8359,6 +8525,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8359
8525
|
min-width: 0;
|
|
8360
8526
|
}
|
|
8361
8527
|
|
|
8528
|
+
/*
|
|
8529
|
+
* A BLOCK THAT IS A CARD'S CONTENT IS THAT CARD'S SURFACE. Placed straight in
|
|
8530
|
+
* a card (with `padding="none"`), it gives up its own edge, corner and ground,
|
|
8531
|
+
* so the card's head rule is the only line over the code and there is no box
|
|
8532
|
+
* inside a box. In a padded body it stays a well, which is what tells code
|
|
8533
|
+
* from the prose beside it.
|
|
8534
|
+
*/
|
|
8535
|
+
.crewlet-card > .crewlet-codeblock {
|
|
8536
|
+
border: 0;
|
|
8537
|
+
border-radius: var(--radius-none);
|
|
8538
|
+
background: transparent;
|
|
8539
|
+
}
|
|
8540
|
+
|
|
8362
8541
|
.crewlet-codeblock__header {
|
|
8363
8542
|
display: flex;
|
|
8364
8543
|
align-items: center;
|
|
@@ -16557,7 +16736,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16557
16736
|
}
|
|
16558
16737
|
|
|
16559
16738
|
|
|
16560
|
-
/* List-
|
|
16739
|
+
/* List-YHLIZFK4.css */
|
|
16561
16740
|
/*
|
|
16562
16741
|
* The non-tabular list. One row recipe, four framings.
|
|
16563
16742
|
*
|
|
@@ -16680,6 +16859,52 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16680
16859
|
padding-inline: 0;
|
|
16681
16860
|
}
|
|
16682
16861
|
|
|
16862
|
+
/*
|
|
16863
|
+
* NUMBERED AND DIVIDED: the divided list's hairlines, with the number in a
|
|
16864
|
+
* column of its own rather than in the margin, so a statement that runs to a
|
|
16865
|
+
* second line wraps under its own first word and not under its number. The
|
|
16866
|
+
* row grows with its text (no row height), at the body's leading, and the
|
|
16867
|
+
* number stands on the first line's baseline.
|
|
16868
|
+
*
|
|
16869
|
+
* The number is the list's counter, drawn by the row. The `ol` already
|
|
16870
|
+
* announces each item's position, so the drawn figure is given empty
|
|
16871
|
+
* alternative text and is not read a second time.
|
|
16872
|
+
*/
|
|
16873
|
+
.crewlet-list--numbered-divided {
|
|
16874
|
+
counter-reset: crewlet-list-item;
|
|
16875
|
+
}
|
|
16876
|
+
|
|
16877
|
+
.crewlet-list--numbered-divided .crewlet-list__item {
|
|
16878
|
+
counter-increment: crewlet-list-item;
|
|
16879
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
16880
|
+
}
|
|
16881
|
+
|
|
16882
|
+
.crewlet-list--numbered-divided .crewlet-list__item:last-child {
|
|
16883
|
+
border-bottom: none;
|
|
16884
|
+
}
|
|
16885
|
+
|
|
16886
|
+
.crewlet-list--numbered-divided .crewlet-list__row {
|
|
16887
|
+
align-items: baseline;
|
|
16888
|
+
min-height: 0;
|
|
16889
|
+
/* At a card's own inset, since a card is where these stand: the numbers
|
|
16890
|
+
line up under the card head's glyph rather than 4px left of it. */
|
|
16891
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
16892
|
+
border-radius: 0;
|
|
16893
|
+
line-height: var(--font-line-height-body);
|
|
16894
|
+
}
|
|
16895
|
+
|
|
16896
|
+
.crewlet-list--numbered-divided .crewlet-list__row::before {
|
|
16897
|
+
content: counter(crewlet-list-item);
|
|
16898
|
+
content: counter(crewlet-list-item) / '';
|
|
16899
|
+
flex: none;
|
|
16900
|
+
min-width: 2ch;
|
|
16901
|
+
text-align: end;
|
|
16902
|
+
font-size: var(--font-size-xs);
|
|
16903
|
+
font-weight: var(--font-weight-medium);
|
|
16904
|
+
font-variant-numeric: tabular-nums;
|
|
16905
|
+
color: var(--color-text-tertiary);
|
|
16906
|
+
}
|
|
16907
|
+
|
|
16683
16908
|
/* ---- States ------------------------------------------------------------ */
|
|
16684
16909
|
|
|
16685
16910
|
/*
|
|
@@ -17876,7 +18101,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17876
18101
|
}
|
|
17877
18102
|
|
|
17878
18103
|
|
|
17879
|
-
/* Modal-
|
|
18104
|
+
/* Modal-TOEWHDCQ.css */
|
|
17880
18105
|
/*
|
|
17881
18106
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
17882
18107
|
*
|
|
@@ -18258,6 +18483,11 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18258
18483
|
*/
|
|
18259
18484
|
.crewlet-modal__title {
|
|
18260
18485
|
margin: 0;
|
|
18486
|
+
/* The text face at its own tracking, never the display face every heading
|
|
18487
|
+
element takes from the baseline: the title is an h1 for the outline, at
|
|
18488
|
+
the dialog's own register. */
|
|
18489
|
+
font-family: var(--font-family-sans);
|
|
18490
|
+
letter-spacing: var(--font-letter-spacing-normal);
|
|
18261
18491
|
font-size: var(--font-size-sm);
|
|
18262
18492
|
font-weight: var(--font-weight-semibold);
|
|
18263
18493
|
line-height: var(--font-line-height-tight);
|
|
@@ -18610,9 +18840,14 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18610
18840
|
}
|
|
18611
18841
|
|
|
18612
18842
|
|
|
18613
|
-
/* ObjectHeader-
|
|
18843
|
+
/* ObjectHeader-ZOS22FKX.css */
|
|
18614
18844
|
/*
|
|
18615
18845
|
* The header of an object: its eyebrow, its head row and its fact line.
|
|
18846
|
+
*
|
|
18847
|
+
* SENTENCE CASE, both the eyebrow and the fact labels, as `StatCard`'s label
|
|
18848
|
+
* is: the uppercase, tracked-open micro-caps are a table's column head, and
|
|
18849
|
+
* over an object's name ("UNIT", then TYPE, LEAD and SEATS under it) they put
|
|
18850
|
+
* a heading on every fact and read as a form rather than a record.
|
|
18616
18851
|
*/
|
|
18617
18852
|
.crewlet-object-header {
|
|
18618
18853
|
display: flex;
|
|
@@ -18631,9 +18866,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18631
18866
|
align-items: center;
|
|
18632
18867
|
gap: var(--spacing-2);
|
|
18633
18868
|
min-width: 0;
|
|
18634
|
-
font-size: var(--font-size-
|
|
18635
|
-
letter-spacing: var(--font-letter-spacing-wide);
|
|
18636
|
-
text-transform: uppercase;
|
|
18869
|
+
font-size: var(--font-size-xs);
|
|
18637
18870
|
color: var(--color-text-tertiary);
|
|
18638
18871
|
}
|
|
18639
18872
|
|
|
@@ -18648,8 +18881,6 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18648
18881
|
overflow: hidden;
|
|
18649
18882
|
text-overflow: ellipsis;
|
|
18650
18883
|
white-space: nowrap;
|
|
18651
|
-
letter-spacing: normal;
|
|
18652
|
-
text-transform: none;
|
|
18653
18884
|
}
|
|
18654
18885
|
|
|
18655
18886
|
.crewlet-object-header__id--mono {
|
|
@@ -18751,9 +18982,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18751
18982
|
}
|
|
18752
18983
|
|
|
18753
18984
|
.crewlet-fact-line__label {
|
|
18754
|
-
font-size: var(--font-size-
|
|
18755
|
-
letter-spacing: var(--font-letter-spacing-wide);
|
|
18756
|
-
text-transform: uppercase;
|
|
18985
|
+
font-size: var(--font-size-xs);
|
|
18757
18986
|
color: var(--color-text-tertiary);
|
|
18758
18987
|
}
|
|
18759
18988
|
|
|
@@ -22893,6 +23122,169 @@ svg.crewlet-select__chevron {
|
|
|
22893
23122
|
}
|
|
22894
23123
|
|
|
22895
23124
|
|
|
23125
|
+
/* SettingsTable-6DUFAFXG.css */
|
|
23126
|
+
/*
|
|
23127
|
+
* SettingsTable: a read-only table of settings, one row each, on one grid.
|
|
23128
|
+
*
|
|
23129
|
+
* THE TRACKS ARE FRACTIONS OF THE TABLE, so every table of one width shares
|
|
23130
|
+
* them: a page that stacks a table per group puts each column on one line
|
|
23131
|
+
* down the page with nothing to coordinate. `--crewlet-settings-table-columns`
|
|
23132
|
+
* is inherited, so a page that wants other proportions sets it once.
|
|
23133
|
+
*
|
|
23134
|
+
* Each row is its own grid on those tracks rather than a subgrid of the
|
|
23135
|
+
* table's, because the tracks are fractions: one row's long label can never
|
|
23136
|
+
* move another row's value, which is what a content-sized track would do.
|
|
23137
|
+
*/
|
|
23138
|
+
|
|
23139
|
+
.crewlet-settings-table {
|
|
23140
|
+
container: crewlet-settings-table / inline-size;
|
|
23141
|
+
display: flex;
|
|
23142
|
+
flex-direction: column;
|
|
23143
|
+
min-width: 0;
|
|
23144
|
+
font-size: var(--font-size-compact);
|
|
23145
|
+
/* The flush-panel recipe, standing on its own: the card's surface, its
|
|
23146
|
+
hairline and its corner. Inside a card it gives them up (below). */
|
|
23147
|
+
background: var(--color-surface-subtle);
|
|
23148
|
+
border: 1px solid var(--color-border-default);
|
|
23149
|
+
border-radius: var(--radius-lg);
|
|
23150
|
+
overflow: hidden;
|
|
23151
|
+
}
|
|
23152
|
+
|
|
23153
|
+
/*
|
|
23154
|
+
* A TABLE THAT IS A CARD'S CONTENT IS THAT CARD'S TABLE. It draws no edge or
|
|
23155
|
+
* corner of its own inside one, so a card never holds a box inside a box; its
|
|
23156
|
+
* rows' hairlines run to the card's edges under the card's own head rule.
|
|
23157
|
+
*/
|
|
23158
|
+
.crewlet-card > .crewlet-settings-table,
|
|
23159
|
+
.crewlet-card__body > .crewlet-settings-table {
|
|
23160
|
+
background: transparent;
|
|
23161
|
+
border: 0;
|
|
23162
|
+
border-radius: var(--radius-none);
|
|
23163
|
+
}
|
|
23164
|
+
|
|
23165
|
+
.crewlet-settings-table__row {
|
|
23166
|
+
display: grid;
|
|
23167
|
+
grid-template-columns: var(
|
|
23168
|
+
--crewlet-settings-table-columns,
|
|
23169
|
+
minmax(0, 5fr) minmax(0, 3fr) minmax(0, 2fr)
|
|
23170
|
+
);
|
|
23171
|
+
column-gap: var(--spacing-6);
|
|
23172
|
+
/* ONE BASELINE PER ROW: the name, the value and the source sit on the
|
|
23173
|
+
first line's baseline, whatever the name's key adds under it. */
|
|
23174
|
+
align-items: baseline;
|
|
23175
|
+
min-height: var(--size-row-md);
|
|
23176
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
23177
|
+
}
|
|
23178
|
+
|
|
23179
|
+
.crewlet-settings-table__body > .crewlet-settings-table__row + .crewlet-settings-table__row {
|
|
23180
|
+
border-top: 1px solid var(--color-border-default);
|
|
23181
|
+
}
|
|
23182
|
+
|
|
23183
|
+
/*
|
|
23184
|
+
* The column names, in the micro-label register a table's header takes
|
|
23185
|
+
* across the system, on the panel's own ground. Hidden by default (see the
|
|
23186
|
+
* component): still the table's column headers for assistive technology.
|
|
23187
|
+
*/
|
|
23188
|
+
.crewlet-settings-table__head .crewlet-settings-table__row {
|
|
23189
|
+
min-height: 0;
|
|
23190
|
+
padding-block: var(--spacing-2);
|
|
23191
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
23192
|
+
}
|
|
23193
|
+
|
|
23194
|
+
.crewlet-settings-table__name {
|
|
23195
|
+
font-size: var(--font-size-2xs);
|
|
23196
|
+
font-weight: var(--font-weight-medium);
|
|
23197
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
23198
|
+
text-transform: uppercase;
|
|
23199
|
+
color: var(--color-text-tertiary);
|
|
23200
|
+
white-space: nowrap;
|
|
23201
|
+
}
|
|
23202
|
+
|
|
23203
|
+
.crewlet-settings-table__head--hidden {
|
|
23204
|
+
position: absolute;
|
|
23205
|
+
width: 1px;
|
|
23206
|
+
height: 1px;
|
|
23207
|
+
margin: -1px;
|
|
23208
|
+
padding: 0;
|
|
23209
|
+
border: 0;
|
|
23210
|
+
overflow: hidden;
|
|
23211
|
+
clip-path: inset(50%);
|
|
23212
|
+
white-space: nowrap;
|
|
23213
|
+
}
|
|
23214
|
+
|
|
23215
|
+
.crewlet-settings-table__setting {
|
|
23216
|
+
display: flex;
|
|
23217
|
+
flex-direction: column;
|
|
23218
|
+
gap: var(--spacing-1);
|
|
23219
|
+
min-width: 0;
|
|
23220
|
+
}
|
|
23221
|
+
|
|
23222
|
+
.crewlet-settings-table__label {
|
|
23223
|
+
color: var(--color-text-primary);
|
|
23224
|
+
line-height: var(--font-line-height-snug);
|
|
23225
|
+
}
|
|
23226
|
+
|
|
23227
|
+
/*
|
|
23228
|
+
* THE KEY IS FOR THE READER WHO WILL GO AND CHANGE IT, so it is there and
|
|
23229
|
+
* quiet: the monospace face at the smallest step, in the tertiary ink, and
|
|
23230
|
+
* free to break anywhere, since a dotted path is one word to a line breaker.
|
|
23231
|
+
*/
|
|
23232
|
+
.crewlet-settings-table__key {
|
|
23233
|
+
font-family: var(--font-family-mono);
|
|
23234
|
+
font-size: var(--font-size-2xs);
|
|
23235
|
+
line-height: var(--font-line-height-snug);
|
|
23236
|
+
color: var(--color-text-tertiary);
|
|
23237
|
+
overflow-wrap: anywhere;
|
|
23238
|
+
}
|
|
23239
|
+
|
|
23240
|
+
/* Tabular figures, so a column of numbers reads down its digits. */
|
|
23241
|
+
.crewlet-settings-table__value {
|
|
23242
|
+
min-width: 0;
|
|
23243
|
+
color: var(--color-text-primary);
|
|
23244
|
+
font-weight: var(--font-weight-medium);
|
|
23245
|
+
font-variant-numeric: tabular-nums;
|
|
23246
|
+
overflow-wrap: anywhere;
|
|
23247
|
+
}
|
|
23248
|
+
|
|
23249
|
+
.crewlet-settings-table__source {
|
|
23250
|
+
display: inline-flex;
|
|
23251
|
+
align-items: baseline;
|
|
23252
|
+
gap: var(--spacing-2);
|
|
23253
|
+
min-width: 0;
|
|
23254
|
+
font-size: var(--font-size-xs);
|
|
23255
|
+
color: var(--color-text-tertiary);
|
|
23256
|
+
}
|
|
23257
|
+
|
|
23258
|
+
/* A value that differs from its default is the row a reader came to find. */
|
|
23259
|
+
.crewlet-settings-table__source--changed {
|
|
23260
|
+
color: var(--color-text-secondary);
|
|
23261
|
+
}
|
|
23262
|
+
|
|
23263
|
+
.crewlet-settings-table__source--changed .crewlet-status-dot {
|
|
23264
|
+
align-self: center;
|
|
23265
|
+
}
|
|
23266
|
+
|
|
23267
|
+
/*
|
|
23268
|
+
* NARROW: the name takes the row's first line, and the value and its source
|
|
23269
|
+
* share the second. Three columns at this width leave a name column a word
|
|
23270
|
+
* wide, which wraps every name into a stack of single words.
|
|
23271
|
+
*/
|
|
23272
|
+
@container crewlet-settings-table (width < 32rem) {
|
|
23273
|
+
.crewlet-settings-table__row {
|
|
23274
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
23275
|
+
row-gap: var(--spacing-1);
|
|
23276
|
+
}
|
|
23277
|
+
|
|
23278
|
+
.crewlet-settings-table__setting {
|
|
23279
|
+
grid-column: 1 / -1;
|
|
23280
|
+
}
|
|
23281
|
+
|
|
23282
|
+
.crewlet-settings-table__source {
|
|
23283
|
+
justify-self: end;
|
|
23284
|
+
}
|
|
23285
|
+
}
|
|
23286
|
+
|
|
23287
|
+
|
|
22896
23288
|
/* ShareDialog-4QDCBWMH.css */
|
|
22897
23289
|
/*
|
|
22898
23290
|
* Three blocks under the title: who to add and at what role, who has access,
|
|
@@ -25603,7 +25995,7 @@ svg.crewlet-select__chevron {
|
|
|
25603
25995
|
}
|
|
25604
25996
|
|
|
25605
25997
|
|
|
25606
|
-
/* StatCard-
|
|
25998
|
+
/* StatCard-HAA3F5GX.css */
|
|
25607
25999
|
/*
|
|
25608
26000
|
* The stat tile.
|
|
25609
26001
|
*
|
|
@@ -25792,6 +26184,12 @@ svg.crewlet-select__chevron {
|
|
|
25792
26184
|
* tiles where only some carry one still stands at one height: its leading is
|
|
25793
26185
|
* set here and the reserve is exactly one line of it, where a reserve in `em`
|
|
25794
26186
|
* was a line shorter than the one a sub actually draws.
|
|
26187
|
+
*
|
|
26188
|
+
* IT WRAPS, balanced, rather than ending in an ellipsis. The line qualifies
|
|
26189
|
+
* the number, so its end is the half that says what the number means, and
|
|
26190
|
+
* `nowrap` cut it: "6 seats idle and waiting for ..." on a phone, a caption
|
|
26191
|
+
* mid-clause at 1440. A grid of tiles (a StatGroup, or a caller's own) gives
|
|
26192
|
+
* every tile in a row one height, so a second line costs no alignment.
|
|
25795
26193
|
*/
|
|
25796
26194
|
.crewlet-statcard__sub {
|
|
25797
26195
|
min-height: calc(1em * var(--font-line-height-body));
|
|
@@ -25800,9 +26198,8 @@ svg.crewlet-select__chevron {
|
|
|
25800
26198
|
/* The quiet step, with the label. The line qualifies the number rather than
|
|
25801
26199
|
being a second one. */
|
|
25802
26200
|
color: var(--color-text-tertiary);
|
|
25803
|
-
overflow:
|
|
25804
|
-
text-
|
|
25805
|
-
white-space: nowrap;
|
|
26201
|
+
overflow-wrap: anywhere;
|
|
26202
|
+
text-wrap: balance;
|
|
25806
26203
|
}
|
|
25807
26204
|
|
|
25808
26205
|
/*
|
|
@@ -25837,7 +26234,7 @@ svg.crewlet-select__chevron {
|
|
|
25837
26234
|
.crewlet-statcard--info .crewlet-statcard__value { color: var(--color-feedback-info-ink); }
|
|
25838
26235
|
|
|
25839
26236
|
|
|
25840
|
-
/* StatGroup-
|
|
26237
|
+
/* StatGroup-ZMW7VQWP.css */
|
|
25841
26238
|
/*
|
|
25842
26239
|
* A row of stat tiles.
|
|
25843
26240
|
*
|
|
@@ -25915,6 +26312,33 @@ svg.crewlet-select__chevron {
|
|
|
25915
26312
|
border-radius: var(--radius-none);
|
|
25916
26313
|
}
|
|
25917
26314
|
|
|
26315
|
+
/*
|
|
26316
|
+
* A ROW OF TILES SHARES ITS LINES. A tile stacks its label, its number and its
|
|
26317
|
+
* sub in a column of its own, so a label that wrapped pushed its own number
|
|
26318
|
+
* down and no other: beside a node's peek at 1440, "Behind on config" broke
|
|
26319
|
+
* over two lines and its figure sat 18px below the other three. Inside a row
|
|
26320
|
+
* each tile is a SUBGRID over the row's lines, one per line the tile renders
|
|
26321
|
+
* (StatCard always renders three, an absent sub included), so a line is as
|
|
26322
|
+
* tall as the tallest of it across the row and every figure starts together.
|
|
26323
|
+
*
|
|
26324
|
+
* A LABEL SITS ON ITS NUMBER: where one label in the row takes two lines, the
|
|
26325
|
+
* others end at the foot of the label row, one gap above their figure, rather
|
|
26326
|
+
* than floating at its top a line away from what they name.
|
|
26327
|
+
*
|
|
26328
|
+
* These were the engine dashboard's own rules over this component, held there
|
|
26329
|
+
* with a note that the kit should carry them; they are the kit's now, with the
|
|
26330
|
+
* sub's wrap (see StatCard), which the engine applied to every tile.
|
|
26331
|
+
*/
|
|
26332
|
+
.crewlet-stat-group > .crewlet-statcard {
|
|
26333
|
+
display: grid;
|
|
26334
|
+
grid-template-rows: subgrid;
|
|
26335
|
+
grid-row: span 3;
|
|
26336
|
+
}
|
|
26337
|
+
|
|
26338
|
+
.crewlet-stat-group > .crewlet-statcard > .crewlet-statcard__label {
|
|
26339
|
+
align-self: end;
|
|
26340
|
+
}
|
|
26341
|
+
|
|
25918
26342
|
/*
|
|
25919
26343
|
* Each tile spans its share of the twelve tracks: the row's `columns`, set on
|
|
25920
26344
|
* it as `--crewlet-stat-group-cols`, a row.
|
|
@@ -28953,6 +29377,61 @@ b.crewlet-switcher__match {
|
|
|
28953
29377
|
}
|
|
28954
29378
|
|
|
28955
29379
|
|
|
29380
|
+
/* TileGrid-I6LNYD2H.css */
|
|
29381
|
+
/*
|
|
29382
|
+
* TileGrid: tiles on a fixed track count that folds by the grid's own width.
|
|
29383
|
+
*
|
|
29384
|
+
* Equal tracks, so two grids of one count and one width put every tile edge
|
|
29385
|
+
* on the same line; the tiles in a row stretch to the tallest of them. The
|
|
29386
|
+
* folds are steps of the grid's own width (see the component): three tracks
|
|
29387
|
+
* go straight to one, so a set of three never strands a tile.
|
|
29388
|
+
*/
|
|
29389
|
+
|
|
29390
|
+
.crewlet-tile-grid {
|
|
29391
|
+
container: crewlet-tile-grid / inline-size;
|
|
29392
|
+
min-width: 0;
|
|
29393
|
+
}
|
|
29394
|
+
|
|
29395
|
+
.crewlet-tile-grid__track {
|
|
29396
|
+
--crewlet-tile-grid-tracks: 3;
|
|
29397
|
+
|
|
29398
|
+
display: grid;
|
|
29399
|
+
grid-template-columns: repeat(var(--crewlet-tile-grid-tracks), minmax(0, 1fr));
|
|
29400
|
+
gap: var(--spacing-3);
|
|
29401
|
+
margin: 0;
|
|
29402
|
+
padding: 0;
|
|
29403
|
+
list-style: none;
|
|
29404
|
+
}
|
|
29405
|
+
|
|
29406
|
+
.crewlet-tile-grid[data-columns='2'] > .crewlet-tile-grid__track {
|
|
29407
|
+
--crewlet-tile-grid-tracks: 2;
|
|
29408
|
+
}
|
|
29409
|
+
|
|
29410
|
+
.crewlet-tile-grid[data-columns='4'] > .crewlet-tile-grid__track {
|
|
29411
|
+
--crewlet-tile-grid-tracks: 4;
|
|
29412
|
+
}
|
|
29413
|
+
|
|
29414
|
+
/* Four tracks fold to two where a tile would be narrower than its content. */
|
|
29415
|
+
@container crewlet-tile-grid (width < 56rem) {
|
|
29416
|
+
.crewlet-tile-grid[data-columns='4'] > .crewlet-tile-grid__track {
|
|
29417
|
+
--crewlet-tile-grid-tracks: 2;
|
|
29418
|
+
}
|
|
29419
|
+
}
|
|
29420
|
+
|
|
29421
|
+
/* Three fold to one: two up would leave the third tile alone on a row. */
|
|
29422
|
+
@container crewlet-tile-grid (width < 40rem) {
|
|
29423
|
+
.crewlet-tile-grid[data-columns='3'] > .crewlet-tile-grid__track {
|
|
29424
|
+
--crewlet-tile-grid-tracks: 1;
|
|
29425
|
+
}
|
|
29426
|
+
}
|
|
29427
|
+
|
|
29428
|
+
@container crewlet-tile-grid (width < 28rem) {
|
|
29429
|
+
.crewlet-tile-grid > .crewlet-tile-grid__track {
|
|
29430
|
+
--crewlet-tile-grid-tracks: 1;
|
|
29431
|
+
}
|
|
29432
|
+
}
|
|
29433
|
+
|
|
29434
|
+
|
|
28956
29435
|
/* TimeWindowPicker-I3HXC74I.css */
|
|
28957
29436
|
/*
|
|
28958
29437
|
* TimeWindowPicker: one trigger over one panel.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.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.39.0",
|
|
46
|
+
"@crewlethq/tokens": "0.39.0",
|
|
47
47
|
"prosemirror-commands": "1.7.2",
|
|
48
48
|
"prosemirror-gapcursor": "1.4.1",
|
|
49
49
|
"prosemirror-history": "1.5.1",
|
|
@@ -3,8 +3,8 @@ import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chu
|
|
|
3
3
|
import { HueSwatch } from './chunk-F4LPQA4E.js';
|
|
4
4
|
import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
|
|
5
5
|
import { Checkbox } from './chunk-AXS6MBNH.js';
|
|
6
|
-
import { Kbd } from './chunk-SMBKXWML.js';
|
|
7
6
|
import { FormField, Input } from './chunk-TYONQSOK.js';
|
|
7
|
+
import { Kbd } from './chunk-SMBKXWML.js';
|
|
8
8
|
import { Menu } from './chunk-D6FEHY5G.js';
|
|
9
9
|
import { Button } from './chunk-OG6CL3EB.js';
|
|
10
10
|
import { IconButton } from './chunk-4FQT6ZAY.js';
|