@crewlethq/ui 0.17.1 → 0.18.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 -1
- package/dist/AccessDeniedCard/AccessDeniedCard.d.ts +39 -0
- package/dist/AccessDeniedCard/index.d.ts +3 -0
- package/dist/AccessDeniedCard/index.js +8 -0
- package/dist/AccessDeniedCard-WXM5DBDZ.css +8 -0
- package/dist/ArtifactCard/ArtifactCard.d.ts +61 -0
- package/dist/ArtifactCard/index.d.ts +3 -0
- package/dist/ArtifactCard/index.js +12 -0
- package/dist/ArtifactCard-EXVAEBV6.css +109 -0
- package/dist/AvatarPicker/index.js +4 -4
- package/dist/ChangeMark/ChangeMark.d.ts +26 -0
- package/dist/ChangeMark/index.d.ts +3 -0
- package/dist/ChangeMark/index.js +8 -0
- package/dist/ChangeMark-3VMTW7MT.css +22 -0
- package/dist/Combobox/index.js +1 -1
- package/dist/CommandPalette/index.js +3 -3
- package/dist/CursorFlag/CursorFlag.d.ts +34 -0
- package/dist/CursorFlag/index.d.ts +3 -0
- package/dist/CursorFlag/index.js +3 -0
- package/dist/CursorFlag-AJQJBUGY.css +61 -0
- package/dist/DataTable/index.js +6 -6
- package/dist/DataView/index.js +12 -12
- package/dist/DateTimePicker/index.js +2 -2
- package/dist/FollowBanner/FollowBanner.d.ts +35 -0
- package/dist/FollowBanner/index.d.ts +2 -0
- package/dist/FollowBanner/index.js +7 -0
- package/dist/FrameProtocol/index.d.ts +2 -0
- package/dist/FrameProtocol/index.js +2 -0
- package/dist/FrameProtocol/protocol.d.ts +164 -0
- package/dist/HuePicker/index.js +2 -2
- package/dist/LinkInterstitial/LinkInterstitial.d.ts +41 -0
- package/dist/LinkInterstitial/index.d.ts +3 -0
- package/dist/LinkInterstitial/index.js +11 -0
- package/dist/LinkInterstitial-ET4MSVSV.css +34 -0
- package/dist/ListInput/index.js +1 -1
- package/dist/LiveCursor/LiveCursor.d.ts +34 -0
- package/dist/LiveCursor/index.d.ts +3 -0
- package/dist/LiveCursor/index.js +4 -0
- package/dist/LiveCursor-DZHGIYWE.css +47 -0
- package/dist/MarkdownEditor/index.js +2 -2
- package/dist/Modal/index.js +2 -2
- package/dist/OrgTable/index.js +2 -2
- package/dist/PresenceModel/index.d.ts +2 -0
- package/dist/PresenceModel/index.js +3 -0
- package/dist/PresenceModel/presence.d.ts +80 -0
- package/dist/PresenceRing/PresenceRing.d.ts +31 -0
- package/dist/PresenceRing/index.d.ts +3 -0
- package/dist/PresenceRing/index.js +2 -0
- package/dist/PresenceRing-M4C22Q6U.css +68 -0
- package/dist/PresenceStack/PresenceStack.d.ts +36 -0
- package/dist/PresenceStack/index.d.ts +3 -0
- package/dist/PresenceStack/index.js +9 -0
- package/dist/PresenceStack-QSXQJND5.css +59 -0
- package/dist/PricingCard/index.js +2 -2
- package/dist/Principal/Principal.d.ts +35 -0
- package/dist/Principal/index.d.ts +2 -0
- package/dist/Principal/index.js +4 -0
- package/dist/PrincipalPicker/PrincipalPicker.d.ts +45 -0
- package/dist/PrincipalPicker/index.d.ts +3 -0
- package/dist/PrincipalPicker/index.js +12 -0
- package/dist/PrincipalPicker-7NNZTGUP.css +41 -0
- package/dist/SandboxedFrame/SandboxedFrame.d.ts +142 -0
- package/dist/SandboxedFrame/index.d.ts +3 -0
- package/dist/SandboxedFrame/index.js +8 -0
- package/dist/SandboxedFrame-L6HBQZCD.css +50 -0
- package/dist/ShareDialog/ShareDialog.d.ts +101 -0
- package/dist/ShareDialog/index.d.ts +5 -0
- package/dist/ShareDialog/index.js +19 -0
- package/dist/ShareDialog/roles.d.ts +10 -0
- package/dist/ShareDialog-YZ4F37MW.css +146 -0
- package/dist/SheetGrid/SheetGrid.d.ts +78 -0
- package/dist/SheetGrid/cells.d.ts +117 -0
- package/dist/SheetGrid/index.d.ts +5 -0
- package/dist/SheetGrid/index.js +18 -0
- package/dist/SheetGrid-4HOXDVIB.css +595 -0
- package/dist/SheetModel/clipboard.d.ts +37 -0
- package/dist/SheetModel/edits.d.ts +68 -0
- package/dist/SheetModel/index.d.ts +14 -0
- package/dist/SheetModel/index.js +3 -0
- package/dist/SheetModel/labels.d.ts +71 -0
- package/dist/SheetModel/navigation.d.ts +79 -0
- package/dist/SheetModel/options.d.ts +28 -0
- package/dist/SheetModel/types.d.ts +126 -0
- package/dist/SheetModel/values.d.ts +76 -0
- package/dist/SheetModel/view.d.ts +32 -0
- package/dist/Switcher/index.js +5 -5
- package/dist/Tag/Tag.d.ts +13 -0
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-4BRQS6GN.css → Tag-SRGTK5KI.css} +42 -0
- package/dist/TagsInput/index.js +2 -2
- package/dist/ThemeSwitcher/apply.d.ts +43 -0
- package/dist/ThemeSwitcher/index.d.ts +4 -2
- package/dist/ThemeSwitcher/index.js +3 -2
- package/dist/ThemeSwitcher/preferences.d.ts +2 -19
- package/dist/ThemeToggle/index.js +3 -2
- package/dist/TimeWindowPicker/index.js +3 -3
- package/dist/Timeline/Timeline.d.ts +7 -2
- package/dist/Timeline/index.js +1 -1
- package/dist/VersionTimeline/VersionTimeline.d.ts +76 -0
- package/dist/VersionTimeline/index.d.ts +3 -0
- package/dist/VersionTimeline/index.js +10 -0
- package/dist/VersionTimeline-EBJ6MIPJ.css +108 -0
- package/dist/{chunk-SBRE7IML.js → chunk-2ONWEDQT.js} +1 -1
- package/dist/chunk-2YR5ZPQ3.js +216 -0
- package/dist/chunk-3BYIWOTV.js +29 -0
- package/dist/chunk-3UAA4IWJ.js +98 -0
- package/dist/chunk-4KP4RC3O.js +25 -0
- package/dist/chunk-4U3GQ7D2.js +99 -0
- package/dist/chunk-5XACKNYR.js +53 -0
- package/dist/{chunk-FSKTOIYC.js → chunk-76FXDZAZ.js} +2 -2
- package/dist/chunk-A7EBCHEG.js +49 -0
- package/dist/{chunk-JCO3SIST.js → chunk-AQCV62K6.js} +1 -1
- package/dist/{chunk-O67VF5MS.js → chunk-AUQPBL4O.js} +2 -2
- package/dist/{chunk-HENOTGUV.js → chunk-BOW2VUCH.js} +2 -2
- package/dist/{chunk-UCYIRDND.js → chunk-DQSXWQMJ.js} +1 -1
- package/dist/chunk-ESKP3TXM.js +1 -0
- package/dist/chunk-F6V2PTN6.js +142 -0
- package/dist/chunk-FW7HN6AP.js +40 -0
- package/dist/chunk-FYXRWBJJ.js +1235 -0
- package/dist/{chunk-LOECRMHA.js → chunk-GFV4LJHH.js} +4 -3
- package/dist/chunk-I6POAB4V.js +20 -0
- package/dist/{chunk-PQ63NLFC.js → chunk-IFKBDRNJ.js} +1 -1
- package/dist/{chunk-6NN2F7GM.js → chunk-KVT3TJVG.js} +4 -4
- package/dist/chunk-LFZ45HV2.js +46 -0
- package/dist/{chunk-6TSZCBID.js → chunk-NP2C4Y4E.js} +1 -1
- package/dist/{chunk-FA2V2VT6.js → chunk-NZY77ZDU.js} +3 -3
- package/dist/chunk-PPAQFGS2.js +12 -0
- package/dist/chunk-S35G6PNC.js +80 -0
- package/dist/chunk-VYDFB6PJ.js +243 -0
- package/dist/chunk-WXAULPBH.js +135 -0
- package/dist/chunk-YM3GJHGW.js +69 -0
- package/dist/chunk-YYZRLLLY.js +822 -0
- package/dist/{chunk-K3OWD7BJ.js → chunk-Z24ZUSTX.js} +4 -19
- package/dist/chunk-ZXXDZJQN.js +36 -0
- package/dist/generated/index.d.ts +18 -0
- package/dist/generated/index.js +82 -62
- package/dist/index.js +82 -62
- package/dist/styles.css +1578 -149
- package/dist/utils/index.js +1 -1
- package/package.json +3 -3
- package/dist/{chunk-DEEVA6TV.js → chunk-2TZATTIU.js} +1 -1
- package/dist/{chunk-2UU5IGZI.js → chunk-5NVKTB6E.js} +1 -1
- package/dist/{chunk-CRVETI5L.js → chunk-CENOOTAV.js} +0 -0
- package/dist/{chunk-JF7X673Z.js → chunk-ERV5BUS3.js} +1 -1
- package/dist/{chunk-NXDEPUVG.js → chunk-PA4CYTBY.js} +1 -1
- package/dist/{chunk-77IEHFY4.js → chunk-QQGWES46.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/* AccessDeniedCard-WXM5DBDZ.css */
|
|
2
|
+
/* The card holds one empty state and nothing else, at a reading width, so a
|
|
3
|
+
refusal in a wide viewer body reads as one sentence rather than a banner. */
|
|
4
|
+
|
|
5
|
+
.crewlet-access-denied-card {
|
|
6
|
+
width: 100%;
|
|
7
|
+
max-width: var(--size-measure);
|
|
8
|
+
margin-inline: auto;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
1
12
|
/* Accordion-ZI2WLD5C.css */
|
|
2
13
|
/*
|
|
3
14
|
* Accordion: a stack of disclosures, one hairline between them.
|
|
@@ -1256,6 +1267,118 @@ a.crewlet-account-row__who:focus-visible {
|
|
|
1256
1267
|
}
|
|
1257
1268
|
|
|
1258
1269
|
|
|
1270
|
+
/* ArtifactCard-EXVAEBV6.css */
|
|
1271
|
+
/*
|
|
1272
|
+
* A card in a gallery: the preview on top at a fixed ratio, so a grid of them
|
|
1273
|
+
* lines up whatever each preview is, then the title and up to three lines of
|
|
1274
|
+
* facts. `compact` is a row with the kind's glyph in place of the preview.
|
|
1275
|
+
*/
|
|
1276
|
+
|
|
1277
|
+
.crewlet-artifact-card {
|
|
1278
|
+
display: flex;
|
|
1279
|
+
flex-direction: column;
|
|
1280
|
+
min-width: 0;
|
|
1281
|
+
overflow: hidden;
|
|
1282
|
+
color: inherit;
|
|
1283
|
+
text-decoration: none;
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.crewlet-artifact-card--compact {
|
|
1287
|
+
flex-direction: row;
|
|
1288
|
+
align-items: flex-start;
|
|
1289
|
+
gap: var(--spacing-3);
|
|
1290
|
+
padding: var(--spacing-3);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
.crewlet-artifact-card__preview {
|
|
1294
|
+
display: flex;
|
|
1295
|
+
align-items: center;
|
|
1296
|
+
justify-content: center;
|
|
1297
|
+
aspect-ratio: 16 / 9;
|
|
1298
|
+
overflow: hidden;
|
|
1299
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
1300
|
+
background: var(--color-surface-inset);
|
|
1301
|
+
color: var(--color-text-tertiary);
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
.crewlet-artifact-card__glyph {
|
|
1305
|
+
display: inline-flex;
|
|
1306
|
+
color: var(--color-text-tertiary);
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.crewlet-artifact-card__glyph--compact {
|
|
1310
|
+
flex: none;
|
|
1311
|
+
align-items: center;
|
|
1312
|
+
justify-content: center;
|
|
1313
|
+
width: var(--size-control-md);
|
|
1314
|
+
height: var(--size-control-md);
|
|
1315
|
+
border-radius: var(--radius-md);
|
|
1316
|
+
background: var(--color-surface-inset);
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
.crewlet-artifact-card__body {
|
|
1320
|
+
display: flex;
|
|
1321
|
+
flex-direction: column;
|
|
1322
|
+
gap: var(--spacing-1);
|
|
1323
|
+
min-width: 0;
|
|
1324
|
+
padding: var(--spacing-3);
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
.crewlet-artifact-card--compact .crewlet-artifact-card__body {
|
|
1328
|
+
padding: 0;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
.crewlet-artifact-card__title-row {
|
|
1332
|
+
display: flex;
|
|
1333
|
+
align-items: center;
|
|
1334
|
+
gap: var(--spacing-1);
|
|
1335
|
+
min-width: 0;
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
.crewlet-artifact-card__title {
|
|
1339
|
+
overflow: hidden;
|
|
1340
|
+
color: var(--color-text-primary);
|
|
1341
|
+
font-weight: var(--font-weight-semibold);
|
|
1342
|
+
text-overflow: ellipsis;
|
|
1343
|
+
white-space: nowrap;
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
.crewlet-artifact-card__pin {
|
|
1347
|
+
display: inline-flex;
|
|
1348
|
+
flex: none;
|
|
1349
|
+
color: var(--color-text-tertiary);
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
.crewlet-artifact-card__facts {
|
|
1353
|
+
display: flex;
|
|
1354
|
+
flex-direction: column;
|
|
1355
|
+
gap: var(--spacing-1);
|
|
1356
|
+
color: var(--color-text-tertiary);
|
|
1357
|
+
font-size: var(--font-size-xs);
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.crewlet-artifact-card__line {
|
|
1361
|
+
display: flex;
|
|
1362
|
+
flex-wrap: wrap;
|
|
1363
|
+
align-items: center;
|
|
1364
|
+
gap: var(--spacing-1) var(--spacing-2);
|
|
1365
|
+
min-width: 0;
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
.crewlet-artifact-card__owner,
|
|
1369
|
+
.crewlet-artifact-card__presence {
|
|
1370
|
+
display: inline-flex;
|
|
1371
|
+
align-items: center;
|
|
1372
|
+
gap: var(--spacing-1);
|
|
1373
|
+
min-width: 0;
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
.crewlet-artifact-card__changes {
|
|
1377
|
+
color: var(--color-text-secondary);
|
|
1378
|
+
font-weight: var(--font-weight-medium);
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
|
|
1259
1382
|
/* AuthLayout-ODHBUPHQ.css */
|
|
1260
1383
|
/*
|
|
1261
1384
|
* The sign-in page: one narrow column near the top of the window.
|
|
@@ -3513,6 +3636,31 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
3513
3636
|
}
|
|
3514
3637
|
|
|
3515
3638
|
|
|
3639
|
+
/* ChangeMark-3VMTW7MT.css */
|
|
3640
|
+
/*
|
|
3641
|
+
* A change mark (ChangeMark.tsx): a notch in the top end corner of whatever
|
|
3642
|
+
* it sits on, which is the nearest positioned ancestor. A triangle drawn by
|
|
3643
|
+
* two borders, so it is a shape at any zoom and needs no glyph.
|
|
3644
|
+
*/
|
|
3645
|
+
|
|
3646
|
+
.crewlet-change-mark {
|
|
3647
|
+
position: absolute;
|
|
3648
|
+
top: 0;
|
|
3649
|
+
inset-inline-end: 0;
|
|
3650
|
+
width: 0;
|
|
3651
|
+
height: 0;
|
|
3652
|
+
border-top: var(--spacing-2) solid var(--color-change-mark);
|
|
3653
|
+
border-inline-start: var(--spacing-2) solid transparent;
|
|
3654
|
+
pointer-events: auto;
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3657
|
+
@media (forced-colors: active) {
|
|
3658
|
+
.crewlet-change-mark {
|
|
3659
|
+
border-top-color: CanvasText;
|
|
3660
|
+
}
|
|
3661
|
+
}
|
|
3662
|
+
|
|
3663
|
+
|
|
3516
3664
|
/* CharacterPicker-ZEYIKUNQ.css */
|
|
3517
3665
|
/*
|
|
3518
3666
|
* The grid of characters.
|
|
@@ -5671,6 +5819,70 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5671
5819
|
}
|
|
5672
5820
|
|
|
5673
5821
|
|
|
5822
|
+
/* CursorFlag-AJQJBUGY.css */
|
|
5823
|
+
/*
|
|
5824
|
+
* A collaborator's name flag (CursorFlag.tsx): the name on a plate of their
|
|
5825
|
+
* presence hue, in the ink the palette suite holds at 4.5:1 on every hue.
|
|
5826
|
+
*/
|
|
5827
|
+
|
|
5828
|
+
.crewlet-cursor-flag {
|
|
5829
|
+
display: inline-flex;
|
|
5830
|
+
align-items: center;
|
|
5831
|
+
gap: var(--spacing-1);
|
|
5832
|
+
box-sizing: border-box;
|
|
5833
|
+
max-width: 16em;
|
|
5834
|
+
padding: 0 calc(var(--spacing-1) * 1.5);
|
|
5835
|
+
border-radius: var(--radius-pill);
|
|
5836
|
+
background: var(--crewlet-presence-hue);
|
|
5837
|
+
box-shadow: var(--shadow-cursor);
|
|
5838
|
+
color: var(--color-presence-flag-text);
|
|
5839
|
+
font-family: var(--font-family-sans);
|
|
5840
|
+
font-size: var(--font-size-2xs);
|
|
5841
|
+
font-weight: var(--font-weight-semibold);
|
|
5842
|
+
line-height: var(--font-line-height-normal);
|
|
5843
|
+
white-space: nowrap;
|
|
5844
|
+
pointer-events: none;
|
|
5845
|
+
user-select: none;
|
|
5846
|
+
}
|
|
5847
|
+
|
|
5848
|
+
.crewlet-cursor-flag--agent {
|
|
5849
|
+
border-radius: var(--radius-xs);
|
|
5850
|
+
}
|
|
5851
|
+
|
|
5852
|
+
.crewlet-cursor-flag__name {
|
|
5853
|
+
overflow: hidden;
|
|
5854
|
+
text-overflow: ellipsis;
|
|
5855
|
+
}
|
|
5856
|
+
|
|
5857
|
+
.crewlet-cursor-flag__glyph {
|
|
5858
|
+
flex: none;
|
|
5859
|
+
}
|
|
5860
|
+
|
|
5861
|
+
/* Pinned to the element it labels, which is the nearest positioned ancestor. */
|
|
5862
|
+
.crewlet-cursor-flag--top-end,
|
|
5863
|
+
.crewlet-cursor-flag--bottom-end {
|
|
5864
|
+
position: absolute;
|
|
5865
|
+
inset-inline-end: 0;
|
|
5866
|
+
z-index: var(--z-index-presence);
|
|
5867
|
+
}
|
|
5868
|
+
|
|
5869
|
+
.crewlet-cursor-flag--top-end {
|
|
5870
|
+
bottom: 100%;
|
|
5871
|
+
}
|
|
5872
|
+
|
|
5873
|
+
.crewlet-cursor-flag--bottom-end {
|
|
5874
|
+
top: 100%;
|
|
5875
|
+
}
|
|
5876
|
+
|
|
5877
|
+
@media (forced-colors: active) {
|
|
5878
|
+
.crewlet-cursor-flag {
|
|
5879
|
+
border: 1px solid CanvasText;
|
|
5880
|
+
background: Canvas;
|
|
5881
|
+
color: CanvasText;
|
|
5882
|
+
}
|
|
5883
|
+
}
|
|
5884
|
+
|
|
5885
|
+
|
|
5674
5886
|
/* DataTable-WZK3V62B.css */
|
|
5675
5887
|
/* ─────────────────────────────────────────────────────────────────
|
|
5676
5888
|
* Default variant.
|
|
@@ -11363,6 +11575,43 @@ svg.crewlet-datetime__chevron {
|
|
|
11363
11575
|
}
|
|
11364
11576
|
|
|
11365
11577
|
|
|
11578
|
+
/* LinkInterstitial-ET4MSVSV.css */
|
|
11579
|
+
/*
|
|
11580
|
+
* The destination, said twice: the host as the claim a reader decides on, in
|
|
11581
|
+
* the title's register, then the whole address in mono for whoever wants to
|
|
11582
|
+
* read it exactly. The address wraps anywhere, because a long URL that does
|
|
11583
|
+
* not wrap pushes the dialog wider than a phone.
|
|
11584
|
+
*/
|
|
11585
|
+
|
|
11586
|
+
.crewlet-link-interstitial {
|
|
11587
|
+
display: flex;
|
|
11588
|
+
flex-direction: column;
|
|
11589
|
+
gap: var(--spacing-2);
|
|
11590
|
+
padding: var(--spacing-3);
|
|
11591
|
+
border-radius: var(--radius-md);
|
|
11592
|
+
background: var(--color-surface-inset);
|
|
11593
|
+
}
|
|
11594
|
+
|
|
11595
|
+
.crewlet-link-interstitial__label {
|
|
11596
|
+
color: var(--color-text-tertiary);
|
|
11597
|
+
font-size: var(--font-size-xs);
|
|
11598
|
+
font-weight: var(--font-weight-medium);
|
|
11599
|
+
}
|
|
11600
|
+
|
|
11601
|
+
.crewlet-link-interstitial__host {
|
|
11602
|
+
color: var(--color-text-primary);
|
|
11603
|
+
font-size: var(--font-size-lg);
|
|
11604
|
+
font-weight: var(--font-weight-semibold);
|
|
11605
|
+
overflow-wrap: anywhere;
|
|
11606
|
+
}
|
|
11607
|
+
|
|
11608
|
+
.crewlet-link-interstitial__href {
|
|
11609
|
+
align-self: flex-start;
|
|
11610
|
+
max-width: 100%;
|
|
11611
|
+
overflow-wrap: anywhere;
|
|
11612
|
+
}
|
|
11613
|
+
|
|
11614
|
+
|
|
11366
11615
|
/* List-MYJIV6MP.css */
|
|
11367
11616
|
/*
|
|
11368
11617
|
* The non-tabular list. One row recipe, four framings.
|
|
@@ -11853,6 +12102,56 @@ svg.crewlet-datetime__chevron {
|
|
|
11853
12102
|
}
|
|
11854
12103
|
|
|
11855
12104
|
|
|
12105
|
+
/* LiveCursor-DZHGIYWE.css */
|
|
12106
|
+
/*
|
|
12107
|
+
* A collaborator's live pointer and its flag (LiveCursor.tsx). It stands at a
|
|
12108
|
+
* point by transform, so a moving cursor repaints without a layout, and the
|
|
12109
|
+
* flag hangs below and after the pointer's tip.
|
|
12110
|
+
*/
|
|
12111
|
+
|
|
12112
|
+
.crewlet-live-cursor {
|
|
12113
|
+
position: absolute;
|
|
12114
|
+
top: 0;
|
|
12115
|
+
left: 0;
|
|
12116
|
+
z-index: var(--z-index-presence);
|
|
12117
|
+
display: block;
|
|
12118
|
+
pointer-events: none;
|
|
12119
|
+
}
|
|
12120
|
+
|
|
12121
|
+
.crewlet-live-cursor__pointer {
|
|
12122
|
+
display: block;
|
|
12123
|
+
color: var(--crewlet-presence-hue);
|
|
12124
|
+
}
|
|
12125
|
+
|
|
12126
|
+
.crewlet-live-cursor__flag {
|
|
12127
|
+
position: absolute;
|
|
12128
|
+
top: calc(var(--spacing-4) + var(--spacing-1));
|
|
12129
|
+
left: var(--spacing-3);
|
|
12130
|
+
}
|
|
12131
|
+
|
|
12132
|
+
.crewlet-live-cursor--resting {
|
|
12133
|
+
opacity: 0.4;
|
|
12134
|
+
}
|
|
12135
|
+
|
|
12136
|
+
.crewlet-live-cursor--gone {
|
|
12137
|
+
display: none;
|
|
12138
|
+
}
|
|
12139
|
+
|
|
12140
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
12141
|
+
.crewlet-live-cursor--glide {
|
|
12142
|
+
transition:
|
|
12143
|
+
transform var(--motion-duration-fast) linear,
|
|
12144
|
+
opacity var(--motion-duration-base) var(--motion-easing-default);
|
|
12145
|
+
}
|
|
12146
|
+
}
|
|
12147
|
+
|
|
12148
|
+
@media (forced-colors: active) {
|
|
12149
|
+
.crewlet-live-cursor__pointer {
|
|
12150
|
+
color: Highlight;
|
|
12151
|
+
}
|
|
12152
|
+
}
|
|
12153
|
+
|
|
12154
|
+
|
|
11856
12155
|
/* MarkdownEditor-ZLSHTOIZ.css */
|
|
11857
12156
|
/*
|
|
11858
12157
|
* Writing markdown (MarkdownEditor.tsx): the bar, the source or its preview,
|
|
@@ -14495,60 +14794,193 @@ svg.crewlet-datetime__chevron {
|
|
|
14495
14794
|
}
|
|
14496
14795
|
|
|
14497
14796
|
|
|
14498
|
-
/*
|
|
14797
|
+
/* PresenceRing-M4C22Q6U.css */
|
|
14499
14798
|
/*
|
|
14500
|
-
*
|
|
14501
|
-
*
|
|
14502
|
-
* The primitive owns the outer card (border, radius, padding, states), the
|
|
14503
|
-
* header, the price block and the grid container, and leaves the body and the
|
|
14504
|
-
* footer to the caller.
|
|
14799
|
+
* The presence hues and the ring drawn in them (PresenceRing.tsx).
|
|
14505
14800
|
*
|
|
14506
|
-
*
|
|
14507
|
-
*
|
|
14508
|
-
*
|
|
14509
|
-
*
|
|
14510
|
-
*
|
|
14511
|
-
* screen behind it are the same green.
|
|
14801
|
+
* ONE TABLE OF HUES for every presence mark: a ring, a flag, a cursor and a
|
|
14802
|
+
* badge's ring each read `--crewlet-presence-hue` from the class
|
|
14803
|
+
* `presenceHueClass` writes, so the six node hues are spelt once. The hue is
|
|
14804
|
+
* the presence colour exception: it ties a mark to a name and is spent on
|
|
14805
|
+
* nothing else.
|
|
14512
14806
|
*/
|
|
14513
14807
|
|
|
14514
|
-
|
|
14515
|
-
|
|
14516
|
-
display: grid;
|
|
14517
|
-
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
14518
|
-
gap: var(--spacing-3);
|
|
14519
|
-
align-items: stretch;
|
|
14808
|
+
.crewlet-presence-hue--purple {
|
|
14809
|
+
--crewlet-presence-hue: var(--color-node-purple);
|
|
14520
14810
|
}
|
|
14521
14811
|
|
|
14522
|
-
|
|
14523
|
-
|
|
14524
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
14525
|
-
}
|
|
14812
|
+
.crewlet-presence-hue--cyan {
|
|
14813
|
+
--crewlet-presence-hue: var(--color-node-cyan);
|
|
14526
14814
|
}
|
|
14527
14815
|
|
|
14528
|
-
|
|
14529
|
-
|
|
14530
|
-
grid-template-columns: minmax(0, 1fr);
|
|
14531
|
-
}
|
|
14816
|
+
.crewlet-presence-hue--green {
|
|
14817
|
+
--crewlet-presence-hue: var(--color-node-green);
|
|
14532
14818
|
}
|
|
14533
14819
|
|
|
14534
|
-
|
|
14535
|
-
|
|
14536
|
-
|
|
14537
|
-
|
|
14538
|
-
|
|
14539
|
-
|
|
14540
|
-
|
|
14541
|
-
|
|
14542
|
-
|
|
14543
|
-
|
|
14544
|
-
|
|
14545
|
-
|
|
14546
|
-
|
|
14547
|
-
|
|
14548
|
-
|
|
14549
|
-
|
|
14550
|
-
|
|
14551
|
-
|
|
14820
|
+
.crewlet-presence-hue--amber {
|
|
14821
|
+
--crewlet-presence-hue: var(--color-node-amber);
|
|
14822
|
+
}
|
|
14823
|
+
|
|
14824
|
+
.crewlet-presence-hue--rose {
|
|
14825
|
+
--crewlet-presence-hue: var(--color-node-rose);
|
|
14826
|
+
}
|
|
14827
|
+
|
|
14828
|
+
.crewlet-presence-hue--blue {
|
|
14829
|
+
--crewlet-presence-hue: var(--color-node-blue);
|
|
14830
|
+
}
|
|
14831
|
+
|
|
14832
|
+
.crewlet-presence-hue--neutral {
|
|
14833
|
+
--crewlet-presence-hue: var(--color-border-strong);
|
|
14834
|
+
}
|
|
14835
|
+
|
|
14836
|
+
/*
|
|
14837
|
+
* THE RING IS INSET and drawn on a pseudo element, so it never moves the
|
|
14838
|
+
* content, never doubles the element's own border and is never read. 2px,
|
|
14839
|
+
* the weight a selection ring is drawn at.
|
|
14840
|
+
*/
|
|
14841
|
+
.crewlet-presence-ring {
|
|
14842
|
+
--crewlet-presence-ring-inset: 1px;
|
|
14843
|
+
position: relative;
|
|
14844
|
+
display: inline-block;
|
|
14845
|
+
}
|
|
14846
|
+
|
|
14847
|
+
.crewlet-presence-ring::after {
|
|
14848
|
+
position: absolute;
|
|
14849
|
+
inset: var(--crewlet-presence-ring-inset);
|
|
14850
|
+
z-index: var(--z-index-presence);
|
|
14851
|
+
border: 2px solid var(--crewlet-presence-hue);
|
|
14852
|
+
border-radius: inherit;
|
|
14853
|
+
content: '';
|
|
14854
|
+
pointer-events: none;
|
|
14855
|
+
}
|
|
14856
|
+
|
|
14857
|
+
.crewlet-presence-ring--idle::after {
|
|
14858
|
+
border-style: dashed;
|
|
14859
|
+
}
|
|
14860
|
+
|
|
14861
|
+
@media (forced-colors: active) {
|
|
14862
|
+
.crewlet-presence-ring::after {
|
|
14863
|
+
border-color: Highlight;
|
|
14864
|
+
}
|
|
14865
|
+
}
|
|
14866
|
+
|
|
14867
|
+
|
|
14868
|
+
/* PresenceStack-QSXQJND5.css */
|
|
14869
|
+
/*
|
|
14870
|
+
* Who is here (PresenceStack.tsx), on the avatar stack's own geometry: the
|
|
14871
|
+
* overlap and the counted chip are the stack's. What this adds is the ring in
|
|
14872
|
+
* each present collaborator's hue, outside the cut-out, and the idle fade.
|
|
14873
|
+
*/
|
|
14874
|
+
|
|
14875
|
+
/* The wrapper (a span, or a button when badges select) carries no edge of its
|
|
14876
|
+
own: the cut-out and the hue ring are drawn on the badge inside it, which
|
|
14877
|
+
has the badge's own outline to follow. */
|
|
14878
|
+
.crewlet-presence-stack > .crewlet-presence-stack__member {
|
|
14879
|
+
display: inline-flex;
|
|
14880
|
+
flex: none;
|
|
14881
|
+
padding: 0;
|
|
14882
|
+
border: 0;
|
|
14883
|
+
background: none;
|
|
14884
|
+
box-shadow: none;
|
|
14885
|
+
color: inherit;
|
|
14886
|
+
font: inherit;
|
|
14887
|
+
}
|
|
14888
|
+
|
|
14889
|
+
.crewlet-presence-stack > .crewlet-presence-stack__member--human {
|
|
14890
|
+
border-radius: var(--radius-circle);
|
|
14891
|
+
}
|
|
14892
|
+
|
|
14893
|
+
.crewlet-presence-stack > .crewlet-presence-stack__member--agent {
|
|
14894
|
+
border-radius: var(--radius-sm);
|
|
14895
|
+
}
|
|
14896
|
+
|
|
14897
|
+
button.crewlet-presence-stack__member {
|
|
14898
|
+
cursor: pointer;
|
|
14899
|
+
}
|
|
14900
|
+
|
|
14901
|
+
button.crewlet-presence-stack__member:focus-visible {
|
|
14902
|
+
outline: 2px solid var(--color-focus);
|
|
14903
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
14904
|
+
}
|
|
14905
|
+
|
|
14906
|
+
.crewlet-presence-stack .crewlet-presence-stack__badge {
|
|
14907
|
+
box-shadow: 0 0 0 2px var(--crewlet-avatar-stack-ground);
|
|
14908
|
+
}
|
|
14909
|
+
|
|
14910
|
+
/* The hue ring sits outside the cut-out, so it reads as a ring round the
|
|
14911
|
+
badge rather than a stroke on it. */
|
|
14912
|
+
.crewlet-presence-stack .crewlet-presence-stack__badge--present {
|
|
14913
|
+
box-shadow:
|
|
14914
|
+
0 0 0 2px var(--crewlet-avatar-stack-ground),
|
|
14915
|
+
0 0 0 4px var(--crewlet-presence-hue);
|
|
14916
|
+
}
|
|
14917
|
+
|
|
14918
|
+
.crewlet-presence-stack .crewlet-presence-stack__badge--idle {
|
|
14919
|
+
opacity: 0.5;
|
|
14920
|
+
}
|
|
14921
|
+
|
|
14922
|
+
@media (forced-colors: active) {
|
|
14923
|
+
.crewlet-presence-stack .crewlet-presence-stack__badge--present {
|
|
14924
|
+
outline: 2px solid Highlight;
|
|
14925
|
+
outline-offset: 2px;
|
|
14926
|
+
}
|
|
14927
|
+
}
|
|
14928
|
+
|
|
14929
|
+
|
|
14930
|
+
/* PricingCard-HTAHG4ST.css */
|
|
14931
|
+
/*
|
|
14932
|
+
* PricingCard, the plan-tier card surface.
|
|
14933
|
+
*
|
|
14934
|
+
* The primitive owns the outer card (border, radius, padding, states), the
|
|
14935
|
+
* header, the price block and the grid container, and leaves the body and the
|
|
14936
|
+
* footer to the caller.
|
|
14937
|
+
*
|
|
14938
|
+
* EVERY COLOUR IS A TOKEN NOW. The tags, the price note and the card's own
|
|
14939
|
+
* ground were dark-theme literals: an amber at rgba(251, 191, 36, 0.75), a
|
|
14940
|
+
* green at #86efac and a white lift at 2 percent, none of which is visible on
|
|
14941
|
+
* a light page. The status hues here are the same soft-and-ink pairs the Tag
|
|
14942
|
+
* and the Callout draw, so a "Save 10 percent" chip and a success tag on the
|
|
14943
|
+
* screen behind it are the same green.
|
|
14944
|
+
*/
|
|
14945
|
+
|
|
14946
|
+
/* ── Grid container ─────────────────────────────────────────────── */
|
|
14947
|
+
.crewlet-pricing-card-grid {
|
|
14948
|
+
display: grid;
|
|
14949
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
14950
|
+
gap: var(--spacing-3);
|
|
14951
|
+
align-items: stretch;
|
|
14952
|
+
}
|
|
14953
|
+
|
|
14954
|
+
@media (max-width: 1200px) {
|
|
14955
|
+
.crewlet-pricing-card-grid {
|
|
14956
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
14957
|
+
}
|
|
14958
|
+
}
|
|
14959
|
+
|
|
14960
|
+
@media (max-width: 768px) {
|
|
14961
|
+
.crewlet-pricing-card-grid {
|
|
14962
|
+
grid-template-columns: minmax(0, 1fr);
|
|
14963
|
+
}
|
|
14964
|
+
}
|
|
14965
|
+
|
|
14966
|
+
/* ── Card root ──────────────────────────────────────────────────── */
|
|
14967
|
+
.crewlet-pricing-card {
|
|
14968
|
+
text-align: left;
|
|
14969
|
+
/* The card recipe, flat: the card's surface, its hairline and its 12px
|
|
14970
|
+
corner. One card surface across the system, so a plan tier and a
|
|
14971
|
+
dashboard panel are the same object. */
|
|
14972
|
+
background: var(--color-surface-subtle);
|
|
14973
|
+
border: 1px solid var(--color-border-default);
|
|
14974
|
+
border-radius: var(--radius-lg);
|
|
14975
|
+
padding: var(--spacing-4);
|
|
14976
|
+
display: flex;
|
|
14977
|
+
flex-direction: column;
|
|
14978
|
+
gap: var(--spacing-3);
|
|
14979
|
+
font-family: var(--font-family-sans);
|
|
14980
|
+
color: var(--color-text-primary);
|
|
14981
|
+
min-width: 0;
|
|
14982
|
+
container-type: inline-size;
|
|
14983
|
+
transition:
|
|
14552
14984
|
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
14553
14985
|
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
14554
14986
|
box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
@@ -14779,6 +15211,50 @@ svg.crewlet-datetime__chevron {
|
|
|
14779
15211
|
}
|
|
14780
15212
|
|
|
14781
15213
|
|
|
15214
|
+
/* PrincipalPicker-7NNZTGUP.css */
|
|
15215
|
+
/*
|
|
15216
|
+
* The suggestions under the field, grouped by kind. A row is the badge and the
|
|
15217
|
+
* name with its second line, the shape every list of principals in the
|
|
15218
|
+
* product draws.
|
|
15219
|
+
*/
|
|
15220
|
+
|
|
15221
|
+
.crewlet-principal-picker {
|
|
15222
|
+
flex: 1 1 auto;
|
|
15223
|
+
min-width: 0;
|
|
15224
|
+
}
|
|
15225
|
+
|
|
15226
|
+
.crewlet-principal-picker__group + .crewlet-principal-picker__group {
|
|
15227
|
+
margin-top: var(--spacing-1);
|
|
15228
|
+
padding-top: var(--spacing-1);
|
|
15229
|
+
border-top: 1px solid var(--color-border-default);
|
|
15230
|
+
}
|
|
15231
|
+
|
|
15232
|
+
.crewlet-principal-picker__heading {
|
|
15233
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
15234
|
+
color: var(--color-text-tertiary);
|
|
15235
|
+
font-size: var(--font-size-xs);
|
|
15236
|
+
font-weight: var(--font-weight-medium);
|
|
15237
|
+
}
|
|
15238
|
+
|
|
15239
|
+
.crewlet-principal-picker__option {
|
|
15240
|
+
display: flex;
|
|
15241
|
+
align-items: center;
|
|
15242
|
+
gap: var(--spacing-2);
|
|
15243
|
+
}
|
|
15244
|
+
|
|
15245
|
+
.crewlet-principal-picker__text {
|
|
15246
|
+
display: flex;
|
|
15247
|
+
flex-direction: column;
|
|
15248
|
+
min-width: 0;
|
|
15249
|
+
}
|
|
15250
|
+
|
|
15251
|
+
.crewlet-principal-picker__name {
|
|
15252
|
+
overflow: hidden;
|
|
15253
|
+
text-overflow: ellipsis;
|
|
15254
|
+
white-space: nowrap;
|
|
15255
|
+
}
|
|
15256
|
+
|
|
15257
|
+
|
|
14782
15258
|
/* Prose-BTXNFT2Q.css */
|
|
14783
15259
|
/*
|
|
14784
15260
|
* Natural language: the proportional face, real leading, a bounded measure.
|
|
@@ -15113,6 +15589,59 @@ svg.crewlet-datetime__chevron {
|
|
|
15113
15589
|
}
|
|
15114
15590
|
|
|
15115
15591
|
|
|
15592
|
+
/* SandboxedFrame-L6HBQZCD.css */
|
|
15593
|
+
/*
|
|
15594
|
+
* The frame fills the box it is given. The page around it does not scroll
|
|
15595
|
+
* round the artifact: the artifact scrolls inside its own document, which is
|
|
15596
|
+
* what a viewer body that holds one wants.
|
|
15597
|
+
*
|
|
15598
|
+
* The region takes focus when the frame hands it back, and keeps the
|
|
15599
|
+
* document's own focus treatment then: a reader who just left a page by
|
|
15600
|
+
* keyboard needs to see where they landed.
|
|
15601
|
+
*/
|
|
15602
|
+
|
|
15603
|
+
.crewlet-sandboxed-frame {
|
|
15604
|
+
position: relative;
|
|
15605
|
+
display: flex;
|
|
15606
|
+
flex-direction: column;
|
|
15607
|
+
width: 100%;
|
|
15608
|
+
height: 100%;
|
|
15609
|
+
min-height: 0;
|
|
15610
|
+
overflow: hidden;
|
|
15611
|
+
border-radius: var(--radius-md);
|
|
15612
|
+
background: var(--color-surface-background);
|
|
15613
|
+
}
|
|
15614
|
+
|
|
15615
|
+
.crewlet-sandboxed-frame__frame {
|
|
15616
|
+
flex: 1 1 auto;
|
|
15617
|
+
display: block;
|
|
15618
|
+
width: 100%;
|
|
15619
|
+
height: 100%;
|
|
15620
|
+
border: 0;
|
|
15621
|
+
background: transparent;
|
|
15622
|
+
}
|
|
15623
|
+
|
|
15624
|
+
/* Kept out of sight while it starts, so a document that has not painted in
|
|
15625
|
+
the reader's palette yet is never what they see. It still loads. */
|
|
15626
|
+
.crewlet-sandboxed-frame[data-state='loading'] .crewlet-sandboxed-frame__frame {
|
|
15627
|
+
visibility: hidden;
|
|
15628
|
+
}
|
|
15629
|
+
|
|
15630
|
+
.crewlet-sandboxed-frame__loading {
|
|
15631
|
+
position: absolute;
|
|
15632
|
+
inset: 0;
|
|
15633
|
+
display: flex;
|
|
15634
|
+
padding: var(--spacing-3);
|
|
15635
|
+
}
|
|
15636
|
+
|
|
15637
|
+
.crewlet-sandboxed-frame__end {
|
|
15638
|
+
display: flex;
|
|
15639
|
+
flex-direction: column;
|
|
15640
|
+
justify-content: flex-start;
|
|
15641
|
+
padding: var(--spacing-4);
|
|
15642
|
+
}
|
|
15643
|
+
|
|
15644
|
+
|
|
15116
15645
|
/* SearchTrigger-KIZLWBEH.css */
|
|
15117
15646
|
/*
|
|
15118
15647
|
* A button drawn as the field it stands in for.
|
|
@@ -15953,140 +16482,887 @@ svg.crewlet-select__chevron {
|
|
|
15953
16482
|
cursor: not-allowed;
|
|
15954
16483
|
}
|
|
15955
16484
|
|
|
15956
|
-
.crewlet-select__option-tick {
|
|
15957
|
-
display: inline-flex;
|
|
15958
|
-
align-items: center;
|
|
15959
|
-
justify-content: center;
|
|
15960
|
-
flex: none;
|
|
15961
|
-
width: 16px;
|
|
15962
|
-
height: 16px;
|
|
15963
|
-
margin-top: 1px;
|
|
15964
|
-
color: var(--color-brand-accent-ink);
|
|
16485
|
+
.crewlet-select__option-tick {
|
|
16486
|
+
display: inline-flex;
|
|
16487
|
+
align-items: center;
|
|
16488
|
+
justify-content: center;
|
|
16489
|
+
flex: none;
|
|
16490
|
+
width: 16px;
|
|
16491
|
+
height: 16px;
|
|
16492
|
+
margin-top: 1px;
|
|
16493
|
+
color: var(--color-brand-accent-ink);
|
|
16494
|
+
}
|
|
16495
|
+
|
|
16496
|
+
/*
|
|
16497
|
+
* AT THE ROW'S END in a list whose rows lead with a mark (see `tickAtEnd`),
|
|
16498
|
+
* so the mark starts at the panel's edge. After a hint it follows the hint,
|
|
16499
|
+
* which already takes the free space; without one it takes it itself.
|
|
16500
|
+
*/
|
|
16501
|
+
.crewlet-select__option-body + .crewlet-select__option-tick--end {
|
|
16502
|
+
margin-left: auto;
|
|
16503
|
+
}
|
|
16504
|
+
|
|
16505
|
+
.crewlet-select__option-body {
|
|
16506
|
+
display: flex;
|
|
16507
|
+
flex-direction: column;
|
|
16508
|
+
gap: 1px;
|
|
16509
|
+
min-width: 0;
|
|
16510
|
+
}
|
|
16511
|
+
|
|
16512
|
+
/*
|
|
16513
|
+
* WHAT AN OPTION DRAWS BEFORE ITS LABEL (a swatch, an avatar, a glyph),
|
|
16514
|
+
* centred on the label's first line rather than on the row, so a row with a
|
|
16515
|
+
* second line keeps its mark beside the words it belongs to. The same slot on
|
|
16516
|
+
* the trigger, while that option is the one chosen, sits on the value's line.
|
|
16517
|
+
*/
|
|
16518
|
+
.crewlet-select__option-leading,
|
|
16519
|
+
.crewlet-select__leading {
|
|
16520
|
+
display: inline-flex;
|
|
16521
|
+
align-items: center;
|
|
16522
|
+
flex: none;
|
|
16523
|
+
}
|
|
16524
|
+
|
|
16525
|
+
.crewlet-select__option-leading {
|
|
16526
|
+
min-height: calc(var(--font-line-height-normal) * 1em);
|
|
16527
|
+
}
|
|
16528
|
+
|
|
16529
|
+
/* A hint ends the row's FIRST line, on the label's baseline, rather than
|
|
16530
|
+
sitting on the row's top edge at its own smaller size. */
|
|
16531
|
+
.crewlet-select__option:has(> .crewlet-listbox__hint) .crewlet-select__option-body,
|
|
16532
|
+
.crewlet-select__option > .crewlet-listbox__hint {
|
|
16533
|
+
align-self: baseline;
|
|
16534
|
+
}
|
|
16535
|
+
|
|
16536
|
+
/*
|
|
16537
|
+
* ONE LINE, WHICH IS WHAT THE ELLIPSIS BELOW WAS ALWAYS FOR. `overflow:
|
|
16538
|
+
* hidden` clips what leaves the box and `text-overflow` replaces what a LINE
|
|
16539
|
+
* cannot hold — and neither does anything to text that is simply allowed to
|
|
16540
|
+
* wrap, which is what this rule did without `white-space`. A long option
|
|
16541
|
+
* silently grew a second line instead of ellipsing, and with the row's own
|
|
16542
|
+
* flex minimum gone (see Listbox.css) that second line was drawn over the
|
|
16543
|
+
* option underneath.
|
|
16544
|
+
*
|
|
16545
|
+
* The trigger's `.crewlet-select__label` a hundred lines above has carried all
|
|
16546
|
+
* three since it was written; this is the same register on the same text, and
|
|
16547
|
+
* `.crewlet-listbox__hint` states the rule outright — "never wrapped: a hint
|
|
16548
|
+
* that broke across two lines turned every row in the list a different
|
|
16549
|
+
* height".
|
|
16550
|
+
*/
|
|
16551
|
+
.crewlet-select__option-label {
|
|
16552
|
+
overflow: hidden;
|
|
16553
|
+
text-overflow: ellipsis;
|
|
16554
|
+
white-space: nowrap;
|
|
16555
|
+
}
|
|
16556
|
+
|
|
16557
|
+
.crewlet-select__option-desc {
|
|
16558
|
+
font-size: var(--font-size-2xs);
|
|
16559
|
+
line-height: var(--font-line-height-normal);
|
|
16560
|
+
color: var(--color-text-tertiary);
|
|
16561
|
+
}
|
|
16562
|
+
|
|
16563
|
+
/* The second line stays the second line on the row the reader is on: it is
|
|
16564
|
+
the same fact, and a description that changes colour with the highlight
|
|
16565
|
+
reads as a different kind of thing under the pointer. */
|
|
16566
|
+
.crewlet-select__menu .crewlet-listbox__option.is-highlight .crewlet-select__option-desc {
|
|
16567
|
+
color: var(--color-text-tertiary);
|
|
16568
|
+
}
|
|
16569
|
+
|
|
16570
|
+
/* ── The search box ──────────────────────────────────────────────────── */
|
|
16571
|
+
|
|
16572
|
+
/*
|
|
16573
|
+
* THE RING IS DRAWN WHERE THE ELEMENT IS. The input below clears the user
|
|
16574
|
+
* agent's outline, and the frame's `:focus-within` rule is the package's one
|
|
16575
|
+
* replacement for it — but that rule's own premise is that everything
|
|
16576
|
+
* focusable sits INSIDE `.crewlet-select`, and this box does not: the panel is
|
|
16577
|
+
* portalled into the layer host, outside that subtree, so `:focus-within`
|
|
16578
|
+
* could never match while focus was in the search field. And focus is moved
|
|
16579
|
+
* here on every open, so the one control a searchable Select puts a reader in
|
|
16580
|
+
* was the one with no focus indicator at all.
|
|
16581
|
+
*
|
|
16582
|
+
* On the band rather than the input, and INSET, because the panel clips: an
|
|
16583
|
+
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
16584
|
+
*/
|
|
16585
|
+
.crewlet-select__search:focus-within {
|
|
16586
|
+
outline: 1px solid var(--color-focus);
|
|
16587
|
+
outline-offset: -1px;
|
|
16588
|
+
}
|
|
16589
|
+
|
|
16590
|
+
.crewlet-select__search {
|
|
16591
|
+
display: flex;
|
|
16592
|
+
align-items: center;
|
|
16593
|
+
gap: var(--spacing-2);
|
|
16594
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
16595
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
16596
|
+
color: var(--color-text-tertiary);
|
|
16597
|
+
flex: none;
|
|
16598
|
+
}
|
|
16599
|
+
|
|
16600
|
+
.crewlet-select__search-input {
|
|
16601
|
+
flex: 1;
|
|
16602
|
+
min-width: 0;
|
|
16603
|
+
background: transparent;
|
|
16604
|
+
border: none;
|
|
16605
|
+
outline: none;
|
|
16606
|
+
font: inherit;
|
|
16607
|
+
font-size: var(--font-size-compact);
|
|
16608
|
+
color: var(--color-text-primary);
|
|
16609
|
+
}
|
|
16610
|
+
|
|
16611
|
+
.crewlet-select__search-input::placeholder {
|
|
16612
|
+
color: var(--color-text-tertiary);
|
|
16613
|
+
opacity: 1;
|
|
16614
|
+
}
|
|
16615
|
+
|
|
16616
|
+
@media (prefers-reduced-motion: reduce) {
|
|
16617
|
+
.crewlet-select {
|
|
16618
|
+
transition: none;
|
|
16619
|
+
}
|
|
16620
|
+
}
|
|
16621
|
+
|
|
16622
|
+
|
|
16623
|
+
/* ShareDialog-YZ4F37MW.css */
|
|
16624
|
+
/*
|
|
16625
|
+
* Three blocks under the title: who to add and at what role, who has access,
|
|
16626
|
+
* and what the whole company may do. Each row of the audience is the badge,
|
|
16627
|
+
* the name over its second line, and the controls at the inline end; the note
|
|
16628
|
+
* and a refusal run the full width under it, so a long sentence never pushes
|
|
16629
|
+
* the controls out of line with the rows above and below.
|
|
16630
|
+
*/
|
|
16631
|
+
|
|
16632
|
+
.crewlet-share-dialog__add {
|
|
16633
|
+
display: flex;
|
|
16634
|
+
align-items: flex-start;
|
|
16635
|
+
gap: var(--spacing-2);
|
|
16636
|
+
}
|
|
16637
|
+
|
|
16638
|
+
.crewlet-share-dialog__section {
|
|
16639
|
+
display: flex;
|
|
16640
|
+
flex-direction: column;
|
|
16641
|
+
gap: var(--spacing-2);
|
|
16642
|
+
}
|
|
16643
|
+
|
|
16644
|
+
.crewlet-share-dialog__heading {
|
|
16645
|
+
margin: 0;
|
|
16646
|
+
color: var(--color-text-secondary);
|
|
16647
|
+
font-size: var(--font-size-sm);
|
|
16648
|
+
font-weight: var(--font-weight-semibold);
|
|
16649
|
+
}
|
|
16650
|
+
|
|
16651
|
+
.crewlet-share-dialog__audience {
|
|
16652
|
+
display: flex;
|
|
16653
|
+
flex-direction: column;
|
|
16654
|
+
gap: var(--spacing-1);
|
|
16655
|
+
margin: 0;
|
|
16656
|
+
padding: 0;
|
|
16657
|
+
list-style: none;
|
|
16658
|
+
}
|
|
16659
|
+
|
|
16660
|
+
.crewlet-share-dialog__row {
|
|
16661
|
+
display: grid;
|
|
16662
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
16663
|
+
align-items: center;
|
|
16664
|
+
column-gap: var(--spacing-3);
|
|
16665
|
+
padding: var(--spacing-2) 0;
|
|
16666
|
+
}
|
|
16667
|
+
|
|
16668
|
+
.crewlet-share-dialog__who {
|
|
16669
|
+
display: flex;
|
|
16670
|
+
flex-direction: column;
|
|
16671
|
+
min-width: 0;
|
|
16672
|
+
}
|
|
16673
|
+
|
|
16674
|
+
.crewlet-share-dialog__name {
|
|
16675
|
+
overflow: hidden;
|
|
16676
|
+
color: var(--color-text-primary);
|
|
16677
|
+
font-weight: var(--font-weight-medium);
|
|
16678
|
+
text-overflow: ellipsis;
|
|
16679
|
+
white-space: nowrap;
|
|
16680
|
+
}
|
|
16681
|
+
|
|
16682
|
+
.crewlet-share-dialog__you,
|
|
16683
|
+
.crewlet-share-dialog__detail {
|
|
16684
|
+
color: var(--color-text-tertiary);
|
|
16685
|
+
font-weight: var(--font-weight-regular);
|
|
16686
|
+
}
|
|
16687
|
+
|
|
16688
|
+
.crewlet-share-dialog__detail {
|
|
16689
|
+
overflow: hidden;
|
|
16690
|
+
font-size: var(--font-size-xs);
|
|
16691
|
+
text-overflow: ellipsis;
|
|
16692
|
+
white-space: nowrap;
|
|
16693
|
+
}
|
|
16694
|
+
|
|
16695
|
+
.crewlet-share-dialog__controls {
|
|
16696
|
+
display: flex;
|
|
16697
|
+
align-items: center;
|
|
16698
|
+
justify-content: flex-end;
|
|
16699
|
+
gap: var(--spacing-1);
|
|
16700
|
+
}
|
|
16701
|
+
|
|
16702
|
+
.crewlet-share-dialog__role,
|
|
16703
|
+
.crewlet-share-dialog__saving {
|
|
16704
|
+
color: var(--color-text-secondary);
|
|
16705
|
+
font-size: var(--font-size-sm);
|
|
16706
|
+
}
|
|
16707
|
+
|
|
16708
|
+
.crewlet-share-dialog__saving {
|
|
16709
|
+
color: var(--color-text-tertiary);
|
|
16710
|
+
}
|
|
16711
|
+
|
|
16712
|
+
.crewlet-share-dialog__note,
|
|
16713
|
+
.crewlet-share-dialog__refusal {
|
|
16714
|
+
grid-column: 2 / -1;
|
|
16715
|
+
font-size: var(--font-size-xs);
|
|
16716
|
+
}
|
|
16717
|
+
|
|
16718
|
+
.crewlet-share-dialog__note {
|
|
16719
|
+
color: var(--color-text-tertiary);
|
|
16720
|
+
}
|
|
16721
|
+
|
|
16722
|
+
.crewlet-share-dialog__refusal {
|
|
16723
|
+
color: var(--color-feedback-danger-ink);
|
|
16724
|
+
}
|
|
16725
|
+
|
|
16726
|
+
.crewlet-share-dialog__refusal:empty {
|
|
16727
|
+
display: none;
|
|
16728
|
+
}
|
|
16729
|
+
|
|
16730
|
+
.crewlet-share-dialog__company {
|
|
16731
|
+
display: flex;
|
|
16732
|
+
align-items: center;
|
|
16733
|
+
gap: var(--spacing-2);
|
|
16734
|
+
}
|
|
16735
|
+
|
|
16736
|
+
.crewlet-share-dialog__company-text {
|
|
16737
|
+
margin: 0;
|
|
16738
|
+
color: var(--color-text-primary);
|
|
16739
|
+
}
|
|
16740
|
+
|
|
16741
|
+
.crewlet-share-dialog__link {
|
|
16742
|
+
display: flex;
|
|
16743
|
+
flex-wrap: wrap;
|
|
16744
|
+
align-items: center;
|
|
16745
|
+
gap: var(--spacing-2);
|
|
16746
|
+
}
|
|
16747
|
+
|
|
16748
|
+
.crewlet-share-dialog__link-note {
|
|
16749
|
+
color: var(--color-text-tertiary);
|
|
16750
|
+
font-size: var(--font-size-xs);
|
|
16751
|
+
}
|
|
16752
|
+
|
|
16753
|
+
/* Under the phone breakpoint the row's controls go under the name, so a
|
|
16754
|
+
role select and a remove control never squeeze the name to an ellipsis. */
|
|
16755
|
+
@media (width < 640px) {
|
|
16756
|
+
.crewlet-share-dialog__row {
|
|
16757
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
16758
|
+
}
|
|
16759
|
+
|
|
16760
|
+
.crewlet-share-dialog__controls {
|
|
16761
|
+
grid-column: 2 / -1;
|
|
16762
|
+
justify-content: flex-start;
|
|
16763
|
+
}
|
|
16764
|
+
|
|
16765
|
+
.crewlet-share-dialog__add {
|
|
16766
|
+
flex-direction: column;
|
|
16767
|
+
align-items: stretch;
|
|
16768
|
+
}
|
|
16769
|
+
}
|
|
16770
|
+
|
|
16771
|
+
|
|
16772
|
+
/* SheetGrid-4HOXDVIB.css */
|
|
16773
|
+
/*
|
|
16774
|
+
* The editable sheet (SheetGrid.tsx) and its cells (cells.tsx).
|
|
16775
|
+
*
|
|
16776
|
+
* ONE EDGE PER CELL. Each cell draws its trailing and bottom hairline only, so
|
|
16777
|
+
* two neighbours never draw two lines between them, and every mark laid over a
|
|
16778
|
+
* cell (the active cell's ring, a collaborator's ring, a selection) is inset
|
|
16779
|
+
* inside that edge rather than doubling it.
|
|
16780
|
+
*
|
|
16781
|
+
* The rows are positioned in a body as tall as every row together, and only
|
|
16782
|
+
* the rows in view are in the document. Every row is a grid on the one column
|
|
16783
|
+
* template the component writes, so a cell is exactly as wide as its header.
|
|
16784
|
+
*/
|
|
16785
|
+
|
|
16786
|
+
.crewlet-sheet-grid {
|
|
16787
|
+
--crewlet-sheet-row-height: var(--size-sheet-row);
|
|
16788
|
+
position: relative;
|
|
16789
|
+
display: flex;
|
|
16790
|
+
flex-direction: column;
|
|
16791
|
+
min-width: 0;
|
|
16792
|
+
min-height: 0;
|
|
16793
|
+
color: var(--color-text-primary);
|
|
16794
|
+
font-family: var(--font-family-sans);
|
|
16795
|
+
font-size: var(--font-size-sm);
|
|
16796
|
+
}
|
|
16797
|
+
|
|
16798
|
+
/* Measured by the component: the resolved row height at the current density. */
|
|
16799
|
+
.crewlet-sheet-grid__probe {
|
|
16800
|
+
position: absolute;
|
|
16801
|
+
width: 0;
|
|
16802
|
+
height: var(--size-sheet-row);
|
|
16803
|
+
visibility: hidden;
|
|
16804
|
+
pointer-events: none;
|
|
16805
|
+
}
|
|
16806
|
+
|
|
16807
|
+
.crewlet-sheet-grid__scroller {
|
|
16808
|
+
position: relative;
|
|
16809
|
+
flex: 1 1 auto;
|
|
16810
|
+
min-height: 0;
|
|
16811
|
+
max-width: 100%;
|
|
16812
|
+
overflow: auto;
|
|
16813
|
+
border: 1px solid var(--color-border-default);
|
|
16814
|
+
border-radius: var(--radius-md);
|
|
16815
|
+
background: var(--color-surface-background);
|
|
16816
|
+
}
|
|
16817
|
+
|
|
16818
|
+
.crewlet-sheet-grid__grid {
|
|
16819
|
+
position: relative;
|
|
16820
|
+
min-width: 100%;
|
|
16821
|
+
}
|
|
16822
|
+
|
|
16823
|
+
.crewlet-sheet-grid__row {
|
|
16824
|
+
display: grid;
|
|
16825
|
+
grid-template-columns: var(--crewlet-sheet-columns);
|
|
16826
|
+
height: var(--crewlet-sheet-row-height);
|
|
16827
|
+
}
|
|
16828
|
+
|
|
16829
|
+
.crewlet-sheet-grid__head {
|
|
16830
|
+
position: sticky;
|
|
16831
|
+
top: 0;
|
|
16832
|
+
z-index: var(--z-index-sticky);
|
|
16833
|
+
}
|
|
16834
|
+
|
|
16835
|
+
.crewlet-sheet-grid__body {
|
|
16836
|
+
position: relative;
|
|
16837
|
+
}
|
|
16838
|
+
|
|
16839
|
+
.crewlet-sheet-grid__body > .crewlet-sheet-grid__row {
|
|
16840
|
+
position: absolute;
|
|
16841
|
+
right: 0;
|
|
16842
|
+
left: 0;
|
|
16843
|
+
}
|
|
16844
|
+
|
|
16845
|
+
.crewlet-sheet-grid__corner,
|
|
16846
|
+
.crewlet-sheet-grid__header,
|
|
16847
|
+
.crewlet-sheet-grid__rownum,
|
|
16848
|
+
.crewlet-sheet-grid__cell {
|
|
16849
|
+
position: relative;
|
|
16850
|
+
display: flex;
|
|
16851
|
+
align-items: center;
|
|
16852
|
+
box-sizing: border-box;
|
|
16853
|
+
min-width: 0;
|
|
16854
|
+
border-right: 1px solid var(--color-border-default);
|
|
16855
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
16856
|
+
background: var(--color-surface-background);
|
|
16857
|
+
}
|
|
16858
|
+
|
|
16859
|
+
.crewlet-sheet-grid__corner,
|
|
16860
|
+
.crewlet-sheet-grid__header {
|
|
16861
|
+
background: var(--color-surface-subtle);
|
|
16862
|
+
color: var(--color-text-secondary);
|
|
16863
|
+
font-size: var(--font-size-xs);
|
|
16864
|
+
font-weight: var(--font-weight-semibold);
|
|
16865
|
+
}
|
|
16866
|
+
|
|
16867
|
+
.crewlet-sheet-grid__corner,
|
|
16868
|
+
.crewlet-sheet-grid__rownum {
|
|
16869
|
+
position: sticky;
|
|
16870
|
+
inset-inline-start: 0;
|
|
16871
|
+
z-index: var(--z-index-raised);
|
|
16872
|
+
justify-content: center;
|
|
16873
|
+
}
|
|
16874
|
+
|
|
16875
|
+
.crewlet-sheet-grid__corner {
|
|
16876
|
+
z-index: var(--z-index-sticky);
|
|
16877
|
+
}
|
|
16878
|
+
|
|
16879
|
+
.crewlet-sheet-grid__header {
|
|
16880
|
+
gap: var(--spacing-1);
|
|
16881
|
+
padding: 0 var(--spacing-2);
|
|
16882
|
+
cursor: default;
|
|
16883
|
+
user-select: none;
|
|
16884
|
+
}
|
|
16885
|
+
|
|
16886
|
+
.crewlet-sheet-grid__header-label {
|
|
16887
|
+
overflow: hidden;
|
|
16888
|
+
text-overflow: ellipsis;
|
|
16889
|
+
white-space: nowrap;
|
|
16890
|
+
}
|
|
16891
|
+
|
|
16892
|
+
.crewlet-sheet-grid__sort {
|
|
16893
|
+
display: inline-flex;
|
|
16894
|
+
flex: none;
|
|
16895
|
+
color: var(--color-text-tertiary);
|
|
16896
|
+
}
|
|
16897
|
+
|
|
16898
|
+
.crewlet-sheet-grid__header-presence {
|
|
16899
|
+
display: inline-flex;
|
|
16900
|
+
flex: none;
|
|
16901
|
+
gap: var(--spacing-1);
|
|
16902
|
+
margin-inline-start: auto;
|
|
16903
|
+
}
|
|
16904
|
+
|
|
16905
|
+
.crewlet-sheet-grid .crewlet-sheet-grid__header-badge {
|
|
16906
|
+
box-shadow: 0 0 0 2px var(--crewlet-presence-hue);
|
|
16907
|
+
}
|
|
16908
|
+
|
|
16909
|
+
.crewlet-sheet-grid__rownum {
|
|
16910
|
+
color: var(--color-text-tertiary);
|
|
16911
|
+
font-size: var(--font-size-xs);
|
|
16912
|
+
font-variant-numeric: tabular-nums;
|
|
16913
|
+
}
|
|
16914
|
+
|
|
16915
|
+
/* The bar at a row's leading edge while somebody has it selected. */
|
|
16916
|
+
.crewlet-sheet-grid__rownum--present::before {
|
|
16917
|
+
position: absolute;
|
|
16918
|
+
top: 0;
|
|
16919
|
+
bottom: 0;
|
|
16920
|
+
inset-inline-start: 0;
|
|
16921
|
+
width: 3px;
|
|
16922
|
+
background: var(--crewlet-presence-hue);
|
|
16923
|
+
content: '';
|
|
16924
|
+
}
|
|
16925
|
+
|
|
16926
|
+
.crewlet-sheet-grid__cell {
|
|
16927
|
+
padding: 0 var(--spacing-2);
|
|
16928
|
+
outline: none;
|
|
16929
|
+
}
|
|
16930
|
+
|
|
16931
|
+
.crewlet-sheet-grid__cell--frozen,
|
|
16932
|
+
.crewlet-sheet-grid__header.crewlet-sheet-grid__cell--frozen {
|
|
16933
|
+
position: sticky;
|
|
16934
|
+
z-index: var(--z-index-raised);
|
|
16935
|
+
}
|
|
16936
|
+
|
|
16937
|
+
.crewlet-sheet-grid__header.crewlet-sheet-grid__cell--frozen {
|
|
16938
|
+
z-index: var(--z-index-sticky);
|
|
16939
|
+
}
|
|
16940
|
+
|
|
16941
|
+
.crewlet-sheet-grid__cell--number,
|
|
16942
|
+
.crewlet-sheet-grid__cell--rating {
|
|
16943
|
+
justify-content: flex-end;
|
|
16944
|
+
}
|
|
16945
|
+
|
|
16946
|
+
.crewlet-sheet-grid__cell--checkbox {
|
|
16947
|
+
justify-content: center;
|
|
16948
|
+
}
|
|
16949
|
+
|
|
16950
|
+
.crewlet-sheet-grid__cell--selected {
|
|
16951
|
+
background: var(--color-brand-accent-soft);
|
|
16952
|
+
}
|
|
16953
|
+
|
|
16954
|
+
.crewlet-sheet-grid__cell:focus-visible,
|
|
16955
|
+
.crewlet-sheet-grid__header:focus-visible {
|
|
16956
|
+
outline: 2px solid var(--color-focus);
|
|
16957
|
+
/* Inside a box that scrolls, an outset ring is clipped by the scroller and
|
|
16958
|
+
painted over by the next row. */
|
|
16959
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
16960
|
+
}
|
|
16961
|
+
|
|
16962
|
+
.crewlet-sheet-grid__cell--editing {
|
|
16963
|
+
z-index: var(--z-index-presence);
|
|
16964
|
+
overflow: visible;
|
|
16965
|
+
}
|
|
16966
|
+
|
|
16967
|
+
.crewlet-sheet-grid__value {
|
|
16968
|
+
display: flex;
|
|
16969
|
+
align-items: center;
|
|
16970
|
+
min-width: 0;
|
|
16971
|
+
max-width: 100%;
|
|
16972
|
+
overflow: hidden;
|
|
16973
|
+
}
|
|
16974
|
+
|
|
16975
|
+
.crewlet-sheet-grid__cell--editing > .crewlet-sheet-grid__value {
|
|
16976
|
+
visibility: hidden;
|
|
16977
|
+
}
|
|
16978
|
+
|
|
16979
|
+
/* PENDING (D23): the reader's value, drawn at once, underlined dashed until
|
|
16980
|
+
the engine confirms it. The word is in the cell's description and the strip. */
|
|
16981
|
+
.crewlet-sheet-grid__cell--pending > .crewlet-sheet-grid__value {
|
|
16982
|
+
text-decoration: underline dashed var(--color-text-tertiary);
|
|
16983
|
+
text-underline-offset: 3px;
|
|
16984
|
+
}
|
|
16985
|
+
|
|
16986
|
+
.crewlet-sheet-grid__cell--pending > .crewlet-sheet-grid__value::after {
|
|
16987
|
+
position: absolute;
|
|
16988
|
+
right: var(--spacing-1);
|
|
16989
|
+
bottom: 2px;
|
|
16990
|
+
left: var(--spacing-1);
|
|
16991
|
+
border-bottom: 1px dashed var(--color-text-tertiary);
|
|
16992
|
+
content: '';
|
|
16993
|
+
}
|
|
16994
|
+
|
|
16995
|
+
.crewlet-sheet-grid__refused {
|
|
16996
|
+
display: inline-flex;
|
|
16997
|
+
flex: none;
|
|
16998
|
+
margin-inline-start: auto;
|
|
16999
|
+
padding-inline-start: var(--spacing-1);
|
|
17000
|
+
color: var(--color-feedback-danger-ink);
|
|
17001
|
+
}
|
|
17002
|
+
|
|
17003
|
+
.crewlet-sheet-grid__message {
|
|
17004
|
+
position: absolute;
|
|
17005
|
+
top: 100%;
|
|
17006
|
+
inset-inline-start: 0;
|
|
17007
|
+
z-index: var(--z-index-presence);
|
|
17008
|
+
box-sizing: border-box;
|
|
17009
|
+
width: max-content;
|
|
17010
|
+
max-width: 20rem;
|
|
17011
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
17012
|
+
border: 1px solid var(--color-feedback-danger-line);
|
|
17013
|
+
border-radius: var(--radius-sm);
|
|
17014
|
+
background: var(--color-surface-elevated);
|
|
17015
|
+
box-shadow: var(--shadow-md);
|
|
17016
|
+
color: var(--color-feedback-danger-ink);
|
|
17017
|
+
font-size: var(--font-size-xs);
|
|
17018
|
+
white-space: normal;
|
|
17019
|
+
}
|
|
17020
|
+
|
|
17021
|
+
.crewlet-sheet-grid__history {
|
|
17022
|
+
position: absolute;
|
|
17023
|
+
top: 50%;
|
|
17024
|
+
inset-inline-end: var(--spacing-1);
|
|
17025
|
+
display: inline-flex;
|
|
17026
|
+
align-items: center;
|
|
17027
|
+
justify-content: center;
|
|
17028
|
+
padding: var(--spacing-1);
|
|
17029
|
+
border: 0;
|
|
17030
|
+
border-radius: var(--radius-sm);
|
|
17031
|
+
background: var(--color-surface-elevated);
|
|
17032
|
+
color: var(--color-text-secondary);
|
|
17033
|
+
transform: translateY(-50%);
|
|
17034
|
+
cursor: pointer;
|
|
17035
|
+
}
|
|
17036
|
+
|
|
17037
|
+
.crewlet-sheet-grid__history:hover {
|
|
17038
|
+
color: var(--color-text-primary);
|
|
17039
|
+
}
|
|
17040
|
+
|
|
17041
|
+
.crewlet-sheet-grid__foot {
|
|
17042
|
+
display: flex;
|
|
17043
|
+
flex-wrap: wrap;
|
|
17044
|
+
align-items: center;
|
|
17045
|
+
justify-content: space-between;
|
|
17046
|
+
gap: var(--spacing-2);
|
|
17047
|
+
padding: var(--spacing-2) 0;
|
|
17048
|
+
color: var(--color-text-tertiary);
|
|
17049
|
+
font-size: var(--font-size-xs);
|
|
17050
|
+
}
|
|
17051
|
+
|
|
17052
|
+
.crewlet-sheet-grid__sync {
|
|
17053
|
+
display: inline-flex;
|
|
17054
|
+
align-items: center;
|
|
17055
|
+
gap: var(--spacing-2);
|
|
17056
|
+
margin-inline-start: auto;
|
|
17057
|
+
}
|
|
17058
|
+
|
|
17059
|
+
.crewlet-sheet-grid__sync--failed {
|
|
17060
|
+
color: var(--color-feedback-danger-ink);
|
|
17061
|
+
}
|
|
17062
|
+
|
|
17063
|
+
/* ── the cells, alone or in the grid ─────────────────────────────────────── */
|
|
17064
|
+
|
|
17065
|
+
.crewlet-sheet-cell__text {
|
|
17066
|
+
overflow: hidden;
|
|
17067
|
+
text-overflow: ellipsis;
|
|
17068
|
+
white-space: nowrap;
|
|
17069
|
+
}
|
|
17070
|
+
|
|
17071
|
+
.crewlet-sheet-cell__number {
|
|
17072
|
+
font-variant-numeric: tabular-nums;
|
|
17073
|
+
}
|
|
17074
|
+
|
|
17075
|
+
.crewlet-sheet-cell__muted {
|
|
17076
|
+
color: var(--color-text-tertiary);
|
|
17077
|
+
}
|
|
17078
|
+
|
|
17079
|
+
.crewlet-sheet-cell__chips {
|
|
17080
|
+
display: inline-flex;
|
|
17081
|
+
gap: var(--spacing-1);
|
|
17082
|
+
min-width: 0;
|
|
17083
|
+
overflow: hidden;
|
|
17084
|
+
}
|
|
17085
|
+
|
|
17086
|
+
.crewlet-sheet-cell__person {
|
|
17087
|
+
display: inline-flex;
|
|
17088
|
+
align-items: center;
|
|
17089
|
+
gap: var(--spacing-1);
|
|
17090
|
+
min-width: 0;
|
|
17091
|
+
}
|
|
17092
|
+
|
|
17093
|
+
.crewlet-sheet-cell__link {
|
|
17094
|
+
overflow: hidden;
|
|
17095
|
+
color: var(--color-text-link-quiet);
|
|
17096
|
+
text-overflow: ellipsis;
|
|
17097
|
+
white-space: nowrap;
|
|
17098
|
+
}
|
|
17099
|
+
|
|
17100
|
+
.crewlet-sheet-cell__link:hover {
|
|
17101
|
+
color: var(--color-brand-accent-ink);
|
|
17102
|
+
}
|
|
17103
|
+
|
|
17104
|
+
.crewlet-sheet-cell__checkbox {
|
|
17105
|
+
display: inline-flex;
|
|
17106
|
+
align-items: center;
|
|
17107
|
+
}
|
|
17108
|
+
|
|
17109
|
+
.crewlet-sheet-cell__check {
|
|
17110
|
+
display: inline-flex;
|
|
17111
|
+
align-items: center;
|
|
17112
|
+
justify-content: center;
|
|
17113
|
+
box-sizing: border-box;
|
|
17114
|
+
width: var(--spacing-4);
|
|
17115
|
+
height: var(--spacing-4);
|
|
17116
|
+
border: 1px solid var(--color-border-control);
|
|
17117
|
+
border-radius: var(--radius-xs);
|
|
17118
|
+
background: var(--color-surface-background);
|
|
17119
|
+
color: var(--color-text-on-accent);
|
|
17120
|
+
}
|
|
17121
|
+
|
|
17122
|
+
.crewlet-sheet-cell__check--on {
|
|
17123
|
+
border-color: var(--color-brand-accent);
|
|
17124
|
+
background: var(--color-brand-accent);
|
|
17125
|
+
}
|
|
17126
|
+
|
|
17127
|
+
.crewlet-sheet-cell__rating,
|
|
17128
|
+
.crewlet-sheet-cell__stars {
|
|
17129
|
+
display: inline-flex;
|
|
17130
|
+
align-items: center;
|
|
17131
|
+
}
|
|
17132
|
+
|
|
17133
|
+
.crewlet-sheet-cell__star {
|
|
17134
|
+
color: var(--color-text-tertiary);
|
|
17135
|
+
}
|
|
17136
|
+
|
|
17137
|
+
.crewlet-sheet-cell__star--on {
|
|
17138
|
+
color: var(--color-feedback-warning);
|
|
17139
|
+
}
|
|
17140
|
+
|
|
17141
|
+
.crewlet-sheet-cell {
|
|
17142
|
+
position: relative;
|
|
17143
|
+
display: inline-flex;
|
|
17144
|
+
flex-direction: column;
|
|
17145
|
+
gap: var(--spacing-1);
|
|
17146
|
+
min-width: 0;
|
|
17147
|
+
}
|
|
17148
|
+
|
|
17149
|
+
.crewlet-sheet-cell__face {
|
|
17150
|
+
display: inline-flex;
|
|
17151
|
+
align-items: center;
|
|
17152
|
+
box-sizing: border-box;
|
|
17153
|
+
min-height: var(--size-control-md);
|
|
17154
|
+
padding: 0 var(--spacing-2);
|
|
17155
|
+
border: 1px solid var(--color-border-control);
|
|
17156
|
+
border-radius: var(--radius-md);
|
|
17157
|
+
background: var(--color-surface-background);
|
|
17158
|
+
color: inherit;
|
|
17159
|
+
font: inherit;
|
|
17160
|
+
text-align: start;
|
|
17161
|
+
cursor: pointer;
|
|
17162
|
+
}
|
|
17163
|
+
|
|
17164
|
+
.crewlet-sheet-cell__face[aria-disabled='true'] {
|
|
17165
|
+
cursor: default;
|
|
17166
|
+
}
|
|
17167
|
+
|
|
17168
|
+
.crewlet-sheet-cell__face:focus-visible {
|
|
17169
|
+
outline: 2px solid var(--color-focus);
|
|
17170
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
17171
|
+
}
|
|
17172
|
+
|
|
17173
|
+
.crewlet-sheet-cell--pending .crewlet-sheet-cell__face {
|
|
17174
|
+
border-style: dashed;
|
|
17175
|
+
}
|
|
17176
|
+
|
|
17177
|
+
.crewlet-sheet-cell__refusal {
|
|
17178
|
+
display: inline-flex;
|
|
17179
|
+
align-items: center;
|
|
17180
|
+
gap: var(--spacing-1);
|
|
17181
|
+
color: var(--color-feedback-danger-ink);
|
|
17182
|
+
font-size: var(--font-size-xs);
|
|
17183
|
+
}
|
|
17184
|
+
|
|
17185
|
+
/* ── the editors ─────────────────────────────────────────────────────────── */
|
|
17186
|
+
|
|
17187
|
+
.crewlet-sheet-editor {
|
|
17188
|
+
position: absolute;
|
|
17189
|
+
inset: 0;
|
|
17190
|
+
z-index: var(--z-index-presence);
|
|
17191
|
+
}
|
|
17192
|
+
|
|
17193
|
+
.crewlet-sheet-cell .crewlet-sheet-editor {
|
|
17194
|
+
position: relative;
|
|
17195
|
+
inset: auto;
|
|
17196
|
+
}
|
|
17197
|
+
|
|
17198
|
+
.crewlet-sheet-editor__input {
|
|
17199
|
+
box-sizing: border-box;
|
|
17200
|
+
width: 100%;
|
|
17201
|
+
height: 100%;
|
|
17202
|
+
min-height: var(--size-control-md);
|
|
17203
|
+
padding: 0 var(--spacing-2);
|
|
17204
|
+
border: 0;
|
|
17205
|
+
border-radius: 0;
|
|
17206
|
+
background: var(--color-surface-elevated);
|
|
17207
|
+
box-shadow: inset 0 0 0 2px var(--color-focus);
|
|
17208
|
+
color: var(--color-text-primary);
|
|
17209
|
+
font: inherit;
|
|
17210
|
+
}
|
|
17211
|
+
|
|
17212
|
+
.crewlet-sheet-editor__input:focus-visible,
|
|
17213
|
+
.crewlet-sheet-editor__filter:focus-visible,
|
|
17214
|
+
.crewlet-sheet-editor__textarea:focus-visible {
|
|
17215
|
+
outline: 2px solid var(--color-focus);
|
|
17216
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
17217
|
+
}
|
|
17218
|
+
|
|
17219
|
+
.crewlet-sheet-editor__panel {
|
|
17220
|
+
position: absolute;
|
|
17221
|
+
top: 100%;
|
|
17222
|
+
inset-inline-start: 0;
|
|
17223
|
+
z-index: var(--z-index-presence);
|
|
17224
|
+
display: flex;
|
|
17225
|
+
flex-direction: column;
|
|
17226
|
+
gap: var(--spacing-2);
|
|
17227
|
+
box-sizing: border-box;
|
|
17228
|
+
min-width: 100%;
|
|
17229
|
+
width: max-content;
|
|
17230
|
+
max-width: min(24rem, 90vw);
|
|
17231
|
+
padding: var(--spacing-2);
|
|
17232
|
+
border: 1px solid var(--color-border-default);
|
|
17233
|
+
border-radius: var(--radius-md);
|
|
17234
|
+
background: var(--color-surface-elevated);
|
|
17235
|
+
box-shadow: var(--shadow-lg);
|
|
17236
|
+
}
|
|
17237
|
+
|
|
17238
|
+
.crewlet-sheet-editor--above .crewlet-sheet-editor__panel {
|
|
17239
|
+
top: auto;
|
|
17240
|
+
bottom: 100%;
|
|
17241
|
+
}
|
|
17242
|
+
|
|
17243
|
+
.crewlet-sheet-editor--list .crewlet-sheet-editor__panel,
|
|
17244
|
+
.crewlet-sheet-editor--long .crewlet-sheet-editor__panel {
|
|
17245
|
+
top: 0;
|
|
17246
|
+
min-width: max(100%, 14rem);
|
|
17247
|
+
}
|
|
17248
|
+
|
|
17249
|
+
.crewlet-sheet-editor--list.crewlet-sheet-editor--above .crewlet-sheet-editor__panel,
|
|
17250
|
+
.crewlet-sheet-editor--long.crewlet-sheet-editor--above .crewlet-sheet-editor__panel {
|
|
17251
|
+
top: auto;
|
|
17252
|
+
bottom: 0;
|
|
17253
|
+
}
|
|
17254
|
+
|
|
17255
|
+
.crewlet-sheet-editor__filter,
|
|
17256
|
+
.crewlet-sheet-editor__textarea {
|
|
17257
|
+
box-sizing: border-box;
|
|
17258
|
+
width: 100%;
|
|
17259
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
17260
|
+
border: 1px solid var(--color-border-control);
|
|
17261
|
+
border-radius: var(--radius-sm);
|
|
17262
|
+
background: var(--color-surface-background);
|
|
17263
|
+
color: var(--color-text-primary);
|
|
17264
|
+
font: inherit;
|
|
15965
17265
|
}
|
|
15966
17266
|
|
|
15967
|
-
|
|
15968
|
-
|
|
15969
|
-
|
|
15970
|
-
|
|
15971
|
-
*/
|
|
15972
|
-
.crewlet-select__option-body + .crewlet-select__option-tick--end {
|
|
15973
|
-
margin-left: auto;
|
|
17267
|
+
.crewlet-sheet-editor__textarea {
|
|
17268
|
+
min-width: 20rem;
|
|
17269
|
+
max-width: 100%;
|
|
17270
|
+
resize: vertical;
|
|
15974
17271
|
}
|
|
15975
17272
|
|
|
15976
|
-
.crewlet-
|
|
17273
|
+
.crewlet-sheet-editor__list {
|
|
15977
17274
|
display: flex;
|
|
15978
17275
|
flex-direction: column;
|
|
15979
|
-
|
|
15980
|
-
|
|
17276
|
+
max-height: 16rem;
|
|
17277
|
+
margin: 0;
|
|
17278
|
+
padding: 0;
|
|
17279
|
+
overflow-y: auto;
|
|
17280
|
+
list-style: none;
|
|
15981
17281
|
}
|
|
15982
17282
|
|
|
15983
|
-
|
|
15984
|
-
|
|
15985
|
-
* centred on the label's first line rather than on the row, so a row with a
|
|
15986
|
-
* second line keeps its mark beside the words it belongs to. The same slot on
|
|
15987
|
-
* the trigger, while that option is the one chosen, sits on the value's line.
|
|
15988
|
-
*/
|
|
15989
|
-
.crewlet-select__option-leading,
|
|
15990
|
-
.crewlet-select__leading {
|
|
15991
|
-
display: inline-flex;
|
|
17283
|
+
.crewlet-sheet-editor__option {
|
|
17284
|
+
display: flex;
|
|
15992
17285
|
align-items: center;
|
|
15993
|
-
|
|
15994
|
-
|
|
15995
|
-
|
|
15996
|
-
|
|
15997
|
-
|
|
17286
|
+
gap: var(--spacing-2);
|
|
17287
|
+
min-height: var(--size-row-sm);
|
|
17288
|
+
padding: 0 var(--spacing-2);
|
|
17289
|
+
border-radius: var(--radius-sm);
|
|
17290
|
+
cursor: pointer;
|
|
15998
17291
|
}
|
|
15999
17292
|
|
|
16000
|
-
|
|
16001
|
-
|
|
16002
|
-
.crewlet-select__option:has(> .crewlet-listbox__hint) .crewlet-select__option-body,
|
|
16003
|
-
.crewlet-select__option > .crewlet-listbox__hint {
|
|
16004
|
-
align-self: baseline;
|
|
17293
|
+
.crewlet-sheet-editor__option--highlight {
|
|
17294
|
+
background: var(--color-surface-hover);
|
|
16005
17295
|
}
|
|
16006
17296
|
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16010
|
-
|
|
16011
|
-
|
|
16012
|
-
* silently grew a second line instead of ellipsing, and with the row's own
|
|
16013
|
-
* flex minimum gone (see Listbox.css) that second line was drawn over the
|
|
16014
|
-
* option underneath.
|
|
16015
|
-
*
|
|
16016
|
-
* The trigger's `.crewlet-select__label` a hundred lines above has carried all
|
|
16017
|
-
* three since it was written; this is the same register on the same text, and
|
|
16018
|
-
* `.crewlet-listbox__hint` states the rule outright — "never wrapped: a hint
|
|
16019
|
-
* that broke across two lines turned every row in the list a different
|
|
16020
|
-
* height".
|
|
16021
|
-
*/
|
|
16022
|
-
.crewlet-select__option-label {
|
|
16023
|
-
overflow: hidden;
|
|
16024
|
-
text-overflow: ellipsis;
|
|
16025
|
-
white-space: nowrap;
|
|
17297
|
+
.crewlet-sheet-editor__mark {
|
|
17298
|
+
display: inline-flex;
|
|
17299
|
+
flex: none;
|
|
17300
|
+
width: var(--spacing-3);
|
|
17301
|
+
color: var(--color-brand-accent-ink);
|
|
16026
17302
|
}
|
|
16027
17303
|
|
|
16028
|
-
.crewlet-
|
|
16029
|
-
|
|
16030
|
-
line-height: var(--font-line-height-normal);
|
|
17304
|
+
.crewlet-sheet-editor__empty {
|
|
17305
|
+
padding: var(--spacing-2);
|
|
16031
17306
|
color: var(--color-text-tertiary);
|
|
16032
17307
|
}
|
|
16033
17308
|
|
|
16034
|
-
|
|
16035
|
-
|
|
16036
|
-
|
|
16037
|
-
|
|
16038
|
-
|
|
17309
|
+
.crewlet-sheet-editor__error {
|
|
17310
|
+
display: flex;
|
|
17311
|
+
align-items: center;
|
|
17312
|
+
gap: var(--spacing-1);
|
|
17313
|
+
margin: 0;
|
|
17314
|
+
color: var(--color-feedback-danger-ink);
|
|
17315
|
+
font-size: var(--font-size-xs);
|
|
16039
17316
|
}
|
|
16040
17317
|
|
|
16041
|
-
|
|
17318
|
+
.crewlet-sheet-editor__conflict {
|
|
17319
|
+
display: flex;
|
|
17320
|
+
flex-direction: column;
|
|
17321
|
+
gap: var(--spacing-2);
|
|
17322
|
+
padding-top: var(--spacing-2);
|
|
17323
|
+
border-top: 1px solid var(--color-border-default);
|
|
17324
|
+
}
|
|
16042
17325
|
|
|
16043
|
-
|
|
16044
|
-
|
|
16045
|
-
|
|
16046
|
-
|
|
16047
|
-
* focusable sits INSIDE `.crewlet-select`, and this box does not: the panel is
|
|
16048
|
-
* portalled into the layer host, outside that subtree, so `:focus-within`
|
|
16049
|
-
* could never match while focus was in the search field. And focus is moved
|
|
16050
|
-
* here on every open, so the one control a searchable Select puts a reader in
|
|
16051
|
-
* was the one with no focus indicator at all.
|
|
16052
|
-
*
|
|
16053
|
-
* On the band rather than the input, and INSET, because the panel clips: an
|
|
16054
|
-
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
16055
|
-
*/
|
|
16056
|
-
.crewlet-select__search:focus-within {
|
|
16057
|
-
outline: 1px solid var(--color-focus);
|
|
16058
|
-
outline-offset: -1px;
|
|
17326
|
+
.crewlet-sheet-editor__conflict-text {
|
|
17327
|
+
margin: 0;
|
|
17328
|
+
color: var(--color-text-secondary);
|
|
17329
|
+
font-size: var(--font-size-xs);
|
|
16059
17330
|
}
|
|
16060
17331
|
|
|
16061
|
-
.crewlet-
|
|
17332
|
+
.crewlet-sheet-editor__conflict-actions {
|
|
16062
17333
|
display: flex;
|
|
16063
|
-
|
|
17334
|
+
flex-wrap: wrap;
|
|
16064
17335
|
gap: var(--spacing-2);
|
|
16065
|
-
padding: var(--spacing-2) var(--spacing-3);
|
|
16066
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
16067
|
-
color: var(--color-text-tertiary);
|
|
16068
|
-
flex: none;
|
|
16069
17336
|
}
|
|
16070
17337
|
|
|
16071
|
-
|
|
16072
|
-
|
|
16073
|
-
|
|
16074
|
-
|
|
16075
|
-
|
|
16076
|
-
|
|
16077
|
-
|
|
16078
|
-
|
|
16079
|
-
|
|
16080
|
-
|
|
17338
|
+
/* A PHONE: the list and long text editors open as a sheet from the bottom of
|
|
17339
|
+
the screen rather than from a cell a thumb has to keep in view. */
|
|
17340
|
+
@media (width < 640px) {
|
|
17341
|
+
.crewlet-sheet-grid .crewlet-sheet-editor--list .crewlet-sheet-editor__panel,
|
|
17342
|
+
.crewlet-sheet-grid .crewlet-sheet-editor--long .crewlet-sheet-editor__panel {
|
|
17343
|
+
position: fixed;
|
|
17344
|
+
top: auto;
|
|
17345
|
+
right: 0;
|
|
17346
|
+
bottom: 0;
|
|
17347
|
+
left: 0;
|
|
17348
|
+
width: auto;
|
|
17349
|
+
max-width: none;
|
|
17350
|
+
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
|
|
17351
|
+
}
|
|
16081
17352
|
|
|
16082
|
-
.crewlet-
|
|
16083
|
-
|
|
16084
|
-
|
|
17353
|
+
.crewlet-sheet-editor__textarea {
|
|
17354
|
+
min-width: 0;
|
|
17355
|
+
}
|
|
16085
17356
|
}
|
|
16086
17357
|
|
|
16087
|
-
@media (
|
|
16088
|
-
.crewlet-
|
|
16089
|
-
|
|
17358
|
+
@media (forced-colors: active) {
|
|
17359
|
+
.crewlet-sheet-grid__cell--selected {
|
|
17360
|
+
background: Highlight;
|
|
17361
|
+
color: HighlightText;
|
|
17362
|
+
}
|
|
17363
|
+
|
|
17364
|
+
.crewlet-sheet-grid__rownum--present::before {
|
|
17365
|
+
background: Highlight;
|
|
16090
17366
|
}
|
|
16091
17367
|
}
|
|
16092
17368
|
|
|
@@ -18704,7 +19980,7 @@ b.crewlet-switcher__match {
|
|
|
18704
19980
|
}
|
|
18705
19981
|
|
|
18706
19982
|
|
|
18707
|
-
/* Tag-
|
|
19983
|
+
/* Tag-SRGTK5KI.css */
|
|
18708
19984
|
/*
|
|
18709
19985
|
* The tag: a small pill naming a state, a category or a value.
|
|
18710
19986
|
*
|
|
@@ -18906,6 +20182,48 @@ b.crewlet-switcher__match {
|
|
|
18906
20182
|
--crewlet-tag-line: var(--color-brand-accent-soft-strong);
|
|
18907
20183
|
}
|
|
18908
20184
|
|
|
20185
|
+
/*
|
|
20186
|
+
* A HUE AN AUTHOR CHOSE for a value (a select option's colour), drawn in the
|
|
20187
|
+
* node steps: the hue's fill under its ink, the line as the outline. Like a
|
|
20188
|
+
* tinted tone, the pill needs no edge of its own at rest: the hue separates
|
|
20189
|
+
* it from any neutral ground.
|
|
20190
|
+
*/
|
|
20191
|
+
.crewlet-tag--hue-purple {
|
|
20192
|
+
--crewlet-tag-fill: var(--color-node-purple-fill);
|
|
20193
|
+
--crewlet-tag-ink: var(--color-node-purple-ink);
|
|
20194
|
+
--crewlet-tag-line: var(--color-node-purple-line);
|
|
20195
|
+
}
|
|
20196
|
+
|
|
20197
|
+
.crewlet-tag--hue-cyan {
|
|
20198
|
+
--crewlet-tag-fill: var(--color-node-cyan-fill);
|
|
20199
|
+
--crewlet-tag-ink: var(--color-node-cyan-ink);
|
|
20200
|
+
--crewlet-tag-line: var(--color-node-cyan-line);
|
|
20201
|
+
}
|
|
20202
|
+
|
|
20203
|
+
.crewlet-tag--hue-green {
|
|
20204
|
+
--crewlet-tag-fill: var(--color-node-green-fill);
|
|
20205
|
+
--crewlet-tag-ink: var(--color-node-green-ink);
|
|
20206
|
+
--crewlet-tag-line: var(--color-node-green-line);
|
|
20207
|
+
}
|
|
20208
|
+
|
|
20209
|
+
.crewlet-tag--hue-amber {
|
|
20210
|
+
--crewlet-tag-fill: var(--color-node-amber-fill);
|
|
20211
|
+
--crewlet-tag-ink: var(--color-node-amber-ink);
|
|
20212
|
+
--crewlet-tag-line: var(--color-node-amber-line);
|
|
20213
|
+
}
|
|
20214
|
+
|
|
20215
|
+
.crewlet-tag--hue-rose {
|
|
20216
|
+
--crewlet-tag-fill: var(--color-node-rose-fill);
|
|
20217
|
+
--crewlet-tag-ink: var(--color-node-rose-ink);
|
|
20218
|
+
--crewlet-tag-line: var(--color-node-rose-line);
|
|
20219
|
+
}
|
|
20220
|
+
|
|
20221
|
+
.crewlet-tag--hue-blue {
|
|
20222
|
+
--crewlet-tag-fill: var(--color-node-blue-fill);
|
|
20223
|
+
--crewlet-tag-ink: var(--color-node-blue-ink);
|
|
20224
|
+
--crewlet-tag-line: var(--color-node-blue-line);
|
|
20225
|
+
}
|
|
20226
|
+
|
|
18909
20227
|
/* ── appearance ────────────────────────────────────────────────────────── */
|
|
18910
20228
|
|
|
18911
20229
|
/*
|
|
@@ -22297,6 +23615,117 @@ svg.crewlet-time-window__tick {
|
|
|
22297
23615
|
}
|
|
22298
23616
|
|
|
22299
23617
|
|
|
23618
|
+
/* VersionTimeline-EBJ6MIPJ.css */
|
|
23619
|
+
/*
|
|
23620
|
+
* A version list beside the version on show. The row's main line is the
|
|
23621
|
+
* button that shows it; the controls sit under the facts, so a reader scanning
|
|
23622
|
+
* the list reads numbers and names rather than a column of buttons.
|
|
23623
|
+
*/
|
|
23624
|
+
|
|
23625
|
+
.crewlet-version-timeline {
|
|
23626
|
+
display: flex;
|
|
23627
|
+
flex-direction: column;
|
|
23628
|
+
gap: var(--spacing-2);
|
|
23629
|
+
min-width: 0;
|
|
23630
|
+
}
|
|
23631
|
+
|
|
23632
|
+
.crewlet-version-timeline__select {
|
|
23633
|
+
display: flex;
|
|
23634
|
+
flex-direction: column;
|
|
23635
|
+
align-items: flex-start;
|
|
23636
|
+
gap: var(--spacing-1);
|
|
23637
|
+
width: 100%;
|
|
23638
|
+
margin: 0;
|
|
23639
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
23640
|
+
border: 0;
|
|
23641
|
+
border-radius: var(--radius-sm);
|
|
23642
|
+
background: transparent;
|
|
23643
|
+
color: var(--color-text-primary);
|
|
23644
|
+
font: inherit;
|
|
23645
|
+
text-align: start;
|
|
23646
|
+
cursor: pointer;
|
|
23647
|
+
}
|
|
23648
|
+
|
|
23649
|
+
.crewlet-version-timeline__select:hover {
|
|
23650
|
+
background: var(--color-surface-hover);
|
|
23651
|
+
}
|
|
23652
|
+
|
|
23653
|
+
/* The version on show. The accent means "where the reader is", which is
|
|
23654
|
+
exactly what this row is. */
|
|
23655
|
+
.crewlet-version-timeline__select[aria-current='true'] {
|
|
23656
|
+
background: var(--color-brand-accent-soft);
|
|
23657
|
+
box-shadow: inset 2px 0 0 var(--color-brand-accent);
|
|
23658
|
+
}
|
|
23659
|
+
|
|
23660
|
+
.crewlet-version-timeline__head {
|
|
23661
|
+
display: flex;
|
|
23662
|
+
flex-wrap: wrap;
|
|
23663
|
+
align-items: baseline;
|
|
23664
|
+
gap: var(--spacing-2);
|
|
23665
|
+
}
|
|
23666
|
+
|
|
23667
|
+
.crewlet-version-timeline__number {
|
|
23668
|
+
font-weight: var(--font-weight-semibold);
|
|
23669
|
+
font-variant-numeric: tabular-nums;
|
|
23670
|
+
}
|
|
23671
|
+
|
|
23672
|
+
.crewlet-version-timeline__latest,
|
|
23673
|
+
.crewlet-version-timeline__label {
|
|
23674
|
+
padding: 0 var(--spacing-1);
|
|
23675
|
+
border-radius: var(--radius-xs);
|
|
23676
|
+
font-size: var(--font-size-xs);
|
|
23677
|
+
}
|
|
23678
|
+
|
|
23679
|
+
.crewlet-version-timeline__latest {
|
|
23680
|
+
background: var(--color-surface-inset);
|
|
23681
|
+
color: var(--color-text-secondary);
|
|
23682
|
+
}
|
|
23683
|
+
|
|
23684
|
+
.crewlet-version-timeline__label {
|
|
23685
|
+
border: 1px solid var(--color-border-default);
|
|
23686
|
+
color: var(--color-text-primary);
|
|
23687
|
+
}
|
|
23688
|
+
|
|
23689
|
+
.crewlet-version-timeline__summary {
|
|
23690
|
+
color: var(--color-text-secondary);
|
|
23691
|
+
overflow-wrap: anywhere;
|
|
23692
|
+
}
|
|
23693
|
+
|
|
23694
|
+
.crewlet-version-timeline__meta,
|
|
23695
|
+
.crewlet-version-timeline__source {
|
|
23696
|
+
display: flex;
|
|
23697
|
+
flex-wrap: wrap;
|
|
23698
|
+
align-items: center;
|
|
23699
|
+
gap: var(--spacing-1);
|
|
23700
|
+
padding-inline: var(--spacing-2);
|
|
23701
|
+
color: var(--color-text-tertiary);
|
|
23702
|
+
font-size: var(--font-size-xs);
|
|
23703
|
+
}
|
|
23704
|
+
|
|
23705
|
+
.crewlet-version-timeline__actions {
|
|
23706
|
+
display: flex;
|
|
23707
|
+
flex-wrap: wrap;
|
|
23708
|
+
gap: var(--spacing-1);
|
|
23709
|
+
padding-inline: var(--spacing-1);
|
|
23710
|
+
}
|
|
23711
|
+
|
|
23712
|
+
/* The version compared against carries the same edge in the strong neutral:
|
|
23713
|
+
it is the other side of the comparison, not where the reader is, so it does
|
|
23714
|
+
not take the accent. */
|
|
23715
|
+
.is-compared > .crewlet-timeline__body > .crewlet-version-timeline__select {
|
|
23716
|
+
box-shadow: inset 2px 0 0 var(--color-border-strong);
|
|
23717
|
+
}
|
|
23718
|
+
|
|
23719
|
+
.crewlet-version-timeline__gap {
|
|
23720
|
+
margin: 0;
|
|
23721
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
23722
|
+
border: 1px dashed var(--color-border-default);
|
|
23723
|
+
border-radius: var(--radius-md);
|
|
23724
|
+
color: var(--color-text-tertiary);
|
|
23725
|
+
font-size: var(--font-size-xs);
|
|
23726
|
+
}
|
|
23727
|
+
|
|
23728
|
+
|
|
22300
23729
|
/* VisuallyHidden-L552H7OA.css */
|
|
22301
23730
|
/*
|
|
22302
23731
|
* Hidden from the eye, read by everything else.
|