@crewlethq/ui 0.18.0 → 0.19.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 +19 -2
- package/dist/AccessDeniedCard/index.js +2 -2
- package/dist/AppShell/index.js +2 -2
- package/dist/ArrangeBoard/ArrangeBoard.d.ts +32 -0
- package/dist/ArrangeBoard/index.d.ts +3 -0
- package/dist/ArrangeBoard/index.js +2 -0
- package/dist/ArrangeBoard-MQE35P6Z.css +80 -0
- package/dist/ArrangeFrame/ArrangeFrame.d.ts +82 -0
- package/dist/ArrangeFrame/index.d.ts +5 -0
- package/dist/ArrangeFrame/index.js +5 -0
- package/dist/ArrangeFrame/useGridResize.d.ts +66 -0
- package/dist/ArrangeFrame-3PLZAG22.css +329 -0
- package/dist/ArrangeGroup/ArrangeGroup.d.ts +42 -0
- package/dist/ArrangeGroup/index.d.ts +3 -0
- package/dist/ArrangeGroup/index.js +4 -0
- package/dist/ArrangeGroup-SHFHA7BE.css +170 -0
- package/dist/ArrangeList/ArrangeList.d.ts +64 -0
- package/dist/ArrangeList/index.d.ts +3 -0
- package/dist/ArrangeList/index.js +10 -0
- package/dist/ArrangeList-NNRTDFI5.css +94 -0
- package/dist/ArtifactCard/index.js +2 -2
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +4 -4
- package/dist/Canvas/index.js +2 -2
- package/dist/Card/index.js +1 -1
- package/dist/Checkbox/index.js +3 -3
- package/dist/Combobox/index.js +4 -4
- package/dist/CommandPalette/index.js +6 -6
- package/dist/Composer/index.js +3 -3
- package/dist/ConfirmField/index.js +3 -3
- package/dist/DataTable/index.js +8 -8
- package/dist/DataView/index.js +13 -13
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/Divider/Divider.d.ts +15 -0
- package/dist/Divider/index.d.ts +3 -0
- package/dist/Divider/index.js +2 -0
- package/dist/Divider-3Z77ZAJH.css +37 -0
- package/dist/HuePicker/HuePicker.d.ts +16 -4
- package/dist/HuePicker/index.js +2 -2
- package/dist/{HuePicker-5QIUR6L7.css → HuePicker-PAIGH6LR.css} +6 -0
- package/dist/IconTile/IconTile.d.ts +23 -0
- package/dist/IconTile/index.d.ts +3 -0
- package/dist/IconTile/index.js +2 -0
- package/dist/IconTile-4GNWTLAW.css +30 -0
- package/dist/Input/index.js +2 -2
- package/dist/LinkInterstitial/index.js +4 -4
- package/dist/ListInput/index.js +5 -5
- package/dist/MarkdownEditor/index.js +2 -2
- package/dist/Menu/index.js +2 -2
- package/dist/Modal/Modal.d.ts +20 -0
- package/dist/Modal/index.js +3 -3
- package/dist/{Modal-RQAYGG4L.css → Modal-XOSV6FAH.css} +14 -0
- package/dist/Note/Note.d.ts +23 -0
- package/dist/Note/index.d.ts +3 -0
- package/dist/Note/index.js +2 -0
- package/dist/Note-RT4L6VUT.css +58 -0
- package/dist/OrgTable/index.js +5 -5
- package/dist/PinTile/PinTile.d.ts +37 -0
- package/dist/PinTile/index.d.ts +3 -0
- package/dist/PinTile/index.js +4 -0
- package/dist/PinTile-IIA25MNZ.css +141 -0
- package/dist/PresenceStack/index.js +1 -1
- package/dist/PrincipalPicker/index.js +5 -5
- package/dist/Reorder/index.d.ts +2 -0
- package/dist/Reorder/index.js +4 -0
- package/dist/Reorder/useReorder.d.ts +138 -0
- package/dist/ShareDialog/index.js +7 -7
- package/dist/SheetGrid/index.js +4 -4
- package/dist/StatGroup/StatGroup.d.ts +7 -1
- package/dist/StatGroup/index.js +1 -1
- package/dist/{StatGroup-HVG6O62W.css → StatGroup-PADTJCUQ.css} +7 -0
- package/dist/Switcher/index.js +8 -8
- package/dist/TagsInput/index.js +3 -3
- package/dist/TimeWindowPicker/index.js +5 -5
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/TreeGrid/index.js +2 -2
- package/dist/chunk-35XVR5JQ.js +81 -0
- package/dist/chunk-63WJLRB2.js +24 -0
- package/dist/{chunk-L4ZLXYPO.js → chunk-6A7P6II6.js} +1 -1
- package/dist/chunk-6KWNXIDE.js +18 -0
- package/dist/chunk-6MIXD6IW.js +49 -0
- package/dist/{chunk-NZY77ZDU.js → chunk-7FQEUNHX.js} +4 -4
- package/dist/{chunk-2TZATTIU.js → chunk-7IJARUIF.js} +18 -5
- package/dist/chunk-AIVZVKYZ.js +126 -0
- package/dist/{chunk-76FXDZAZ.js → chunk-AJESMWJS.js} +4 -4
- package/dist/chunk-DEJHAOC5.js +279 -0
- package/dist/{chunk-ERV5BUS3.js → chunk-EIGEIT4O.js} +3 -3
- package/dist/chunk-FFMCMSJB.js +1 -0
- package/dist/{chunk-LFZ45HV2.js → chunk-G3EEUNZQ.js} +1 -1
- package/dist/{chunk-2YR5ZPQ3.js → chunk-HTCJSUIZ.js} +3 -3
- package/dist/{chunk-75CLJNDQ.js → chunk-I6NZKJGK.js} +1 -1
- package/dist/chunk-IXJHTFXG.js +17 -0
- package/dist/{chunk-3UAA4IWJ.js → chunk-JEDWC3GI.js} +1 -1
- package/dist/{chunk-QVAFL2LE.js → chunk-JXRI5YD2.js} +3 -3
- package/dist/{chunk-ZFH7H7GS.js → chunk-LOLELDBW.js} +1 -1
- package/dist/{chunk-KVT3TJVG.js → chunk-OIMAK5AE.js} +6 -6
- package/dist/chunk-QO7QEQKV.js +24 -0
- package/dist/{chunk-A7EBCHEG.js → chunk-RT323I4I.js} +1 -1
- package/dist/{chunk-BOW2VUCH.js → chunk-T7ICFXEC.js} +1 -1
- package/dist/{chunk-2OLCUNG7.js → chunk-TBIZSQHB.js} +1 -1
- package/dist/{chunk-4U3GQ7D2.js → chunk-TODND5AD.js} +1 -1
- package/dist/{chunk-IFKBDRNJ.js → chunk-UXELEORU.js} +3 -3
- package/dist/{chunk-6NIMZ5XC.js → chunk-VJLYGPPE.js} +1 -1
- package/dist/{chunk-7QFAORCY.js → chunk-WHZFDS62.js} +1 -1
- package/dist/chunk-XJ2QEBMM.js +277 -0
- package/dist/{chunk-PA4CYTBY.js → chunk-XU4ZUGLE.js} +19 -4
- package/dist/{chunk-T3ZWBZ65.js → chunk-YSJYWQSP.js} +2 -2
- package/dist/{chunk-CXBAIVYZ.js → chunk-YSY6UJ4F.js} +1 -1
- package/dist/{chunk-EG6NYWVK.js → chunk-YZCJ63JF.js} +1 -1
- package/dist/generated/index.d.ts +9 -0
- package/dist/generated/index.js +80 -71
- package/dist/index.js +80 -71
- package/dist/styles.css +993 -3
- package/package.json +3 -3
- package/dist/chunk-EXHQ2QVW.js +0 -1
- package/dist/{chunk-ESKP3TXM.js → chunk-4Z7PW3L6.js} +0 -0
- package/dist/{chunk-AQCV62K6.js → chunk-7ZNKEPLN.js} +1 -1
- package/dist/{chunk-OYOQU7O5.js → chunk-EDGCPVVD.js} +1 -1
- package/dist/{chunk-NS7BVLL3.js → chunk-JULMZNGT.js} +1 -1
- package/dist/{chunk-5NVKTB6E.js → chunk-L4H7SSWF.js} +1 -1
- package/dist/{chunk-FYXRWBJJ.js → chunk-PUQY4WXR.js} +2 -2
- package/dist/{chunk-4GB57WIT.js → chunk-Q55TXPA3.js} +1 -1
- package/dist/{chunk-B2Z2CDM5.js → chunk-T5TFZ2JB.js} +1 -1
- package/dist/{chunk-AMH67MLM.js → chunk-TXAFKH2A.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -1267,6 +1267,691 @@ a.crewlet-account-row__who:focus-visible {
|
|
|
1267
1267
|
}
|
|
1268
1268
|
|
|
1269
1269
|
|
|
1270
|
+
/* ArrangeBoard-MQE35P6Z.css */
|
|
1271
|
+
/*
|
|
1272
|
+
* ArrangeBoard: the ground under a page being arranged. Two layers, both
|
|
1273
|
+
* under every block (the board is its own stacking context, so they sit above
|
|
1274
|
+
* its background and below its content): the hatch on `::after`, and the
|
|
1275
|
+
* column lanes on `::before`, shown only while a block is carried or resized.
|
|
1276
|
+
*/
|
|
1277
|
+
|
|
1278
|
+
.crewlet-arrange-board {
|
|
1279
|
+
--crewlet-arrange-board-gap: var(--spacing-4);
|
|
1280
|
+
/* The hatch, as one value: the ground below and the notes standing on it
|
|
1281
|
+
draw the same lines. */
|
|
1282
|
+
--crewlet-arrange-board-hatch: repeating-linear-gradient(
|
|
1283
|
+
-45deg,
|
|
1284
|
+
var(--color-border-hatch) 0 1px,
|
|
1285
|
+
transparent 1px var(--spacing-2)
|
|
1286
|
+
);
|
|
1287
|
+
|
|
1288
|
+
min-width: 0;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
.crewlet-arrange-board.is-editing {
|
|
1292
|
+
position: relative;
|
|
1293
|
+
isolation: isolate;
|
|
1294
|
+
margin-inline: calc(var(--spacing-3) * -1);
|
|
1295
|
+
padding: var(--spacing-5) var(--spacing-3);
|
|
1296
|
+
border-radius: var(--radius-xl);
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
/* Room to land below the last block while one is carried out of a group:
|
|
1300
|
+
a page made only of groups otherwise has no bare stretch of its own. */
|
|
1301
|
+
.crewlet-arrange-board.is-editing:has(.crewlet-arrange-group__body [data-reorder='dragging']) {
|
|
1302
|
+
padding-bottom: var(--spacing-11);
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
/* The hatch: its own ink, the strong hairline's held back to 60%, one
|
|
1306
|
+
diagonal every half step, so the cards standing on it stay the loudest
|
|
1307
|
+
thing on the page. */
|
|
1308
|
+
.crewlet-arrange-board.is-editing::after {
|
|
1309
|
+
content: '';
|
|
1310
|
+
position: absolute;
|
|
1311
|
+
inset: 0;
|
|
1312
|
+
z-index: -1;
|
|
1313
|
+
border-radius: inherit;
|
|
1314
|
+
background: var(--crewlet-arrange-board-hatch);
|
|
1315
|
+
pointer-events: none;
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
/* A note is an annotation on the ground, not a card on it: while the page is
|
|
1319
|
+
arranged its paper shows the hatch through, inside a group as well, where
|
|
1320
|
+
the group's own surface hides the ground. */
|
|
1321
|
+
.crewlet-arrange-board.is-editing .crewlet-note {
|
|
1322
|
+
background: var(--crewlet-arrange-board-hatch), var(--crewlet-note-paper);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
/* The lanes: one tile per column and its gap, as wide as the grid, so the
|
|
1326
|
+
twelfth tile's gap falls outside the board and is not drawn. */
|
|
1327
|
+
.crewlet-arrange-board.is-editing::before {
|
|
1328
|
+
content: '';
|
|
1329
|
+
position: absolute;
|
|
1330
|
+
inset: 0 var(--spacing-3);
|
|
1331
|
+
background: linear-gradient(
|
|
1332
|
+
to right,
|
|
1333
|
+
var(--color-brand-accent-soft) 0 calc(100% - var(--crewlet-arrange-board-gap)),
|
|
1334
|
+
transparent 0
|
|
1335
|
+
)
|
|
1336
|
+
0 0 / calc((100% + var(--crewlet-arrange-board-gap)) / var(--crewlet-arrange-board-columns)) 100%
|
|
1337
|
+
repeat-x;
|
|
1338
|
+
opacity: 0;
|
|
1339
|
+
pointer-events: none;
|
|
1340
|
+
transition: opacity var(--motion-duration-base) var(--motion-easing-default);
|
|
1341
|
+
}
|
|
1342
|
+
.crewlet-arrange-board.is-editing:has([data-reorder='dragging'], .crewlet-arrange-frame.is-resizing)::before {
|
|
1343
|
+
opacity: 1;
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1347
|
+
.crewlet-arrange-board.is-editing::before {
|
|
1348
|
+
transition: none;
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
/* ArrangeFrame-3PLZAG22.css */
|
|
1354
|
+
/*
|
|
1355
|
+
* ArrangeFrame: a block of a page being arranged.
|
|
1356
|
+
*
|
|
1357
|
+
* Off, the frame is layout only. Editing, the block keeps its own look at
|
|
1358
|
+
* rest; hovered or focused, one accent ring is drawn over its own edge and
|
|
1359
|
+
* its toolbar and resize handle appear. Every piece of chrome floats, so a
|
|
1360
|
+
* block is the same size while arranging as afterwards.
|
|
1361
|
+
*/
|
|
1362
|
+
|
|
1363
|
+
.crewlet-arrange-frame {
|
|
1364
|
+
/* The corner every ring and bracket follows: a card's own. */
|
|
1365
|
+
--crewlet-arrange-frame-radius: var(--radius-lg);
|
|
1366
|
+
/* How far outside the block its ring is drawn; the chrome sits on the ring. */
|
|
1367
|
+
--crewlet-arrange-frame-outset: 0px;
|
|
1368
|
+
|
|
1369
|
+
position: relative;
|
|
1370
|
+
display: flex;
|
|
1371
|
+
flex-direction: column;
|
|
1372
|
+
min-width: 0;
|
|
1373
|
+
border-radius: var(--crewlet-arrange-frame-radius);
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
.crewlet-arrange-frame__content {
|
|
1377
|
+
display: flex;
|
|
1378
|
+
flex: 1 1 auto;
|
|
1379
|
+
flex-direction: column;
|
|
1380
|
+
min-width: 0;
|
|
1381
|
+
min-height: 0;
|
|
1382
|
+
}
|
|
1383
|
+
.crewlet-arrange-frame__content > * {
|
|
1384
|
+
flex: 1 1 auto;
|
|
1385
|
+
min-height: 0;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
/* A height of the reader's: the content scrolls inside it. */
|
|
1389
|
+
.crewlet-arrange-frame.is-fixed-height .crewlet-arrange-frame__content > * {
|
|
1390
|
+
overflow: auto;
|
|
1391
|
+
overscroll-behavior: contain;
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
/* ---- Editing ---------------------------------------------------------- */
|
|
1395
|
+
|
|
1396
|
+
/* The block itself is what moves: focused, its ring is its focus mark. The
|
|
1397
|
+
transparent outline is the one forced-colors mode paints in its place. */
|
|
1398
|
+
.crewlet-arrange-frame.is-editing:focus-visible {
|
|
1399
|
+
outline: 2px solid transparent;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
/* The surface is what a pointer moves a block by. */
|
|
1403
|
+
.crewlet-arrange-frame.is-editing:not(.is-container) {
|
|
1404
|
+
cursor: grab;
|
|
1405
|
+
}
|
|
1406
|
+
.crewlet-arrange-frame.is-editing:not(.is-container):active {
|
|
1407
|
+
cursor: grabbing;
|
|
1408
|
+
}
|
|
1409
|
+
.crewlet-arrange-frame.is-editing:not(.is-container) > .crewlet-arrange-frame__content {
|
|
1410
|
+
user-select: none;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
/*
|
|
1414
|
+
* THE ONE RING, over the block's own edge, on the innermost block the
|
|
1415
|
+
* pointer or the focus is in. A hairline drawn exactly over the block's own
|
|
1416
|
+
* 1px border, so the border turns to the accent rather than a second, heavier
|
|
1417
|
+
* line appearing around it.
|
|
1418
|
+
*
|
|
1419
|
+
* IT IS A LAYER OF ITS OWN, above the content. An outline is painted with the
|
|
1420
|
+
* block, under any content that is positioned or scrolls (a card with a fixed
|
|
1421
|
+
* height scrolls its list), and that content covered it. Positioned after the
|
|
1422
|
+
* content with no depth of its own, it paints over the content and under the
|
|
1423
|
+
* toolbar and the handle, which are raised.
|
|
1424
|
+
*/
|
|
1425
|
+
.crewlet-arrange-frame.is-editing::after {
|
|
1426
|
+
content: '';
|
|
1427
|
+
position: absolute;
|
|
1428
|
+
inset: calc(var(--crewlet-arrange-frame-outset) * -1);
|
|
1429
|
+
box-sizing: border-box;
|
|
1430
|
+
border: 1px solid transparent;
|
|
1431
|
+
border-radius: inherit;
|
|
1432
|
+
pointer-events: none;
|
|
1433
|
+
}
|
|
1434
|
+
.crewlet-arrange-frame.is-editing:is(:hover, :focus-visible, :has(:focus-visible)):not(
|
|
1435
|
+
:has(.crewlet-arrange-frame:is(:hover, :focus-visible, :has(:focus-visible)))
|
|
1436
|
+
)::after,
|
|
1437
|
+
.crewlet-arrange-frame.is-selected::after,
|
|
1438
|
+
.crewlet-arrange-frame.is-resizing::after {
|
|
1439
|
+
border-color: var(--color-brand-accent);
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
/* A block with no surface of its own takes its ring a step outside it. */
|
|
1443
|
+
.crewlet-arrange-frame.is-bare {
|
|
1444
|
+
--crewlet-arrange-frame-radius: var(--radius-md);
|
|
1445
|
+
--crewlet-arrange-frame-outset: var(--spacing-1);
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
/* Carried, the block is the hole it leaves. */
|
|
1449
|
+
.crewlet-arrange-frame.is-editing[data-reorder='dragging']::after {
|
|
1450
|
+
border-style: dashed;
|
|
1451
|
+
border-color: var(--color-brand-accent);
|
|
1452
|
+
}
|
|
1453
|
+
.crewlet-arrange-frame[data-reorder='dragging'] > .crewlet-arrange-frame__content {
|
|
1454
|
+
opacity: 0.3;
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1457
|
+
/* Where a block from another list will land: a bar of the accent in the gap
|
|
1458
|
+
before the block it will precede. */
|
|
1459
|
+
.crewlet-arrange-frame[data-reorder-target='before']::before {
|
|
1460
|
+
content: '';
|
|
1461
|
+
position: absolute;
|
|
1462
|
+
top: 0;
|
|
1463
|
+
bottom: 0;
|
|
1464
|
+
left: calc(var(--spacing-2) * -1 - 2px);
|
|
1465
|
+
width: 3px;
|
|
1466
|
+
border-radius: var(--radius-pill);
|
|
1467
|
+
background: var(--color-brand-accent);
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
/* ...or after the last block, when it will land at the end. */
|
|
1471
|
+
.crewlet-arrange-frame[data-reorder-target='after']::before {
|
|
1472
|
+
content: '';
|
|
1473
|
+
position: absolute;
|
|
1474
|
+
top: 0;
|
|
1475
|
+
right: calc(var(--spacing-2) * -1 - 2px);
|
|
1476
|
+
bottom: 0;
|
|
1477
|
+
width: 3px;
|
|
1478
|
+
border-radius: var(--radius-pill);
|
|
1479
|
+
background: var(--color-brand-accent);
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
/* Beside a block that spans its row, the bar runs along the gap above it,
|
|
1483
|
+
or below it when it is the last. */
|
|
1484
|
+
.crewlet-arrange-frame[data-reorder-line='horizontal'][data-reorder-target]::before {
|
|
1485
|
+
top: auto;
|
|
1486
|
+
right: 0;
|
|
1487
|
+
bottom: auto;
|
|
1488
|
+
left: 0;
|
|
1489
|
+
width: auto;
|
|
1490
|
+
height: 3px;
|
|
1491
|
+
}
|
|
1492
|
+
.crewlet-arrange-frame[data-reorder-line='horizontal'][data-reorder-target='before']::before {
|
|
1493
|
+
top: calc(var(--spacing-2) * -1 - 2px);
|
|
1494
|
+
}
|
|
1495
|
+
.crewlet-arrange-frame[data-reorder-line='horizontal'][data-reorder-target='after']::before {
|
|
1496
|
+
bottom: calc(var(--spacing-2) * -1 - 2px);
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
/* Just added: one pulse of the accent around it. */
|
|
1500
|
+
.crewlet-arrange-frame.is-fresh {
|
|
1501
|
+
animation: crewlet-arrange-frame-fresh calc(var(--motion-duration-slow) * 4) var(--motion-easing-out) 1;
|
|
1502
|
+
}
|
|
1503
|
+
@keyframes crewlet-arrange-frame-fresh {
|
|
1504
|
+
0%,
|
|
1505
|
+
40% {
|
|
1506
|
+
box-shadow: 0 0 0 4px var(--color-brand-accent-soft);
|
|
1507
|
+
}
|
|
1508
|
+
100% {
|
|
1509
|
+
box-shadow: 0 0 0 0 transparent;
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
/* ---- The toolbar -------------------------------------------------------- */
|
|
1514
|
+
|
|
1515
|
+
/* On the block's top edge, half outside it: clear of a card's own header
|
|
1516
|
+
links, and of the block above, which is a row gap away. */
|
|
1517
|
+
.crewlet-arrange-frame__bar {
|
|
1518
|
+
position: absolute;
|
|
1519
|
+
top: calc(var(--crewlet-arrange-frame-outset) * -1);
|
|
1520
|
+
right: var(--spacing-3);
|
|
1521
|
+
z-index: var(--z-index-raised);
|
|
1522
|
+
display: flex;
|
|
1523
|
+
align-items: center;
|
|
1524
|
+
gap: 2px;
|
|
1525
|
+
padding: 2px;
|
|
1526
|
+
border: 1px solid var(--color-border-default);
|
|
1527
|
+
border-radius: var(--radius-md);
|
|
1528
|
+
background: var(--color-surface-elevated);
|
|
1529
|
+
box-shadow: var(--shadow-md);
|
|
1530
|
+
transform: translateY(-50%);
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
.crewlet-arrange-frame__sep:first-child {
|
|
1534
|
+
display: none;
|
|
1535
|
+
}
|
|
1536
|
+
.crewlet-arrange-frame__sep {
|
|
1537
|
+
align-self: stretch;
|
|
1538
|
+
width: 1px;
|
|
1539
|
+
margin: 3px 2px;
|
|
1540
|
+
background: var(--color-border-default);
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
/* ---- Resize handles ------------------------------------------------------- */
|
|
1544
|
+
|
|
1545
|
+
.crewlet-arrange-frame__resize {
|
|
1546
|
+
position: absolute;
|
|
1547
|
+
z-index: var(--z-index-raised);
|
|
1548
|
+
padding: 0;
|
|
1549
|
+
border: 0;
|
|
1550
|
+
background: none;
|
|
1551
|
+
color: var(--color-text-tertiary);
|
|
1552
|
+
touch-action: none;
|
|
1553
|
+
}
|
|
1554
|
+
.crewlet-arrange-frame__grip {
|
|
1555
|
+
position: absolute;
|
|
1556
|
+
transition: background-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
1557
|
+
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
1558
|
+
}
|
|
1559
|
+
.crewlet-arrange-frame__resize:hover,
|
|
1560
|
+
.crewlet-arrange-frame__resize:focus-visible,
|
|
1561
|
+
.crewlet-arrange-frame.is-resizing .crewlet-arrange-frame__resize {
|
|
1562
|
+
color: var(--color-brand-accent);
|
|
1563
|
+
}
|
|
1564
|
+
.crewlet-arrange-frame__resize:focus-visible {
|
|
1565
|
+
outline: 2px solid var(--color-focus);
|
|
1566
|
+
outline-offset: 0;
|
|
1567
|
+
border-radius: var(--radius-sm);
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
/* BOTH WAYS: a bracket in the corner, following the card's own radius. */
|
|
1571
|
+
.crewlet-arrange-frame__resize.is-corner {
|
|
1572
|
+
right: calc(var(--crewlet-arrange-frame-outset) * -1);
|
|
1573
|
+
bottom: calc(var(--crewlet-arrange-frame-outset) * -1);
|
|
1574
|
+
width: 22px;
|
|
1575
|
+
height: 22px;
|
|
1576
|
+
cursor: nwse-resize;
|
|
1577
|
+
}
|
|
1578
|
+
.crewlet-arrange-frame__resize.is-corner > .crewlet-arrange-frame__grip {
|
|
1579
|
+
right: 4px;
|
|
1580
|
+
bottom: 4px;
|
|
1581
|
+
width: 10px;
|
|
1582
|
+
height: 10px;
|
|
1583
|
+
border-right: 2px solid currentColor;
|
|
1584
|
+
border-bottom: 2px solid currentColor;
|
|
1585
|
+
border-bottom-right-radius: calc(var(--crewlet-arrange-frame-radius) - 4px);
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
/* WIDTH ONLY: a grip on the right edge, the handle of a column splitter,
|
|
1589
|
+
in the corner bracket's colour and ringed in the page's ground so it reads
|
|
1590
|
+
over the card's border. */
|
|
1591
|
+
.crewlet-arrange-frame__resize.is-edge {
|
|
1592
|
+
top: 50%;
|
|
1593
|
+
right: calc(-7px - var(--crewlet-arrange-frame-outset));
|
|
1594
|
+
width: 14px;
|
|
1595
|
+
height: 36px;
|
|
1596
|
+
cursor: ew-resize;
|
|
1597
|
+
transform: translateY(-50%);
|
|
1598
|
+
}
|
|
1599
|
+
.crewlet-arrange-frame__resize.is-edge > .crewlet-arrange-frame__grip {
|
|
1600
|
+
top: 4px;
|
|
1601
|
+
bottom: 4px;
|
|
1602
|
+
left: 4px;
|
|
1603
|
+
width: 6px;
|
|
1604
|
+
border-radius: var(--radius-pill);
|
|
1605
|
+
background: currentColor;
|
|
1606
|
+
box-shadow: 0 0 0 2px var(--color-surface-background);
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
/* ---- What shows when ---------------------------------------------------- */
|
|
1610
|
+
|
|
1611
|
+
/* The toolbar and the handle belong to the innermost block hovered or
|
|
1612
|
+
focused, and stay while its menu is open or it is being resized. */
|
|
1613
|
+
.crewlet-arrange-frame__bar,
|
|
1614
|
+
.crewlet-arrange-frame__resize {
|
|
1615
|
+
opacity: 0;
|
|
1616
|
+
pointer-events: none;
|
|
1617
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
1618
|
+
}
|
|
1619
|
+
.crewlet-arrange-frame.is-editing:is(:hover, :focus-visible, :has(:focus-visible)):not(
|
|
1620
|
+
:has(.crewlet-arrange-frame:is(:hover, :focus-visible, :has(:focus-visible)))
|
|
1621
|
+
)
|
|
1622
|
+
> :is(.crewlet-arrange-frame__bar, .crewlet-arrange-frame__resize),
|
|
1623
|
+
.crewlet-arrange-frame.is-editing > .crewlet-arrange-frame__bar:has([aria-expanded='true']),
|
|
1624
|
+
.crewlet-arrange-frame.is-editing:has(> .crewlet-arrange-frame__bar [aria-expanded='true'])
|
|
1625
|
+
> .crewlet-arrange-frame__resize,
|
|
1626
|
+
.crewlet-arrange-frame.is-resizing > :is(.crewlet-arrange-frame__bar, .crewlet-arrange-frame__resize) {
|
|
1627
|
+
opacity: 1;
|
|
1628
|
+
pointer-events: auto;
|
|
1629
|
+
}
|
|
1630
|
+
/* A touch screen has no hover to reveal them with. */
|
|
1631
|
+
@media (hover: none) {
|
|
1632
|
+
.crewlet-arrange-frame.is-editing > :is(.crewlet-arrange-frame__bar, .crewlet-arrange-frame__resize) {
|
|
1633
|
+
opacity: 1;
|
|
1634
|
+
pointer-events: auto;
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
/* ---- While resizing ------------------------------------------------------- */
|
|
1639
|
+
|
|
1640
|
+
/* The columns of the grid the block sits on, across its row. */
|
|
1641
|
+
.crewlet-arrange-frame__guides {
|
|
1642
|
+
position: absolute;
|
|
1643
|
+
top: 0;
|
|
1644
|
+
bottom: 0;
|
|
1645
|
+
z-index: var(--z-index-raised);
|
|
1646
|
+
display: grid;
|
|
1647
|
+
pointer-events: none;
|
|
1648
|
+
}
|
|
1649
|
+
.crewlet-arrange-frame__guides > span {
|
|
1650
|
+
border-inline: 1px dashed var(--color-brand-accent);
|
|
1651
|
+
background: var(--color-brand-accent-soft);
|
|
1652
|
+
opacity: 0.3;
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
/* The size it will land at, over the middle of the block. */
|
|
1656
|
+
.crewlet-arrange-frame__size {
|
|
1657
|
+
position: absolute;
|
|
1658
|
+
top: 50%;
|
|
1659
|
+
left: 50%;
|
|
1660
|
+
z-index: calc(var(--z-index-raised) + 1);
|
|
1661
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
1662
|
+
border-radius: var(--radius-pill);
|
|
1663
|
+
background: var(--color-surface-inverse);
|
|
1664
|
+
color: var(--color-text-inverse);
|
|
1665
|
+
font-size: var(--font-size-xs);
|
|
1666
|
+
font-weight: var(--font-weight-medium);
|
|
1667
|
+
font-variant-numeric: tabular-nums;
|
|
1668
|
+
white-space: nowrap;
|
|
1669
|
+
transform: translate(-50%, -50%);
|
|
1670
|
+
pointer-events: none;
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1674
|
+
.crewlet-arrange-frame__bar,
|
|
1675
|
+
.crewlet-arrange-frame__resize,
|
|
1676
|
+
.crewlet-arrange-frame__grip {
|
|
1677
|
+
transition: none;
|
|
1678
|
+
}
|
|
1679
|
+
.crewlet-arrange-frame.is-fresh {
|
|
1680
|
+
animation: none;
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
/* ArrangeGroup-SHFHA7BE.css */
|
|
1686
|
+
/*
|
|
1687
|
+
* ArrangeGroup: a titled band of blocks. The hue is the header's; the body
|
|
1688
|
+
* stays the page's ground, so the cards inside keep their own contrast.
|
|
1689
|
+
*/
|
|
1690
|
+
|
|
1691
|
+
.crewlet-arrange-group {
|
|
1692
|
+
--crewlet-arrange-group-band: var(--color-surface-subtle);
|
|
1693
|
+
--crewlet-arrange-group-line: var(--color-border-default);
|
|
1694
|
+
--crewlet-arrange-group-ink: var(--color-text-primary);
|
|
1695
|
+
--crewlet-arrange-group-mark: var(--color-border-strong);
|
|
1696
|
+
|
|
1697
|
+
display: flex;
|
|
1698
|
+
flex-direction: column;
|
|
1699
|
+
min-width: 0;
|
|
1700
|
+
border: 1px solid var(--crewlet-arrange-group-line);
|
|
1701
|
+
border-radius: var(--radius-lg);
|
|
1702
|
+
background: var(--color-surface-background);
|
|
1703
|
+
overflow: clip;
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
.crewlet-arrange-group--purple { --crewlet-arrange-group-band: var(--color-node-purple-fill); --crewlet-arrange-group-line: var(--color-node-purple-line); --crewlet-arrange-group-ink: var(--color-node-purple-ink); --crewlet-arrange-group-mark: var(--color-node-purple); }
|
|
1707
|
+
.crewlet-arrange-group--cyan { --crewlet-arrange-group-band: var(--color-node-cyan-fill); --crewlet-arrange-group-line: var(--color-node-cyan-line); --crewlet-arrange-group-ink: var(--color-node-cyan-ink); --crewlet-arrange-group-mark: var(--color-node-cyan); }
|
|
1708
|
+
.crewlet-arrange-group--green { --crewlet-arrange-group-band: var(--color-node-green-fill); --crewlet-arrange-group-line: var(--color-node-green-line); --crewlet-arrange-group-ink: var(--color-node-green-ink); --crewlet-arrange-group-mark: var(--color-node-green); }
|
|
1709
|
+
.crewlet-arrange-group--amber { --crewlet-arrange-group-band: var(--color-node-amber-fill); --crewlet-arrange-group-line: var(--color-node-amber-line); --crewlet-arrange-group-ink: var(--color-node-amber-ink); --crewlet-arrange-group-mark: var(--color-node-amber); }
|
|
1710
|
+
.crewlet-arrange-group--rose { --crewlet-arrange-group-band: var(--color-node-rose-fill); --crewlet-arrange-group-line: var(--color-node-rose-line); --crewlet-arrange-group-ink: var(--color-node-rose-ink); --crewlet-arrange-group-mark: var(--color-node-rose); }
|
|
1711
|
+
.crewlet-arrange-group--blue { --crewlet-arrange-group-band: var(--color-node-blue-fill); --crewlet-arrange-group-line: var(--color-node-blue-line); --crewlet-arrange-group-ink: var(--color-node-blue-ink); --crewlet-arrange-group-mark: var(--color-node-blue); }
|
|
1712
|
+
|
|
1713
|
+
.crewlet-arrange-group__head {
|
|
1714
|
+
display: flex;
|
|
1715
|
+
align-items: center;
|
|
1716
|
+
gap: var(--spacing-2);
|
|
1717
|
+
min-height: var(--size-row-lg);
|
|
1718
|
+
padding: var(--spacing-1) var(--spacing-3) var(--spacing-1) var(--spacing-2);
|
|
1719
|
+
border-bottom: 1px solid var(--crewlet-arrange-group-line);
|
|
1720
|
+
background: var(--crewlet-arrange-group-band);
|
|
1721
|
+
}
|
|
1722
|
+
.crewlet-arrange-group.is-collapsed .crewlet-arrange-group__head {
|
|
1723
|
+
border-bottom-color: transparent;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.crewlet-arrange-group__toggle {
|
|
1727
|
+
display: inline-flex;
|
|
1728
|
+
flex: 0 1 auto;
|
|
1729
|
+
align-items: center;
|
|
1730
|
+
gap: var(--spacing-2);
|
|
1731
|
+
min-width: 0;
|
|
1732
|
+
min-height: var(--size-row-sm);
|
|
1733
|
+
padding: 0 var(--spacing-2);
|
|
1734
|
+
border: 0;
|
|
1735
|
+
border-radius: var(--radius-sm);
|
|
1736
|
+
background: none;
|
|
1737
|
+
color: var(--crewlet-arrange-group-ink);
|
|
1738
|
+
font: inherit;
|
|
1739
|
+
cursor: pointer;
|
|
1740
|
+
}
|
|
1741
|
+
/* Editing, the toggle is the chevron alone, a square of its own, so its
|
|
1742
|
+
hover never runs into the name field beside it. */
|
|
1743
|
+
.crewlet-arrange-group__toggle.is-icon {
|
|
1744
|
+
flex: 0 0 auto;
|
|
1745
|
+
justify-content: center;
|
|
1746
|
+
width: var(--size-row-sm);
|
|
1747
|
+
padding: 0;
|
|
1748
|
+
}
|
|
1749
|
+
.crewlet-arrange-group__toggle:hover {
|
|
1750
|
+
background: var(--color-surface-hover);
|
|
1751
|
+
}
|
|
1752
|
+
.crewlet-arrange-group__toggle:focus-visible {
|
|
1753
|
+
outline: 2px solid var(--color-focus);
|
|
1754
|
+
outline-offset: 0;
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
.crewlet-arrange-group__chevron {
|
|
1758
|
+
flex-shrink: 0;
|
|
1759
|
+
transition: transform var(--motion-duration-fast) var(--motion-easing-default);
|
|
1760
|
+
}
|
|
1761
|
+
.crewlet-arrange-group.is-collapsed .crewlet-arrange-group__chevron {
|
|
1762
|
+
transform: rotate(-90deg);
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
.crewlet-arrange-group__title,
|
|
1766
|
+
.crewlet-arrange-group__title-field {
|
|
1767
|
+
overflow: hidden;
|
|
1768
|
+
font-size: var(--font-size-md);
|
|
1769
|
+
font-weight: var(--font-weight-semibold);
|
|
1770
|
+
letter-spacing: var(--font-letter-spacing-tight);
|
|
1771
|
+
color: var(--crewlet-arrange-group-ink);
|
|
1772
|
+
text-overflow: ellipsis;
|
|
1773
|
+
white-space: nowrap;
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
/* Editing, the name is typed where it is read: the title itself, which
|
|
1777
|
+
shows it is a field on hover and takes a ring when focused. */
|
|
1778
|
+
.crewlet-arrange-group__title-field {
|
|
1779
|
+
/* As wide as the name, so the count sits just after it. */
|
|
1780
|
+
field-sizing: content;
|
|
1781
|
+
min-width: 3ch;
|
|
1782
|
+
max-width: 100%;
|
|
1783
|
+
height: var(--size-row-sm);
|
|
1784
|
+
padding: 0 var(--spacing-2);
|
|
1785
|
+
border: 1px dashed transparent;
|
|
1786
|
+
border-radius: var(--radius-sm);
|
|
1787
|
+
background: transparent;
|
|
1788
|
+
font-family: inherit;
|
|
1789
|
+
cursor: text;
|
|
1790
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
1791
|
+
background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
1792
|
+
}
|
|
1793
|
+
.crewlet-arrange-group__title-field:hover {
|
|
1794
|
+
border-color: var(--crewlet-arrange-group-mark);
|
|
1795
|
+
}
|
|
1796
|
+
/* The ring is drawn over the field's own edge, never beside it. */
|
|
1797
|
+
.crewlet-arrange-group__title-field:focus-visible {
|
|
1798
|
+
outline: 2px solid var(--color-focus);
|
|
1799
|
+
outline-offset: -1px;
|
|
1800
|
+
border-style: solid;
|
|
1801
|
+
border-color: var(--color-focus);
|
|
1802
|
+
background: var(--color-surface-background);
|
|
1803
|
+
}
|
|
1804
|
+
.crewlet-arrange-group__title-field::placeholder {
|
|
1805
|
+
color: var(--color-text-tertiary);
|
|
1806
|
+
font-weight: var(--font-weight-regular);
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
.crewlet-arrange-group__count {
|
|
1810
|
+
flex-shrink: 0;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
.crewlet-arrange-group__actions {
|
|
1814
|
+
display: inline-flex;
|
|
1815
|
+
align-items: center;
|
|
1816
|
+
gap: var(--spacing-1);
|
|
1817
|
+
margin-inline-start: auto;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
.crewlet-arrange-group__body {
|
|
1821
|
+
display: grid;
|
|
1822
|
+
grid-template-columns: repeat(var(--crewlet-arrange-columns, 12), minmax(0, 1fr));
|
|
1823
|
+
gap: var(--spacing-4);
|
|
1824
|
+
align-items: stretch;
|
|
1825
|
+
padding: var(--spacing-4);
|
|
1826
|
+
min-height: 5rem;
|
|
1827
|
+
}
|
|
1828
|
+
.crewlet-arrange-group__body[data-reorder-over='true'] {
|
|
1829
|
+
background: var(--color-brand-accent-soft);
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
.crewlet-arrange-group__empty {
|
|
1833
|
+
display: flex;
|
|
1834
|
+
grid-column: 1 / -1;
|
|
1835
|
+
align-items: center;
|
|
1836
|
+
justify-content: center;
|
|
1837
|
+
min-height: 4rem;
|
|
1838
|
+
border: 1px dashed var(--color-border-strong);
|
|
1839
|
+
border-radius: var(--radius-md);
|
|
1840
|
+
font-size: var(--font-size-sm);
|
|
1841
|
+
color: var(--color-text-tertiary);
|
|
1842
|
+
pointer-events: none;
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1846
|
+
.crewlet-arrange-group__chevron,
|
|
1847
|
+
.crewlet-arrange-group__title-field {
|
|
1848
|
+
transition: none;
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1851
|
+
|
|
1852
|
+
/* Arranging, the header is what a pointer moves the group by. */
|
|
1853
|
+
.crewlet-arrange-frame[draggable='true'] > .crewlet-arrange-frame__content > .crewlet-arrange-group > .crewlet-arrange-group__head {
|
|
1854
|
+
cursor: grab;
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
/* ArrangeList-NNRTDFI5.css */
|
|
1859
|
+
/*
|
|
1860
|
+
* ArrangeList: rows a reader puts in order and switches on and off.
|
|
1861
|
+
*
|
|
1862
|
+
* The row is a quiet inset band rather than a card: a panel holding eight of
|
|
1863
|
+
* them is a list, and eight bordered boxes read as eight separate objects.
|
|
1864
|
+
*/
|
|
1865
|
+
|
|
1866
|
+
.crewlet-arrange-list {
|
|
1867
|
+
display: flex;
|
|
1868
|
+
flex-direction: column;
|
|
1869
|
+
gap: var(--spacing-1);
|
|
1870
|
+
margin: 0;
|
|
1871
|
+
padding: 0;
|
|
1872
|
+
list-style: none;
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
.crewlet-arrange-list__item {
|
|
1876
|
+
display: flex;
|
|
1877
|
+
align-items: center;
|
|
1878
|
+
gap: var(--spacing-2);
|
|
1879
|
+
min-height: var(--size-row-lg);
|
|
1880
|
+
padding: var(--spacing-1) var(--spacing-2) var(--spacing-1) var(--spacing-1);
|
|
1881
|
+
border: 1px solid transparent;
|
|
1882
|
+
border-radius: var(--radius-md);
|
|
1883
|
+
background: var(--color-surface-subtle);
|
|
1884
|
+
transition: background-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
1885
|
+
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1888
|
+
.crewlet-arrange-list__item:hover {
|
|
1889
|
+
border-color: var(--color-border-default);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
/* The row being carried is a gap in the list, outlined where it will land. */
|
|
1893
|
+
.crewlet-arrange-list__item[data-reorder='dragging'] {
|
|
1894
|
+
border-style: dashed;
|
|
1895
|
+
border-color: var(--color-border-strong);
|
|
1896
|
+
background: transparent;
|
|
1897
|
+
}
|
|
1898
|
+
.crewlet-arrange-list__item[data-reorder='dragging'] > * {
|
|
1899
|
+
opacity: 0.4;
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
.crewlet-arrange-list__handle {
|
|
1903
|
+
flex-shrink: 0;
|
|
1904
|
+
cursor: grab;
|
|
1905
|
+
color: var(--color-text-tertiary);
|
|
1906
|
+
}
|
|
1907
|
+
.crewlet-arrange-list__handle:active {
|
|
1908
|
+
cursor: grabbing;
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
.crewlet-arrange-list__label {
|
|
1912
|
+
display: inline-flex;
|
|
1913
|
+
align-items: center;
|
|
1914
|
+
gap: var(--spacing-2);
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
.crewlet-arrange-list__icon {
|
|
1918
|
+
display: inline-flex;
|
|
1919
|
+
flex-shrink: 0;
|
|
1920
|
+
color: var(--color-text-secondary);
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1923
|
+
/* The toggle takes the row's width, so its label is the row's target. */
|
|
1924
|
+
.crewlet-arrange-list__toggle {
|
|
1925
|
+
flex: 1 1 auto;
|
|
1926
|
+
min-width: 0;
|
|
1927
|
+
}
|
|
1928
|
+
|
|
1929
|
+
/* Off, the words step back; the switch itself already says off. */
|
|
1930
|
+
.crewlet-arrange-list__item.is-off .crewlet-arrange-list__icon,
|
|
1931
|
+
.crewlet-arrange-list__item.is-off .crewlet-switch__label,
|
|
1932
|
+
.crewlet-arrange-list__item.is-off .crewlet-checkbox__label {
|
|
1933
|
+
color: var(--color-text-tertiary);
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
.crewlet-arrange-list__trailing {
|
|
1937
|
+
display: inline-flex;
|
|
1938
|
+
flex-shrink: 0;
|
|
1939
|
+
align-items: center;
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
.crewlet-arrange-list__moves {
|
|
1943
|
+
display: inline-flex;
|
|
1944
|
+
flex-shrink: 0;
|
|
1945
|
+
gap: 2px;
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1949
|
+
.crewlet-arrange-list__item {
|
|
1950
|
+
transition: none;
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1954
|
+
|
|
1270
1955
|
/* ArtifactCard-EXVAEBV6.css */
|
|
1271
1956
|
/*
|
|
1272
1957
|
* A card in a gallery: the preview on top at a fixed ratio, so a grid of them
|
|
@@ -8933,6 +9618,46 @@ svg.crewlet-datetime__chevron {
|
|
|
8933
9618
|
}
|
|
8934
9619
|
|
|
8935
9620
|
|
|
9621
|
+
/* Divider-3Z77ZAJH.css */
|
|
9622
|
+
/* Divider: a rule across its space, with its name at its start or in its middle. */
|
|
9623
|
+
|
|
9624
|
+
.crewlet-divider {
|
|
9625
|
+
display: flex;
|
|
9626
|
+
align-items: center;
|
|
9627
|
+
gap: var(--spacing-3);
|
|
9628
|
+
min-height: var(--size-row-sm);
|
|
9629
|
+
min-width: 0;
|
|
9630
|
+
}
|
|
9631
|
+
.crewlet-divider::before,
|
|
9632
|
+
.crewlet-divider::after {
|
|
9633
|
+
content: '';
|
|
9634
|
+
flex: 1 1 auto;
|
|
9635
|
+
border-top: 1px solid var(--color-border-strong);
|
|
9636
|
+
}
|
|
9637
|
+
/* One rule unless the words sit in the middle of it. */
|
|
9638
|
+
.crewlet-divider:not(.crewlet-divider--center)::before {
|
|
9639
|
+
display: none;
|
|
9640
|
+
}
|
|
9641
|
+
.crewlet-divider:not(.crewlet-divider--labelled)::before {
|
|
9642
|
+
display: block;
|
|
9643
|
+
}
|
|
9644
|
+
.crewlet-divider:not(.crewlet-divider--labelled)::after {
|
|
9645
|
+
display: none;
|
|
9646
|
+
}
|
|
9647
|
+
|
|
9648
|
+
.crewlet-divider__label {
|
|
9649
|
+
flex: 0 1 auto;
|
|
9650
|
+
overflow: hidden;
|
|
9651
|
+
font-size: var(--font-size-xs);
|
|
9652
|
+
font-weight: var(--font-weight-medium);
|
|
9653
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
9654
|
+
color: var(--color-text-tertiary);
|
|
9655
|
+
text-transform: uppercase;
|
|
9656
|
+
text-overflow: ellipsis;
|
|
9657
|
+
white-space: nowrap;
|
|
9658
|
+
}
|
|
9659
|
+
|
|
9660
|
+
|
|
8936
9661
|
/* Document-PQGXJHB7.css */
|
|
8937
9662
|
/*
|
|
8938
9663
|
* Rendered markdown, set as a document (Document.tsx).
|
|
@@ -9698,7 +10423,7 @@ svg.crewlet-datetime__chevron {
|
|
|
9698
10423
|
}
|
|
9699
10424
|
|
|
9700
10425
|
|
|
9701
|
-
/* HuePicker-
|
|
10426
|
+
/* HuePicker-PAIGH6LR.css */
|
|
9702
10427
|
/*
|
|
9703
10428
|
* A hue's swatch: the hue itself, as a dot beside its name. The name carries
|
|
9704
10429
|
* the choice; the dot is there so the row can be scanned for a colour.
|
|
@@ -9718,6 +10443,12 @@ svg.crewlet-datetime__chevron {
|
|
|
9718
10443
|
.crewlet-hue-picker__swatch--rose { background: var(--color-node-rose); }
|
|
9719
10444
|
.crewlet-hue-picker__swatch--blue { background: var(--color-node-blue); }
|
|
9720
10445
|
|
|
10446
|
+
/* No hue: a ring in the hairline, so the row still reads as swatches. */
|
|
10447
|
+
.crewlet-hue-picker__swatch--none {
|
|
10448
|
+
box-sizing: border-box;
|
|
10449
|
+
border: 1px solid var(--color-border-strong);
|
|
10450
|
+
}
|
|
10451
|
+
|
|
9721
10452
|
|
|
9722
10453
|
/* IconButton-VYWP6SGW.css */
|
|
9723
10454
|
/*
|
|
@@ -9895,6 +10626,39 @@ svg.crewlet-datetime__chevron {
|
|
|
9895
10626
|
}
|
|
9896
10627
|
|
|
9897
10628
|
|
|
10629
|
+
/* IconTile-4GNWTLAW.css */
|
|
10630
|
+
/*
|
|
10631
|
+
* IconTile: a glyph on a tinted square. Each hue pairs its fill and its ink
|
|
10632
|
+
* from one measured family (`--color-node-*`); left out, the brand accent's
|
|
10633
|
+
* soft fill and ink. No edge: the tile sits inside a card that has one.
|
|
10634
|
+
*/
|
|
10635
|
+
.crewlet-icon-tile {
|
|
10636
|
+
--crewlet-icon-tile-fill: var(--color-brand-accent-soft);
|
|
10637
|
+
--crewlet-icon-tile-ink: var(--color-brand-accent-ink);
|
|
10638
|
+
--crewlet-icon-tile-size: var(--size-row-md);
|
|
10639
|
+
|
|
10640
|
+
display: inline-flex;
|
|
10641
|
+
flex: none;
|
|
10642
|
+
align-items: center;
|
|
10643
|
+
justify-content: center;
|
|
10644
|
+
width: var(--crewlet-icon-tile-size);
|
|
10645
|
+
height: var(--crewlet-icon-tile-size);
|
|
10646
|
+
border-radius: var(--radius-md);
|
|
10647
|
+
background: var(--crewlet-icon-tile-fill);
|
|
10648
|
+
color: var(--crewlet-icon-tile-ink);
|
|
10649
|
+
}
|
|
10650
|
+
|
|
10651
|
+
.crewlet-icon-tile--sm { --crewlet-icon-tile-size: var(--size-row-sm); }
|
|
10652
|
+
.crewlet-icon-tile--lg { --crewlet-icon-tile-size: var(--size-row-lg); border-radius: var(--radius-lg); }
|
|
10653
|
+
|
|
10654
|
+
.crewlet-icon-tile--purple { --crewlet-icon-tile-fill: var(--color-node-purple-fill); --crewlet-icon-tile-ink: var(--color-node-purple-ink); }
|
|
10655
|
+
.crewlet-icon-tile--cyan { --crewlet-icon-tile-fill: var(--color-node-cyan-fill); --crewlet-icon-tile-ink: var(--color-node-cyan-ink); }
|
|
10656
|
+
.crewlet-icon-tile--green { --crewlet-icon-tile-fill: var(--color-node-green-fill); --crewlet-icon-tile-ink: var(--color-node-green-ink); }
|
|
10657
|
+
.crewlet-icon-tile--amber { --crewlet-icon-tile-fill: var(--color-node-amber-fill); --crewlet-icon-tile-ink: var(--color-node-amber-ink); }
|
|
10658
|
+
.crewlet-icon-tile--rose { --crewlet-icon-tile-fill: var(--color-node-rose-fill); --crewlet-icon-tile-ink: var(--color-node-rose-ink); }
|
|
10659
|
+
.crewlet-icon-tile--blue { --crewlet-icon-tile-fill: var(--color-node-blue-fill); --crewlet-icon-tile-ink: var(--color-node-blue-ink); }
|
|
10660
|
+
|
|
10661
|
+
|
|
9898
10662
|
/* ImageUpload-NVGMN7DP.css */
|
|
9899
10663
|
/*
|
|
9900
10664
|
* ImageUpload, the click-to-upload affordance built on Avatar.
|
|
@@ -12670,7 +13434,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12670
13434
|
}
|
|
12671
13435
|
|
|
12672
13436
|
|
|
12673
|
-
/* Modal-
|
|
13437
|
+
/* Modal-XOSV6FAH.css */
|
|
12674
13438
|
/*
|
|
12675
13439
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
12676
13440
|
*
|
|
@@ -12730,6 +13494,12 @@ svg.crewlet-datetime__chevron {
|
|
|
12730
13494
|
}
|
|
12731
13495
|
|
|
12732
13496
|
/* Inside a LayerHost the overlay covers the host, not the window. */
|
|
13497
|
+
/* The page behind stays as it is: see `backdrop` in Modal.tsx. */
|
|
13498
|
+
.crewlet-modal-overlay--clear {
|
|
13499
|
+
background: transparent;
|
|
13500
|
+
backdrop-filter: none;
|
|
13501
|
+
}
|
|
13502
|
+
|
|
12733
13503
|
.crewlet-modal-overlay--in-host {
|
|
12734
13504
|
position: absolute;
|
|
12735
13505
|
}
|
|
@@ -13049,6 +13819,14 @@ svg.crewlet-datetime__chevron {
|
|
|
13049
13819
|
margin: calc(var(--spacing-1) * -1);
|
|
13050
13820
|
}
|
|
13051
13821
|
|
|
13822
|
+
/* The step back leads the head, its glyph on the title's inline start, as
|
|
13823
|
+
the close control's sits on the head's end. */
|
|
13824
|
+
.crewlet-modal__back {
|
|
13825
|
+
flex-shrink: 0;
|
|
13826
|
+
margin-inline-start: calc(var(--spacing-2) * -1);
|
|
13827
|
+
margin-block: calc(var(--spacing-1) * -1);
|
|
13828
|
+
}
|
|
13829
|
+
|
|
13052
13830
|
.crewlet-modal__body {
|
|
13053
13831
|
flex: 1 1 auto;
|
|
13054
13832
|
min-height: 0;
|
|
@@ -13276,6 +14054,67 @@ svg.crewlet-datetime__chevron {
|
|
|
13276
14054
|
}
|
|
13277
14055
|
|
|
13278
14056
|
|
|
14057
|
+
/* Note-RT4L6VUT.css */
|
|
14058
|
+
/*
|
|
14059
|
+
* Note: words on a coloured paper. Each hue pairs its fill with its own ink.
|
|
14060
|
+
*/
|
|
14061
|
+
|
|
14062
|
+
.crewlet-note {
|
|
14063
|
+
--crewlet-note-paper: var(--color-surface-subtle);
|
|
14064
|
+
--crewlet-note-edge: var(--color-border-default);
|
|
14065
|
+
--crewlet-note-ink: var(--color-text-primary);
|
|
14066
|
+
|
|
14067
|
+
box-sizing: border-box;
|
|
14068
|
+
min-width: 0;
|
|
14069
|
+
min-height: 0;
|
|
14070
|
+
padding: var(--spacing-4);
|
|
14071
|
+
overflow: auto;
|
|
14072
|
+
border: 1px solid var(--crewlet-note-edge);
|
|
14073
|
+
border-radius: var(--radius-lg);
|
|
14074
|
+
background: var(--crewlet-note-paper);
|
|
14075
|
+
color: var(--crewlet-note-ink);
|
|
14076
|
+
font-size: var(--font-size-sm);
|
|
14077
|
+
line-height: var(--font-line-height-normal);
|
|
14078
|
+
overflow-wrap: anywhere;
|
|
14079
|
+
}
|
|
14080
|
+
|
|
14081
|
+
.crewlet-note--purple { --crewlet-note-paper: var(--color-node-purple-fill); --crewlet-note-edge: var(--color-node-purple-line); --crewlet-note-ink: var(--color-node-purple-ink); }
|
|
14082
|
+
.crewlet-note--cyan { --crewlet-note-paper: var(--color-node-cyan-fill); --crewlet-note-edge: var(--color-node-cyan-line); --crewlet-note-ink: var(--color-node-cyan-ink); }
|
|
14083
|
+
.crewlet-note--green { --crewlet-note-paper: var(--color-node-green-fill); --crewlet-note-edge: var(--color-node-green-line); --crewlet-note-ink: var(--color-node-green-ink); }
|
|
14084
|
+
.crewlet-note--amber { --crewlet-note-paper: var(--color-node-amber-fill); --crewlet-note-edge: var(--color-node-amber-line); --crewlet-note-ink: var(--color-node-amber-ink); }
|
|
14085
|
+
.crewlet-note--rose { --crewlet-note-paper: var(--color-node-rose-fill); --crewlet-note-edge: var(--color-node-rose-line); --crewlet-note-ink: var(--color-node-rose-ink); }
|
|
14086
|
+
.crewlet-note--blue { --crewlet-note-paper: var(--color-node-blue-fill); --crewlet-note-edge: var(--color-node-blue-line); --crewlet-note-ink: var(--color-node-blue-ink); }
|
|
14087
|
+
|
|
14088
|
+
.crewlet-note--center {
|
|
14089
|
+
display: flex;
|
|
14090
|
+
flex-direction: column;
|
|
14091
|
+
justify-content: center;
|
|
14092
|
+
text-align: center;
|
|
14093
|
+
}
|
|
14094
|
+
|
|
14095
|
+
.crewlet-note--lg {
|
|
14096
|
+
font-size: var(--font-size-lg);
|
|
14097
|
+
font-weight: var(--font-weight-medium);
|
|
14098
|
+
letter-spacing: var(--font-letter-spacing-tight);
|
|
14099
|
+
}
|
|
14100
|
+
|
|
14101
|
+
/* Prose inside takes the note's ink, links included. */
|
|
14102
|
+
.crewlet-note :is(p, li, h2, h3, h4, strong, em) {
|
|
14103
|
+
color: inherit;
|
|
14104
|
+
}
|
|
14105
|
+
.crewlet-note a {
|
|
14106
|
+
color: inherit;
|
|
14107
|
+
text-decoration: underline;
|
|
14108
|
+
text-underline-offset: 2px;
|
|
14109
|
+
}
|
|
14110
|
+
.crewlet-note > :first-child {
|
|
14111
|
+
margin-top: 0;
|
|
14112
|
+
}
|
|
14113
|
+
.crewlet-note > :last-child {
|
|
14114
|
+
margin-bottom: 0;
|
|
14115
|
+
}
|
|
14116
|
+
|
|
14117
|
+
|
|
13279
14118
|
/* ObjectHeader-UNVYM2KD.css */
|
|
13280
14119
|
/*
|
|
13281
14120
|
* The header of an object: its eyebrow, its head row and its fact line.
|
|
@@ -14603,6 +15442,150 @@ svg.crewlet-datetime__chevron {
|
|
|
14603
15442
|
}
|
|
14604
15443
|
|
|
14605
15444
|
|
|
15445
|
+
/* PinTile-IIA25MNZ.css */
|
|
15446
|
+
/*
|
|
15447
|
+
* PinTile: one pinned thing, a link with its facts.
|
|
15448
|
+
*
|
|
15449
|
+
* A raised row rather than a card with a header: a shelf holds six of them,
|
|
15450
|
+
* and six headed cards are six sections where the reader wanted six links.
|
|
15451
|
+
*/
|
|
15452
|
+
|
|
15453
|
+
.crewlet-pin-tile {
|
|
15454
|
+
position: relative;
|
|
15455
|
+
display: flex;
|
|
15456
|
+
align-items: center;
|
|
15457
|
+
gap: var(--spacing-3);
|
|
15458
|
+
min-width: 0;
|
|
15459
|
+
min-height: 56px;
|
|
15460
|
+
padding: var(--spacing-2) var(--spacing-2) var(--spacing-2) var(--spacing-3);
|
|
15461
|
+
border: 1px solid var(--color-border-default);
|
|
15462
|
+
border-radius: var(--radius-lg);
|
|
15463
|
+
background: var(--color-surface-elevated);
|
|
15464
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
15465
|
+
background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
15466
|
+
}
|
|
15467
|
+
.crewlet-pin-tile:hover {
|
|
15468
|
+
border-color: var(--color-border-hover);
|
|
15469
|
+
background: var(--color-surface-hover);
|
|
15470
|
+
}
|
|
15471
|
+
.crewlet-pin-tile:has(.crewlet-pin-tile__handle) {
|
|
15472
|
+
padding-inline-start: var(--spacing-1);
|
|
15473
|
+
}
|
|
15474
|
+
|
|
15475
|
+
.crewlet-pin-tile[data-reorder='dragging'] {
|
|
15476
|
+
border-style: dashed;
|
|
15477
|
+
border-color: var(--color-brand-accent);
|
|
15478
|
+
background: var(--color-brand-accent-soft);
|
|
15479
|
+
}
|
|
15480
|
+
.crewlet-pin-tile[data-reorder='dragging'] > * {
|
|
15481
|
+
opacity: 0.35;
|
|
15482
|
+
}
|
|
15483
|
+
|
|
15484
|
+
.crewlet-pin-tile__handle {
|
|
15485
|
+
position: relative;
|
|
15486
|
+
z-index: var(--z-index-raised);
|
|
15487
|
+
flex-shrink: 0;
|
|
15488
|
+
cursor: grab;
|
|
15489
|
+
color: var(--color-text-tertiary);
|
|
15490
|
+
}
|
|
15491
|
+
|
|
15492
|
+
.crewlet-pin-tile__leading {
|
|
15493
|
+
display: inline-flex;
|
|
15494
|
+
flex-shrink: 0;
|
|
15495
|
+
color: var(--color-text-secondary);
|
|
15496
|
+
}
|
|
15497
|
+
|
|
15498
|
+
.crewlet-pin-tile__body {
|
|
15499
|
+
display: flex;
|
|
15500
|
+
flex: 1 1 auto;
|
|
15501
|
+
flex-direction: column;
|
|
15502
|
+
gap: 2px;
|
|
15503
|
+
min-width: 0;
|
|
15504
|
+
}
|
|
15505
|
+
|
|
15506
|
+
.crewlet-pin-tile__head {
|
|
15507
|
+
display: flex;
|
|
15508
|
+
align-items: center;
|
|
15509
|
+
gap: var(--spacing-2);
|
|
15510
|
+
min-width: 0;
|
|
15511
|
+
}
|
|
15512
|
+
|
|
15513
|
+
.crewlet-pin-tile__link {
|
|
15514
|
+
overflow: hidden;
|
|
15515
|
+
font-size: var(--font-size-sm);
|
|
15516
|
+
font-weight: var(--font-weight-medium);
|
|
15517
|
+
color: var(--color-text-primary);
|
|
15518
|
+
text-decoration: none;
|
|
15519
|
+
text-overflow: ellipsis;
|
|
15520
|
+
white-space: nowrap;
|
|
15521
|
+
}
|
|
15522
|
+
/* The tile's whole area, as the link's. */
|
|
15523
|
+
.crewlet-pin-tile__link::after {
|
|
15524
|
+
content: '';
|
|
15525
|
+
position: absolute;
|
|
15526
|
+
inset: 0;
|
|
15527
|
+
border-radius: inherit;
|
|
15528
|
+
}
|
|
15529
|
+
.crewlet-pin-tile__link:focus-visible {
|
|
15530
|
+
outline: 2px solid transparent;
|
|
15531
|
+
}
|
|
15532
|
+
/* The tile's ring, over its own edge, for the link that is its target. */
|
|
15533
|
+
.crewlet-pin-tile:has(.crewlet-pin-tile__link:focus-visible) {
|
|
15534
|
+
outline: 2px solid var(--color-focus);
|
|
15535
|
+
outline-offset: -1px;
|
|
15536
|
+
}
|
|
15537
|
+
|
|
15538
|
+
.crewlet-pin-tile__status {
|
|
15539
|
+
display: inline-flex;
|
|
15540
|
+
flex-shrink: 0;
|
|
15541
|
+
}
|
|
15542
|
+
|
|
15543
|
+
.crewlet-pin-tile__meta {
|
|
15544
|
+
overflow: hidden;
|
|
15545
|
+
font-size: var(--font-size-xs);
|
|
15546
|
+
color: var(--color-text-secondary);
|
|
15547
|
+
text-overflow: ellipsis;
|
|
15548
|
+
white-space: nowrap;
|
|
15549
|
+
}
|
|
15550
|
+
.crewlet-pin-tile__kind {
|
|
15551
|
+
color: var(--color-text-tertiary);
|
|
15552
|
+
}
|
|
15553
|
+
|
|
15554
|
+
.crewlet-pin-tile__figure {
|
|
15555
|
+
flex-shrink: 0;
|
|
15556
|
+
font-size: var(--font-size-sm);
|
|
15557
|
+
font-weight: var(--font-weight-semibold);
|
|
15558
|
+
font-variant-numeric: tabular-nums;
|
|
15559
|
+
color: var(--color-text-primary);
|
|
15560
|
+
}
|
|
15561
|
+
|
|
15562
|
+
/* Above the stretched link, so it takes its own press. */
|
|
15563
|
+
.crewlet-pin-tile__unpin {
|
|
15564
|
+
position: relative;
|
|
15565
|
+
z-index: var(--z-index-raised);
|
|
15566
|
+
flex-shrink: 0;
|
|
15567
|
+
color: var(--color-brand-accent-ink);
|
|
15568
|
+
opacity: 0.55;
|
|
15569
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
15570
|
+
}
|
|
15571
|
+
.crewlet-pin-tile:hover .crewlet-pin-tile__unpin,
|
|
15572
|
+
.crewlet-pin-tile:focus-within .crewlet-pin-tile__unpin {
|
|
15573
|
+
opacity: 1;
|
|
15574
|
+
}
|
|
15575
|
+
@media (hover: none) {
|
|
15576
|
+
.crewlet-pin-tile__unpin {
|
|
15577
|
+
opacity: 1;
|
|
15578
|
+
}
|
|
15579
|
+
}
|
|
15580
|
+
|
|
15581
|
+
@media (prefers-reduced-motion: reduce) {
|
|
15582
|
+
.crewlet-pin-tile,
|
|
15583
|
+
.crewlet-pin-tile__unpin {
|
|
15584
|
+
transition: none;
|
|
15585
|
+
}
|
|
15586
|
+
}
|
|
15587
|
+
|
|
15588
|
+
|
|
14606
15589
|
/* Popover-QCINR7WG.css */
|
|
14607
15590
|
/*
|
|
14608
15591
|
* The anchored panel.
|
|
@@ -18410,7 +19393,7 @@ svg.crewlet-select__chevron {
|
|
|
18410
19393
|
.crewlet-statcard--info .crewlet-statcard__value { color: var(--color-feedback-info-ink); }
|
|
18411
19394
|
|
|
18412
19395
|
|
|
18413
|
-
/* StatGroup-
|
|
19396
|
+
/* StatGroup-PADTJCUQ.css */
|
|
18414
19397
|
/*
|
|
18415
19398
|
* A row of stat tiles.
|
|
18416
19399
|
*
|
|
@@ -18433,6 +19416,13 @@ svg.crewlet-select__chevron {
|
|
|
18433
19416
|
overflow: hidden;
|
|
18434
19417
|
}
|
|
18435
19418
|
|
|
19419
|
+
/* Inside another card: the card's surface and edge are the row's. */
|
|
19420
|
+
.crewlet-stat-group--flush {
|
|
19421
|
+
background: transparent;
|
|
19422
|
+
border: 0;
|
|
19423
|
+
border-radius: var(--radius-none);
|
|
19424
|
+
}
|
|
19425
|
+
|
|
18436
19426
|
/*
|
|
18437
19427
|
* A tile inside the row brings no surface of its own, whether or not its
|
|
18438
19428
|
* caller remembered `flush`. The group draws one card and the hairlines
|