@crewlethq/ui 0.37.1 → 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 +70 -2
- package/dist/Accordion/index.js +1 -1
- package/dist/AgentHandoffPanel/index.js +2 -2
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-JBCZSSX3.css → AppShell-NDU4XMGF.css} +39 -6
- 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/ArtifactMakeRow/ArtifactMakeRow.d.ts +3 -1
- package/dist/ArtifactMakeRow/index.js +1 -1
- package/dist/{ArtifactMakeRow-W3RD5YWZ.css → ArtifactMakeRow-6UX2LTF7.css} +43 -5
- 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-QOVASQNU.css → Card-JR2UPQH7.css} +63 -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 +2 -2
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +3 -3
- package/dist/DatasetSource/DatasetSource.d.ts +7 -1
- package/dist/DatasetSource/index.js +2 -2
- package/dist/DescriptionList/DescriptionList.d.ts +12 -1
- package/dist/DescriptionList/index.js +1 -1
- package/dist/{DescriptionList-IXMRCSMK.css → DescriptionList-DEZISDLQ.css} +8 -1
- package/dist/Disclosure/index.js +1 -1
- package/dist/{Disclosure-VKBJJIZ7.css → Disclosure-P4FH3C35.css} +28 -2
- 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 +1 -1
- 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/PricingCard/index.js +2 -2
- 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/SheetGrid/index.js +2 -2
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-4T7TMWMN.css → StatCard-HAA3F5GX.css} +8 -3
- package/dist/StatGroup/StatGroup.d.ts +11 -7
- package/dist/StatGroup/index.js +1 -1
- package/dist/StatGroup-ZMW7VQWP.css +195 -0
- package/dist/Switcher/index.js +2 -2
- package/dist/TableCells/index.js +2 -2
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-SRGTK5KI.css → Tag-2DQOVE6W.css} +15 -5
- package/dist/TagsInput/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-YSG3DW7W.js → chunk-3TXY3PJZ.js} +1 -1
- package/dist/{chunk-K4VP6ZKE.js → chunk-4BJK7FE5.js} +1 -1
- package/dist/chunk-4RKTZSEW.js +64 -0
- package/dist/{chunk-3SBM4DGI.js → chunk-BH52LIY6.js} +1 -1
- package/dist/{chunk-HDHZWIFL.js → chunk-DYB66CNM.js} +16 -2
- package/dist/{chunk-A23KDROH.js → chunk-FXBGEANQ.js} +1 -1
- package/dist/{chunk-HMLAWVG6.js → chunk-HQJ24WPM.js} +5 -3
- package/dist/{chunk-SVGARBDY.js → chunk-IAGYPTEJ.js} +2 -2
- package/dist/{chunk-5QXRI35B.js → chunk-INHXF2CL.js} +24 -11
- package/dist/{chunk-6NNY5WBF.js → chunk-JKAGN4V4.js} +1 -1
- package/dist/{chunk-DZSBFITC.js → chunk-JZPK4IXR.js} +1 -1
- package/dist/{chunk-UWRBD2YO.js → chunk-KNHUBHFX.js} +1 -1
- package/dist/{chunk-GFV4LJHH.js → chunk-KYIAFNU7.js} +1 -1
- package/dist/{chunk-F2XSYBKH.js → chunk-MFS6F2P7.js} +4 -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-MICH6QSJ.js → chunk-OGXHZHRX.js} +1 -1
- package/dist/{chunk-JXRI5YD2.js → chunk-OUD75UB2.js} +2 -1
- package/dist/{chunk-MG3HTY6F.js → chunk-QRKT4XTT.js} +1 -1
- package/dist/{chunk-NS4NSHVX.js → chunk-R2IBCEU6.js} +12 -2
- package/dist/{chunk-WX2NIG4G.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-OHA6WSAG.js → chunk-U2XAJONO.js} +1 -1
- package/dist/{chunk-DQSXWQMJ.js → chunk-U3ILLCR2.js} +1 -1
- package/dist/{chunk-DOLATMGF.js → chunk-WYYCPV46.js} +5 -0
- package/dist/{chunk-A72JPXIV.js → chunk-XGBUUQDU.js} +1 -1
- package/dist/chunk-XNXK5MA4.js +48 -0
- package/dist/{chunk-XO7PUL4F.js → chunk-YPTTSJPM.js} +1 -1
- package/dist/{chunk-RIAZM6L3.js → chunk-ZNOXQACX.js} +1 -1
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.js +56 -53
- package/dist/index.js +56 -53
- package/dist/styles.css +782 -64
- package/package.json +3 -3
- package/dist/StatGroup-PADTJCUQ.css +0 -86
- /package/dist/{chunk-4QQ3MND5.js → chunk-QRLIWCLX.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
}
|
|
703
703
|
|
|
704
704
|
|
|
705
|
-
/* AppShell-
|
|
705
|
+
/* AppShell-NDU4XMGF.css */
|
|
706
706
|
/*
|
|
707
707
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
708
708
|
* floats beside it.
|
|
@@ -886,7 +886,9 @@
|
|
|
886
886
|
* compact density cannot take the target under it.
|
|
887
887
|
*
|
|
888
888
|
* And the boundary is TRANSPARENT rather than absent, spending one pixel of
|
|
889
|
-
* that step rather than adding one on top of it.
|
|
889
|
+
* that step rather than adding one on top of it. It spends a pixel of the row
|
|
890
|
+
* pad too: added to it, the boundary stood the row's mark and words a pixel
|
|
891
|
+
* right of every nav glyph and word above them. A button carries one at every
|
|
890
892
|
* variant so that a bordered variant and a borderless one stand the same
|
|
891
893
|
* height, and the row this package draws carries the same one for the same
|
|
892
894
|
* reason: without it the two rows in one foot are 34px and 36px, and the
|
|
@@ -901,7 +903,7 @@
|
|
|
901
903
|
width: 100%;
|
|
902
904
|
min-width: 0;
|
|
903
905
|
min-height: var(--size-row-sm);
|
|
904
|
-
padding: calc(var(--spacing-2) - 1px) var(--size-nav-row-pad);
|
|
906
|
+
padding: calc(var(--spacing-2) - 1px) calc(var(--size-nav-row-pad) - 1px);
|
|
905
907
|
border: 1px solid transparent;
|
|
906
908
|
border-radius: var(--radius-md);
|
|
907
909
|
background: transparent;
|
|
@@ -1132,13 +1134,22 @@
|
|
|
1132
1134
|
overflow: hidden;
|
|
1133
1135
|
}
|
|
1134
1136
|
|
|
1137
|
+
/*
|
|
1138
|
+
* THE BAR'S INSET IS THE CONTENT'S, so a page's first line starts under the
|
|
1139
|
+
* bar's title and its cards end under the bar's last control. It stood 16px
|
|
1140
|
+
* from each edge over a content column inset 20px, and at its end the
|
|
1141
|
+
* content also gives up the scroller's gutter, which the bar, not scrolling,
|
|
1142
|
+
* did not: with scrollbars drawn in the layout every page's actions ended
|
|
1143
|
+
* 15px past the cards under them. The gutter is measured by the shell
|
|
1144
|
+
* (`--crewlet-app-shell-gutter`, 0 where scrollbars overlay the content).
|
|
1145
|
+
*/
|
|
1135
1146
|
.crewlet-app-shell__topbar {
|
|
1136
1147
|
display: flex;
|
|
1137
1148
|
align-items: center;
|
|
1138
1149
|
gap: var(--spacing-3);
|
|
1139
1150
|
flex: none;
|
|
1140
1151
|
height: var(--crewlet-app-shell-topbar);
|
|
1141
|
-
padding: 0 var(--spacing-
|
|
1152
|
+
padding: 0 calc(var(--spacing-5) + var(--crewlet-app-shell-gutter, 0px)) 0 var(--spacing-5);
|
|
1142
1153
|
border-bottom: 1px solid var(--color-border-default);
|
|
1143
1154
|
background: var(--color-surface-background);
|
|
1144
1155
|
}
|
|
@@ -1321,7 +1332,12 @@
|
|
|
1321
1332
|
}
|
|
1322
1333
|
|
|
1323
1334
|
/* THE TOP BAR'S GUTTER, 16px: the content's 12px stood every page's first
|
|
1324
|
-
line 4px left of the title and the controls over it.
|
|
1335
|
+
line 4px left of the title and the controls over it. The bar and the
|
|
1336
|
+
content take it together. */
|
|
1337
|
+
.crewlet-app-shell__topbar {
|
|
1338
|
+
padding: 0 calc(var(--spacing-4) + var(--crewlet-app-shell-gutter, 0px)) 0 var(--spacing-4);
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1325
1341
|
.crewlet-app-shell__content {
|
|
1326
1342
|
padding: var(--spacing-4) var(--spacing-4) var(--spacing-9);
|
|
1327
1343
|
}
|
|
@@ -1367,10 +1383,27 @@
|
|
|
1367
1383
|
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
1368
1384
|
}
|
|
1369
1385
|
|
|
1370
|
-
/*
|
|
1371
|
-
|
|
1386
|
+
/*
|
|
1387
|
+
* In the rail's foot, the account row reaches up across its own padding to
|
|
1388
|
+
* half the foot's gap, to meet the row above (HitArea.css).
|
|
1389
|
+
*
|
|
1390
|
+
* AND IT STANDS ON THE NAV'S COLUMNS: the avatar centred on the column every
|
|
1391
|
+
* nav glyph is centred on, and the name starting on the line every nav word
|
|
1392
|
+
* starts on. On a 4px inset with an 8px gap a 26px avatar stood 2px left of
|
|
1393
|
+
* the glyphs above it and the name 2px right of their words. The avatar's box
|
|
1394
|
+
* takes a nav glyph's width (`sm`, 14px) and the badge is centred over it, so
|
|
1395
|
+
* whatever size of badge a caller hands the row, it is centred where a glyph
|
|
1396
|
+
* is, and the row takes the nav row's pad and its glyph-to-word gap.
|
|
1397
|
+
*/
|
|
1372
1398
|
.crewlet-app-shell__rail-foot .crewlet-account-row__who {
|
|
1373
1399
|
--crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
|
|
1400
|
+
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
1401
|
+
padding-inline-start: var(--size-nav-row-pad);
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.crewlet-app-shell__rail-foot .crewlet-account-row__avatar {
|
|
1405
|
+
justify-content: center;
|
|
1406
|
+
width: 14px;
|
|
1374
1407
|
}
|
|
1375
1408
|
|
|
1376
1409
|
/* The row as the reader's menu button: a button drawn as the link is. */
|
|
@@ -2258,7 +2291,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2258
2291
|
}
|
|
2259
2292
|
|
|
2260
2293
|
|
|
2261
|
-
/* ArtifactBar-
|
|
2294
|
+
/* ArtifactBar-6PGWGKN2.css */
|
|
2262
2295
|
/*
|
|
2263
2296
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2264
2297
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2290,7 +2323,12 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2290
2323
|
its place, and at a row's height of its own the line under it jumped by
|
|
2291
2324
|
three pixels between the gallery and the artifact opened from it. */
|
|
2292
2325
|
height: calc(var(--size-shell-topbar) - 1px);
|
|
2293
|
-
|
|
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);
|
|
2294
2332
|
min-width: 0;
|
|
2295
2333
|
}
|
|
2296
2334
|
|
|
@@ -2675,6 +2713,13 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2675
2713
|
}
|
|
2676
2714
|
}
|
|
2677
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
|
+
|
|
2678
2723
|
|
|
2679
2724
|
/* ArtifactCard-OGTMO2KI.css */
|
|
2680
2725
|
/*
|
|
@@ -3311,7 +3356,7 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3311
3356
|
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); }
|
|
3312
3357
|
|
|
3313
3358
|
|
|
3314
|
-
/* ArtifactMakeRow-
|
|
3359
|
+
/* ArtifactMakeRow-6UX2LTF7.css */
|
|
3315
3360
|
/*
|
|
3316
3361
|
* The "Start a new artifact" tray.
|
|
3317
3362
|
*
|
|
@@ -3322,9 +3367,16 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3322
3367
|
*
|
|
3323
3368
|
* THE TRAY SIZES ITSELF BY ITS OWN WIDTH, never the window's: it sits in a
|
|
3324
3369
|
* page column a sidebar narrows, so three steps are container queries on the
|
|
3325
|
-
* tray. Under 560px three across
|
|
3326
|
-
* line,
|
|
3327
|
-
* the mark beside the name and what the kind is for under it.
|
|
3370
|
+
* tray. Under 560px three across, each its mark over its name; from 560px
|
|
3371
|
+
* every kind in one line, still mark over name, so a long name is never cut;
|
|
3372
|
+
* from 920px the mark beside the name and what the kind is for under it.
|
|
3373
|
+
*
|
|
3374
|
+
* AND BY ITS OWN COUNT. A reader is offered the kinds their company runs, so
|
|
3375
|
+
* a tray holds five as often as six, and a grid fixed at six columns left an
|
|
3376
|
+
* empty sixth of dotted field at the end of the line, and three across left a
|
|
3377
|
+
* hole after the fifth. The line takes one column per kind
|
|
3378
|
+
* (`--crewlet-make-row-count`, set from the items), and the narrow tray fills
|
|
3379
|
+
* its rows by the count (`data-count`): see the narrow step below.
|
|
3328
3380
|
*/
|
|
3329
3381
|
|
|
3330
3382
|
.crewlet-make-row {
|
|
@@ -3342,7 +3394,7 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3342
3394
|
.crewlet-make-row__list {
|
|
3343
3395
|
--crewlet-make-row-gap: var(--spacing-1);
|
|
3344
3396
|
display: grid;
|
|
3345
|
-
grid-template-columns: repeat(
|
|
3397
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
3346
3398
|
gap: var(--crewlet-make-row-gap);
|
|
3347
3399
|
margin: 0;
|
|
3348
3400
|
padding: var(--spacing-1);
|
|
@@ -3423,9 +3475,40 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3423
3475
|
line-height: 1.35;
|
|
3424
3476
|
}
|
|
3425
3477
|
|
|
3478
|
+
/*
|
|
3479
|
+
* THE NARROW TRAY, on six tracks, each kind two of them: three a row. A last
|
|
3480
|
+
* row that is short is centred under the full one rather than left with a
|
|
3481
|
+
* hole after it, so five kinds stand three and two, the two in the middle.
|
|
3482
|
+
* Two and four kinds stand two a row, which fills every row, and one kind
|
|
3483
|
+
* takes the tray.
|
|
3484
|
+
*/
|
|
3485
|
+
@container (width < 560px) {
|
|
3486
|
+
.crewlet-make-row__cell {
|
|
3487
|
+
grid-column: span 2;
|
|
3488
|
+
}
|
|
3489
|
+
|
|
3490
|
+
/* One kind short of a full last row: the first of the two moves in a track. */
|
|
3491
|
+
.crewlet-make-row__cell:nth-child(3n + 1):nth-last-child(2) {
|
|
3492
|
+
grid-column: 2 / span 2;
|
|
3493
|
+
}
|
|
3494
|
+
|
|
3495
|
+
/* A last row of one stands in the middle. */
|
|
3496
|
+
.crewlet-make-row__cell:nth-child(3n + 1):last-child {
|
|
3497
|
+
grid-column: 3 / span 2;
|
|
3498
|
+
}
|
|
3499
|
+
|
|
3500
|
+
.crewlet-make-row__list:is([data-count='2'], [data-count='4']) > .crewlet-make-row__cell {
|
|
3501
|
+
grid-column: span 3;
|
|
3502
|
+
}
|
|
3503
|
+
|
|
3504
|
+
.crewlet-make-row__list[data-count='1'] > .crewlet-make-row__cell {
|
|
3505
|
+
grid-column: span 6;
|
|
3506
|
+
}
|
|
3507
|
+
}
|
|
3508
|
+
|
|
3426
3509
|
@container (width >= 560px) {
|
|
3427
3510
|
.crewlet-make-row__list {
|
|
3428
|
-
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
3511
|
+
grid-template-columns: repeat(var(--crewlet-make-row-count, 6), minmax(0, 1fr));
|
|
3429
3512
|
}
|
|
3430
3513
|
|
|
3431
3514
|
.crewlet-make-row__item {
|
|
@@ -6195,7 +6278,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6195
6278
|
}
|
|
6196
6279
|
|
|
6197
6280
|
|
|
6198
|
-
/* Card-
|
|
6281
|
+
/* Card-JR2UPQH7.css */
|
|
6199
6282
|
/*
|
|
6200
6283
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
6201
6284
|
* control.
|
|
@@ -6650,6 +6733,69 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6650
6733
|
min-width: 0;
|
|
6651
6734
|
}
|
|
6652
6735
|
|
|
6736
|
+
/*
|
|
6737
|
+
* ON A NARROW CARD THE SUBTITLE TAKES A LINE OF ITS OWN, under the title and
|
|
6738
|
+
* the card's controls, and wraps there rather than ending.
|
|
6739
|
+
*
|
|
6740
|
+
* One line is right while the subtitle has room to say something beside the
|
|
6741
|
+
* title. In a card under 480px wide it had none: on a phone an Agent seats
|
|
6742
|
+
* card drew "Resets today at midnight, the week…" in 202px of a 361px
|
|
6743
|
+
* sentence, and the half it cut was the half that said when. On its own line
|
|
6744
|
+
* the subtitle has the head's whole width, and the title and the controls
|
|
6745
|
+
* keep the first.
|
|
6746
|
+
*
|
|
6747
|
+
* THE CARD IS THE CONTAINER, and only a card whose head has a subtitle, since
|
|
6748
|
+
* that is the one card this changes. Inline-size containment takes a card's
|
|
6749
|
+
* width from where it stands, never from its contents, which is how a panel
|
|
6750
|
+
* is laid out anyway; a card that sized itself to its contents (a tile in a
|
|
6751
|
+
* row that does not stretch it) and carried no subtitle is untouched.
|
|
6752
|
+
*
|
|
6753
|
+
* THE NAME BLOCK TAKES THE FIRST LINE'S ROOM rather than its own width. With
|
|
6754
|
+
* the row free to wrap, a title wider than what the controls leave would
|
|
6755
|
+
* otherwise push the controls onto a second line; from a zero basis it grows
|
|
6756
|
+
* into the room they leave and clips there, exactly as the one-line head does.
|
|
6757
|
+
*/
|
|
6758
|
+
.crewlet-card:has(> .crewlet-card__header > .crewlet-card__subtitle) {
|
|
6759
|
+
container: crewlet-card / inline-size;
|
|
6760
|
+
}
|
|
6761
|
+
|
|
6762
|
+
@container crewlet-card (width < 480px) {
|
|
6763
|
+
.crewlet-card__header:has(> .crewlet-card__subtitle) {
|
|
6764
|
+
flex-wrap: wrap;
|
|
6765
|
+
row-gap: var(--spacing-1);
|
|
6766
|
+
}
|
|
6767
|
+
|
|
6768
|
+
.crewlet-card__header:has(> .crewlet-card__subtitle) > .crewlet-card__header-main {
|
|
6769
|
+
flex: 1 1 0;
|
|
6770
|
+
}
|
|
6771
|
+
|
|
6772
|
+
.crewlet-card__header > .crewlet-card__subtitle {
|
|
6773
|
+
order: 1;
|
|
6774
|
+
flex: 1 1 100%;
|
|
6775
|
+
white-space: normal;
|
|
6776
|
+
}
|
|
6777
|
+
}
|
|
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
|
+
|
|
6653
6799
|
.crewlet-card__description {
|
|
6654
6800
|
margin: 0;
|
|
6655
6801
|
font-size: var(--font-size-compact);
|
|
@@ -6664,6 +6810,140 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6664
6810
|
}
|
|
6665
6811
|
|
|
6666
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
|
+
|
|
6667
6947
|
/* ChangeMark-3VMTW7MT.css */
|
|
6668
6948
|
/*
|
|
6669
6949
|
* A change mark (ChangeMark.tsx): a notch in the top end corner of whatever
|
|
@@ -8226,7 +8506,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8226
8506
|
}
|
|
8227
8507
|
|
|
8228
8508
|
|
|
8229
|
-
/* CodeBlock-
|
|
8509
|
+
/* CodeBlock-N5ETJF24.css */
|
|
8230
8510
|
/*
|
|
8231
8511
|
* CodeBlock, a monospace command, config or record surface. One step off the
|
|
8232
8512
|
* page, with an optional header carrying a filename and the copy control.
|
|
@@ -8245,6 +8525,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8245
8525
|
min-width: 0;
|
|
8246
8526
|
}
|
|
8247
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
|
+
|
|
8248
8541
|
.crewlet-codeblock__header {
|
|
8249
8542
|
display: flex;
|
|
8250
8543
|
align-items: center;
|
|
@@ -12393,18 +12686,25 @@ svg.crewlet-datetime__chevron {
|
|
|
12393
12686
|
}
|
|
12394
12687
|
|
|
12395
12688
|
|
|
12396
|
-
/* DescriptionList-
|
|
12689
|
+
/* DescriptionList-DEZISDLQ.css */
|
|
12397
12690
|
/*
|
|
12398
12691
|
* Metadata pairs on one grid.
|
|
12399
12692
|
*
|
|
12400
12693
|
* The term track is `minmax(120px, max-content)`: wide enough that short terms
|
|
12401
12694
|
* line up with each other, and free to grow for a long one rather than
|
|
12402
12695
|
* wrapping it into two lines beside a one-word value.
|
|
12696
|
+
*
|
|
12697
|
+
* ONE LIST'S TRACK IS ITS OWN, which is wrong for a page of them. Four cards
|
|
12698
|
+
* of limits stacked on one page each sized the column to their own longest
|
|
12699
|
+
* term, so their values started at four different places and the cards did
|
|
12700
|
+
* not read as one table. `--crewlet-description-list-term` names the track
|
|
12701
|
+
* instead, and it is inherited: set once on the page (or passed to each list
|
|
12702
|
+
* as `termWidth`), every list under it shares one column.
|
|
12403
12703
|
*/
|
|
12404
12704
|
|
|
12405
12705
|
.crewlet-description-list {
|
|
12406
12706
|
display: grid;
|
|
12407
|
-
grid-template-columns: minmax(120px, max-content) 1fr;
|
|
12707
|
+
grid-template-columns: var(--crewlet-description-list-term, minmax(120px, max-content)) 1fr;
|
|
12408
12708
|
gap: var(--spacing-2) var(--spacing-4);
|
|
12409
12709
|
margin: 0;
|
|
12410
12710
|
font-size: var(--font-size-compact);
|
|
@@ -12670,7 +12970,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12670
12970
|
}
|
|
12671
12971
|
|
|
12672
12972
|
|
|
12673
|
-
/* Disclosure-
|
|
12973
|
+
/* Disclosure-P4FH3C35.css */
|
|
12674
12974
|
/*
|
|
12675
12975
|
* The disclosure anatomy, declared once for every expander in the package.
|
|
12676
12976
|
*
|
|
@@ -12788,9 +13088,35 @@ svg.crewlet-datetime__chevron {
|
|
|
12788
13088
|
font-variant-ligatures: none;
|
|
12789
13089
|
}
|
|
12790
13090
|
|
|
12791
|
-
/*
|
|
13091
|
+
/*
|
|
13092
|
+
* A fact inside the button: quieter than the title it belongs to, and the
|
|
13093
|
+
* first thing to give up room when the row runs short.
|
|
13094
|
+
*
|
|
13095
|
+
* IT USED TO TAKE NONE. `flex: none` held a fact at its full width while the
|
|
13096
|
+
* title, which may shrink, was the only thing that could, so a long fact (a
|
|
13097
|
+
* log's replay mode, generation, range and size, beside a status badge in the
|
|
13098
|
+
* actions) took the whole trigger: the title shrank to nothing, so a row no
|
|
13099
|
+
* longer said which log it was, and the fact ran out of the button and under
|
|
13100
|
+
* the badge beside it.
|
|
13101
|
+
*
|
|
13102
|
+
* A HUNDRED TO THE TITLE'S ONE, as a card's subtitle gives way to its title:
|
|
13103
|
+
* two items that may shrink give up space in proportion to their widths, so
|
|
13104
|
+
* at that ratio the fact absorbs effectively all of it, and ends in an
|
|
13105
|
+
* ellipsis, before the title gives up a pixel. The fact is still the button's
|
|
13106
|
+
* name in full; only its drawing is cut.
|
|
13107
|
+
*
|
|
13108
|
+
* NEVER TO NOTHING. The floor is one glyph wide, because a fact is often a
|
|
13109
|
+
* mark (a failed call's glyph beside a tool's name), and a mark that shrank
|
|
13110
|
+
* to nothing would say nothing at all. A long fact keeps an ellipsis there,
|
|
13111
|
+
* which says a fact was cut. Once the fact is at its floor the title shrinks
|
|
13112
|
+
* and ends in its own ellipsis.
|
|
13113
|
+
*/
|
|
12792
13114
|
.crewlet-disclosure__meta {
|
|
12793
|
-
flex:
|
|
13115
|
+
flex: 0 100 auto;
|
|
13116
|
+
min-width: 1.5em;
|
|
13117
|
+
overflow: hidden;
|
|
13118
|
+
text-overflow: ellipsis;
|
|
13119
|
+
white-space: nowrap;
|
|
12794
13120
|
color: var(--color-text-tertiary);
|
|
12795
13121
|
font-size: var(--font-size-xs);
|
|
12796
13122
|
}
|
|
@@ -16410,7 +16736,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16410
16736
|
}
|
|
16411
16737
|
|
|
16412
16738
|
|
|
16413
|
-
/* List-
|
|
16739
|
+
/* List-YHLIZFK4.css */
|
|
16414
16740
|
/*
|
|
16415
16741
|
* The non-tabular list. One row recipe, four framings.
|
|
16416
16742
|
*
|
|
@@ -16533,6 +16859,52 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16533
16859
|
padding-inline: 0;
|
|
16534
16860
|
}
|
|
16535
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
|
+
|
|
16536
16908
|
/* ---- States ------------------------------------------------------------ */
|
|
16537
16909
|
|
|
16538
16910
|
/*
|
|
@@ -17729,7 +18101,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17729
18101
|
}
|
|
17730
18102
|
|
|
17731
18103
|
|
|
17732
|
-
/* Modal-
|
|
18104
|
+
/* Modal-TOEWHDCQ.css */
|
|
17733
18105
|
/*
|
|
17734
18106
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
17735
18107
|
*
|
|
@@ -18111,6 +18483,11 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18111
18483
|
*/
|
|
18112
18484
|
.crewlet-modal__title {
|
|
18113
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);
|
|
18114
18491
|
font-size: var(--font-size-sm);
|
|
18115
18492
|
font-weight: var(--font-weight-semibold);
|
|
18116
18493
|
line-height: var(--font-line-height-tight);
|
|
@@ -18463,9 +18840,14 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18463
18840
|
}
|
|
18464
18841
|
|
|
18465
18842
|
|
|
18466
|
-
/* ObjectHeader-
|
|
18843
|
+
/* ObjectHeader-ZOS22FKX.css */
|
|
18467
18844
|
/*
|
|
18468
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.
|
|
18469
18851
|
*/
|
|
18470
18852
|
.crewlet-object-header {
|
|
18471
18853
|
display: flex;
|
|
@@ -18484,9 +18866,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18484
18866
|
align-items: center;
|
|
18485
18867
|
gap: var(--spacing-2);
|
|
18486
18868
|
min-width: 0;
|
|
18487
|
-
font-size: var(--font-size-
|
|
18488
|
-
letter-spacing: var(--font-letter-spacing-wide);
|
|
18489
|
-
text-transform: uppercase;
|
|
18869
|
+
font-size: var(--font-size-xs);
|
|
18490
18870
|
color: var(--color-text-tertiary);
|
|
18491
18871
|
}
|
|
18492
18872
|
|
|
@@ -18501,8 +18881,6 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18501
18881
|
overflow: hidden;
|
|
18502
18882
|
text-overflow: ellipsis;
|
|
18503
18883
|
white-space: nowrap;
|
|
18504
|
-
letter-spacing: normal;
|
|
18505
|
-
text-transform: none;
|
|
18506
18884
|
}
|
|
18507
18885
|
|
|
18508
18886
|
.crewlet-object-header__id--mono {
|
|
@@ -18604,9 +18982,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
18604
18982
|
}
|
|
18605
18983
|
|
|
18606
18984
|
.crewlet-fact-line__label {
|
|
18607
|
-
font-size: var(--font-size-
|
|
18608
|
-
letter-spacing: var(--font-letter-spacing-wide);
|
|
18609
|
-
text-transform: uppercase;
|
|
18985
|
+
font-size: var(--font-size-xs);
|
|
18610
18986
|
color: var(--color-text-tertiary);
|
|
18611
18987
|
}
|
|
18612
18988
|
|
|
@@ -22746,6 +23122,169 @@ svg.crewlet-select__chevron {
|
|
|
22746
23122
|
}
|
|
22747
23123
|
|
|
22748
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
|
+
|
|
22749
23288
|
/* ShareDialog-4QDCBWMH.css */
|
|
22750
23289
|
/*
|
|
22751
23290
|
* Three blocks under the title: who to add and at what role, who has access,
|
|
@@ -25456,7 +25995,7 @@ svg.crewlet-select__chevron {
|
|
|
25456
25995
|
}
|
|
25457
25996
|
|
|
25458
25997
|
|
|
25459
|
-
/* StatCard-
|
|
25998
|
+
/* StatCard-HAA3F5GX.css */
|
|
25460
25999
|
/*
|
|
25461
26000
|
* The stat tile.
|
|
25462
26001
|
*
|
|
@@ -25645,6 +26184,12 @@ svg.crewlet-select__chevron {
|
|
|
25645
26184
|
* tiles where only some carry one still stands at one height: its leading is
|
|
25646
26185
|
* set here and the reserve is exactly one line of it, where a reserve in `em`
|
|
25647
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.
|
|
25648
26193
|
*/
|
|
25649
26194
|
.crewlet-statcard__sub {
|
|
25650
26195
|
min-height: calc(1em * var(--font-line-height-body));
|
|
@@ -25653,9 +26198,8 @@ svg.crewlet-select__chevron {
|
|
|
25653
26198
|
/* The quiet step, with the label. The line qualifies the number rather than
|
|
25654
26199
|
being a second one. */
|
|
25655
26200
|
color: var(--color-text-tertiary);
|
|
25656
|
-
overflow:
|
|
25657
|
-
text-
|
|
25658
|
-
white-space: nowrap;
|
|
26201
|
+
overflow-wrap: anywhere;
|
|
26202
|
+
text-wrap: balance;
|
|
25659
26203
|
}
|
|
25660
26204
|
|
|
25661
26205
|
/*
|
|
@@ -25690,7 +26234,7 @@ svg.crewlet-select__chevron {
|
|
|
25690
26234
|
.crewlet-statcard--info .crewlet-statcard__value { color: var(--color-feedback-info-ink); }
|
|
25691
26235
|
|
|
25692
26236
|
|
|
25693
|
-
/* StatGroup-
|
|
26237
|
+
/* StatGroup-ZMW7VQWP.css */
|
|
25694
26238
|
/*
|
|
25695
26239
|
* A row of stat tiles.
|
|
25696
26240
|
*
|
|
@@ -25698,11 +26242,29 @@ svg.crewlet-select__chevron {
|
|
|
25698
26242
|
* tiles appeared and vanished moved every number on the page for a reason that
|
|
25699
26243
|
* had nothing to do with the numbers, which is exactly what a reader watching
|
|
25700
26244
|
* a live board is trying not to have happen.
|
|
26245
|
+
*
|
|
26246
|
+
* IT FOLDS BY ITS OWN WIDTH, never the window's. The row used to drop to two
|
|
26247
|
+
* columns under a 1024px viewport, but a row's width is whatever its column
|
|
26248
|
+
* leaves it: beside the rail and a settings column at exactly 1024 a
|
|
26249
|
+
* four-column row was 489px wide, its tiles about 120px each, and its figures
|
|
26250
|
+
* were cut ("Not s…", "1.6 …"), while on a phone a three-column row folded to
|
|
26251
|
+
* two and left its third tile alone on a row of its own. So the row is a size
|
|
26252
|
+
* container, and the tiles take their place from the row's own width.
|
|
26253
|
+
*
|
|
26254
|
+
* TWELVE TRACKS, AND EACH TILE SPANS ITS SHARE. A container query styles what
|
|
26255
|
+
* is inside the container, never the container itself, so the row cannot
|
|
26256
|
+
* change its own column count by its own width. Its tiles can change how many
|
|
26257
|
+
* of its twelve tracks they span, which is the same layout: twelve divides by
|
|
26258
|
+
* every count a row takes (one, two, three and four a row).
|
|
26259
|
+
*
|
|
26260
|
+
* The row's width comes from where it stands, as a block's does: inline-size
|
|
26261
|
+
* containment means its contents never widen it.
|
|
25701
26262
|
*/
|
|
25702
26263
|
|
|
25703
26264
|
.crewlet-stat-group {
|
|
26265
|
+
container: crewlet-stat-group / inline-size;
|
|
25704
26266
|
display: grid;
|
|
25705
|
-
grid-template-columns: repeat(
|
|
26267
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
25706
26268
|
/* The flush-panel recipe: the card's surface, its hairline and its 12px
|
|
25707
26269
|
corner, flat as every card is, and `overflow: hidden`, which is what lets
|
|
25708
26270
|
the tiles inside sit against the corners without their own hairlines
|
|
@@ -25713,8 +26275,19 @@ svg.crewlet-select__chevron {
|
|
|
25713
26275
|
overflow: hidden;
|
|
25714
26276
|
}
|
|
25715
26277
|
|
|
25716
|
-
/*
|
|
25717
|
-
.
|
|
26278
|
+
/*
|
|
26279
|
+
* Inside another card: the card's surface and edge are the row's.
|
|
26280
|
+
*
|
|
26281
|
+
* A ROW STANDING IN A CARD IS FLUSH WHETHER OR NOT ITS CALLER SAID SO. Six
|
|
26282
|
+
* settings pages wrapped a row in a card without `flush`, and each drew the
|
|
26283
|
+
* row's own edge and 12px corner one pixel inside the card's: a box inside a
|
|
26284
|
+
* box, and inside a padded body a third frame. A row that is a card's content,
|
|
26285
|
+
* or its body's, is that card's row; `flush` is for a host that is not a
|
|
26286
|
+
* Card (a widget's frame, a panel of an application's own).
|
|
26287
|
+
*/
|
|
26288
|
+
.crewlet-stat-group--flush,
|
|
26289
|
+
.crewlet-card > .crewlet-stat-group,
|
|
26290
|
+
.crewlet-card__body > .crewlet-stat-group {
|
|
25718
26291
|
background: transparent;
|
|
25719
26292
|
border: 0;
|
|
25720
26293
|
border-radius: var(--radius-none);
|
|
@@ -25740,40 +26313,120 @@ svg.crewlet-select__chevron {
|
|
|
25740
26313
|
}
|
|
25741
26314
|
|
|
25742
26315
|
/*
|
|
25743
|
-
* A
|
|
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
|
+
|
|
26342
|
+
/*
|
|
26343
|
+
* Each tile spans its share of the twelve tracks: the row's `columns`, set on
|
|
26344
|
+
* it as `--crewlet-stat-group-cols`, a row.
|
|
26345
|
+
*/
|
|
26346
|
+
.crewlet-stat-group > * {
|
|
26347
|
+
grid-column: span calc(12 / var(--crewlet-stat-group-cols, 4));
|
|
26348
|
+
}
|
|
26349
|
+
|
|
26350
|
+
/*
|
|
26351
|
+
* The hairlines between tiles: one before every tile that does not start a
|
|
26352
|
+
* row, and one above every tile that is not on the first.
|
|
25744
26353
|
*
|
|
25745
26354
|
* NAMED TWICE, ON PURPOSE. The rule above clears the tile's own border and
|
|
25746
26355
|
* weighs two classes, so a one-class selector here loses to it and the row
|
|
25747
26356
|
* of numbers runs together with nothing between the columns. The first
|
|
25748
|
-
* selector matches whatever a caller puts in the row; the second
|
|
25749
|
-
*
|
|
26357
|
+
* selector of each pair matches whatever a caller puts in the row; the second
|
|
26358
|
+
* weighs at least as much as the rule it has to beat, and sits after it.
|
|
25750
26359
|
*/
|
|
25751
26360
|
.crewlet-stat-group > * + *,
|
|
25752
26361
|
.crewlet-stat-group > .crewlet-statcard + .crewlet-statcard {
|
|
25753
26362
|
border-left: 1px solid var(--color-border-default);
|
|
25754
26363
|
}
|
|
25755
26364
|
|
|
26365
|
+
.crewlet-stat-group[data-columns='2'] > :nth-child(2n + 1),
|
|
26366
|
+
.crewlet-stat-group[data-columns='2'] > .crewlet-statcard:nth-child(2n + 1),
|
|
26367
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(3n + 1),
|
|
26368
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(3n + 1),
|
|
26369
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(4n + 1),
|
|
26370
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(4n + 1) {
|
|
26371
|
+
border-left: 0;
|
|
26372
|
+
}
|
|
26373
|
+
|
|
26374
|
+
.crewlet-stat-group[data-columns='2'] > :nth-child(n + 3),
|
|
26375
|
+
.crewlet-stat-group[data-columns='2'] > .crewlet-statcard:nth-child(n + 3),
|
|
26376
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(n + 4),
|
|
26377
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(n + 4),
|
|
26378
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(n + 5),
|
|
26379
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(n + 5) {
|
|
26380
|
+
border-top: 1px solid var(--color-border-default);
|
|
26381
|
+
}
|
|
26382
|
+
|
|
25756
26383
|
/*
|
|
25757
|
-
*
|
|
25758
|
-
*
|
|
25759
|
-
*
|
|
25760
|
-
*
|
|
25761
|
-
* rules are written for the general case rather than per column count: the
|
|
25762
|
-
* first tile of each pair loses its left hairline, and everything on the
|
|
25763
|
-
* second row and below gains a top one.
|
|
26384
|
+
* FOUR A ROW FOLD TO TWO under 640px of row (the phone breakpoint's number):
|
|
26385
|
+
* four tiles of 160px is the narrowest at which a six-character figure and a
|
|
26386
|
+
* two-word label still stand on one line each. Two by two keeps every row
|
|
26387
|
+
* full.
|
|
25764
26388
|
*/
|
|
25765
|
-
@
|
|
25766
|
-
.crewlet-stat-group
|
|
25767
|
-
|
|
26389
|
+
@container crewlet-stat-group (width < 640px) {
|
|
26390
|
+
.crewlet-stat-group[data-columns='4'] > *,
|
|
26391
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard {
|
|
26392
|
+
grid-column: span 6;
|
|
25768
26393
|
}
|
|
25769
26394
|
|
|
25770
|
-
.crewlet-stat-group >
|
|
25771
|
-
.crewlet-stat-group > .crewlet-statcard:nth-child(odd) {
|
|
26395
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(odd),
|
|
26396
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(odd) {
|
|
25772
26397
|
border-left: 0;
|
|
25773
26398
|
}
|
|
25774
26399
|
|
|
25775
|
-
.crewlet-stat-group >
|
|
25776
|
-
.crewlet-stat-group > .crewlet-statcard:nth-child(
|
|
26400
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(even),
|
|
26401
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(even) {
|
|
26402
|
+
border-left: 1px solid var(--color-border-default);
|
|
26403
|
+
}
|
|
26404
|
+
|
|
26405
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(n + 3),
|
|
26406
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(n + 3) {
|
|
26407
|
+
border-top: 1px solid var(--color-border-default);
|
|
26408
|
+
}
|
|
26409
|
+
}
|
|
26410
|
+
|
|
26411
|
+
/*
|
|
26412
|
+
* THREE A ROW STACK under 480px of row (the small breakpoint's number), at the
|
|
26413
|
+
* same 160px a tile. Folded to two, three tiles stood two and one, the last
|
|
26414
|
+
* alone at double width and a different height, which read as a tile that had
|
|
26415
|
+
* failed to load; one a row leaves no row short.
|
|
26416
|
+
*/
|
|
26417
|
+
@container crewlet-stat-group (width < 480px) {
|
|
26418
|
+
.crewlet-stat-group[data-columns='3'] > *,
|
|
26419
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard {
|
|
26420
|
+
grid-column: span 12;
|
|
26421
|
+
}
|
|
26422
|
+
|
|
26423
|
+
.crewlet-stat-group[data-columns='3'] > *,
|
|
26424
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard + .crewlet-statcard {
|
|
26425
|
+
border-left: 0;
|
|
26426
|
+
}
|
|
26427
|
+
|
|
26428
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(n + 2),
|
|
26429
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(n + 2) {
|
|
25777
26430
|
border-top: 1px solid var(--color-border-default);
|
|
25778
26431
|
}
|
|
25779
26432
|
}
|
|
@@ -27405,7 +28058,7 @@ b.crewlet-switcher__match {
|
|
|
27405
28058
|
}
|
|
27406
28059
|
|
|
27407
28060
|
|
|
27408
|
-
/* Tag-
|
|
28061
|
+
/* Tag-2DQOVE6W.css */
|
|
27409
28062
|
/*
|
|
27410
28063
|
* The tag: a small pill naming a state, a category or a value.
|
|
27411
28064
|
*
|
|
@@ -27685,12 +28338,22 @@ b.crewlet-switcher__match {
|
|
|
27685
28338
|
--crewlet-tag-line: var(--color-border-strong-hover);
|
|
27686
28339
|
}
|
|
27687
28340
|
|
|
27688
|
-
/*
|
|
27689
|
-
|
|
27690
|
-
|
|
27691
|
-
|
|
28341
|
+
/*
|
|
28342
|
+
* The neutral outline: the neutral pill's own boundary with no fill, and the
|
|
28343
|
+
* tertiary ink, which is a quieter register than the tinted outlines keep. It
|
|
28344
|
+
* is the appearance for a value that is not a state at all, so it says less
|
|
28345
|
+
* than its neighbours on purpose, by its ink and its empty ground.
|
|
28346
|
+
*
|
|
28347
|
+
* NOT BY A FAINTER EDGE. It used to take the plain hairline, the line that
|
|
28348
|
+
* finds a card, and on the card it so often stands on that line measured
|
|
28349
|
+
* 1.07:1 in dark: Limits' "Off" beside a filled "Default", an audit row's
|
|
28350
|
+
* machine and open, a tool's "builtin", all read as loose words rather than
|
|
28351
|
+
* as pills. The strong step is the edge the neutral soft pill already draws
|
|
28352
|
+
* (1.49:1 dark, 1.52:1 light on the card), so the two neutral pills differ by
|
|
28353
|
+
* their fill alone and both read as pills.
|
|
28354
|
+
*/
|
|
27692
28355
|
.crewlet-tag--neutral.crewlet-tag--outline {
|
|
27693
|
-
border-color: var(--color-border-
|
|
28356
|
+
border-color: var(--color-border-strong);
|
|
27694
28357
|
--crewlet-tag-ink: var(--color-text-tertiary);
|
|
27695
28358
|
}
|
|
27696
28359
|
|
|
@@ -28714,6 +29377,61 @@ b.crewlet-switcher__match {
|
|
|
28714
29377
|
}
|
|
28715
29378
|
|
|
28716
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
|
+
|
|
28717
29435
|
/* TimeWindowPicker-I3HXC74I.css */
|
|
28718
29436
|
/*
|
|
28719
29437
|
* TimeWindowPicker: one trigger over one panel.
|