@crewlethq/ui 0.6.3 → 0.8.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 +109 -0
- package/dist/AddPill/index.js +1 -1
- package/dist/{AddPill-IJQYCY6C.css → AddPill-V4TQXJ53.css} +23 -22
- package/dist/AppShell/index.js +2 -2
- package/dist/{AppShell-XARELGIH.css → AppShell-CEVLW4QG.css} +3 -1
- package/dist/Button/index.js +1 -1
- package/dist/{Button-EXU36DEH.css → Button-UWKBTKYD.css} +18 -0
- package/dist/Canvas/Canvas.d.ts +16 -1
- package/dist/Canvas/index.d.ts +1 -1
- package/dist/Canvas/index.js +3 -3
- package/dist/{Canvas-Q6JETCWR.css → Canvas-YVXHMWLN.css} +13 -0
- package/dist/Card/index.js +1 -1
- package/dist/{Card-GLP7SUV6.css → Card-KJOYHDTJ.css} +5 -1
- package/dist/Charts/BarList.d.ts +23 -0
- package/dist/Charts/index.d.ts +1 -1
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-B3YEF7R4.css → Charts-THPA5BWV.css} +40 -0
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-BOXQ747I.css → Checkbox-UE7TEPAM.css} +9 -1
- package/dist/CodeBlock/index.js +4 -4
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +6 -6
- package/dist/Copyable/index.js +3 -3
- package/dist/DataTable/index.js +6 -6
- package/dist/{DataTable-OLHPF7D4.css → DataTable-WZK3V62B.css} +11 -0
- package/dist/DataView/index.js +11 -11
- package/dist/DateTimePicker/index.js +4 -4
- package/dist/{DateTimePicker-22VNXRWC.css → DateTimePicker-4AZBTODT.css} +11 -6
- package/dist/ErrorBoundary/index.js +2 -2
- package/dist/FilterChip/index.js +1 -1
- package/dist/{FilterChip-GTGLLOXE.css → FilterChip-EZ4QMW4E.css} +4 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-TVEUWK6L.css → IconButton-VYWP6SGW.css} +15 -0
- package/dist/ImageUpload/index.js +1 -1
- package/dist/{ImageUpload-YCHJMUGX.css → ImageUpload-L2GE4JUM.css} +5 -1
- package/dist/Input/index.js +2 -2
- package/dist/{Input-2PU5CPKK.css → Input-DRFNI26F.css} +40 -10
- package/dist/Kbd/index.js +1 -1
- package/dist/{Kbd-JPLDVJIP.css → Kbd-MCWJTRTT.css} +11 -0
- package/dist/ListInput/index.js +4 -4
- package/dist/Menu/index.js +3 -3
- package/dist/Modal/index.js +3 -3
- package/dist/NewItemsNotice/index.js +1 -1
- package/dist/{NewItemsNotice-T4DSSPVV.css → NewItemsNotice-Q5ED73BQ.css} +3 -1
- package/dist/OrgLabel/OrgLabel.d.ts +12 -3
- package/dist/OrgLabel/index.js +1 -1
- package/dist/{OrgLabel-CR233G34.css → OrgLabel-6WSKJQOT.css} +38 -0
- package/dist/OrgNode/OrgNode.d.ts +7 -4
- package/dist/OrgNode/index.js +2 -2
- package/dist/{OrgNode-BT7T2Q2X.css → OrgNode-TCHJH5FO.css} +89 -45
- package/dist/OrgTable/index.js +5 -5
- package/dist/{OrgTable-VWMFC3TB.css → OrgTable-JZSYTUIK.css} +28 -4
- package/dist/Popover/index.js +1 -1
- package/dist/{Popover-WJGCF3ZQ.css → Popover-QCINR7WG.css} +5 -2
- package/dist/PricingCard/index.js +2 -2
- package/dist/{PricingCard-7EFXRSD2.css → PricingCard-HTAHG4ST.css} +5 -1
- package/dist/SearchTrigger/index.js +1 -1
- package/dist/{SearchTrigger-Z5D4AAY7.css → SearchTrigger-KIZLWBEH.css} +4 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts +19 -1
- package/dist/SegmentedControl/index.d.ts +1 -1
- package/dist/SegmentedControl/index.js +2 -2
- package/dist/SegmentedControl-76HODRBT.css +160 -0
- package/dist/Select/index.js +1 -1
- package/dist/{Select-E24U5LBC.css → Select-4ANVLHUY.css} +4 -4
- package/dist/Switch/index.js +1 -1
- package/dist/{Switch-U4OWK4CL.css → Switch-66RAQCRE.css} +8 -5
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-XCNPHA7B.css → Tabs-BWFQSWY3.css} +12 -0
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-4OXGO2DU.css → Tag-4BRQS6GN.css} +28 -1
- package/dist/TagGroup/index.js +1 -1
- package/dist/{TagGroup-APC2EFH4.css → TagGroup-BCQZD7ZD.css} +4 -1
- package/dist/TagsInput/index.js +3 -3
- package/dist/{TagsInput-W4P36PRJ.css → TagsInput-P2HS5QL4.css} +2 -2
- package/dist/ThemeSwitcher/index.js +3 -3
- package/dist/ThemeToggle/index.js +2 -2
- package/dist/TimeWindowPicker/index.js +6 -6
- package/dist/{TimeWindowPicker-7I7KWCMU.css → TimeWindowPicker-GBF4JDFI.css} +21 -8
- package/dist/Tree/layout.d.ts +3 -3
- package/dist/TreeCanvas/TreeCanvas.d.ts +7 -5
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/{TreeCanvas-HVOV4SQN.css → TreeCanvas-L2XYONWL.css} +80 -74
- package/dist/TreeGrid/index.js +2 -2
- package/dist/{chunk-SVNXOK25.js → chunk-26SCUACK.js} +2 -2
- package/dist/{chunk-4UQ7SMPK.js → chunk-4FQT6ZAY.js} +1 -1
- package/dist/{chunk-IBYO2IJN.js → chunk-5I56UXBJ.js} +4 -4
- package/dist/{chunk-ZFATEERP.js → chunk-5YLON2PW.js} +1 -1
- package/dist/{chunk-EFYPAJT3.js → chunk-6DRDCT22.js} +1 -1
- package/dist/{chunk-PQNILU27.js → chunk-6HXH57BL.js} +3 -3
- package/dist/{chunk-BNCCEER3.js → chunk-6SIG5I72.js} +22 -11
- package/dist/{chunk-RJM4QCGG.js → chunk-6VL4LGWC.js} +36 -13
- package/dist/{chunk-OM5E3TTK.js → chunk-74WGARJE.js} +5 -2
- package/dist/{chunk-EV6IMYJ6.js → chunk-A722MUNR.js} +1 -1
- package/dist/{chunk-WOFOMTGB.js → chunk-B47YUQGM.js} +6 -2
- package/dist/{chunk-MV2E3QZM.js → chunk-BTHX2FS3.js} +2 -2
- package/dist/{chunk-2QLOH454.js → chunk-BXPLX7YU.js} +3 -3
- package/dist/{chunk-V34H2YCY.js → chunk-CEOXFO3E.js} +1 -1
- package/dist/{chunk-KKLITCMF.js → chunk-CHG7VT2M.js} +8 -8
- package/dist/{chunk-QY7UU5ZB.js → chunk-DRHXRGB6.js} +1 -1
- package/dist/{chunk-V2XMNLMS.js → chunk-E6UWRXNM.js} +1 -1
- package/dist/{chunk-NQ2HQ6P5.js → chunk-HVPC2GHY.js} +6 -6
- package/dist/{chunk-FFKYL7Z3.js → chunk-L7THQMFB.js} +4 -2
- package/dist/{chunk-PAWGBSHU.js → chunk-LOECRMHA.js} +1 -1
- package/dist/{chunk-LSJZUA5V.js → chunk-LSB3EHBW.js} +2 -2
- package/dist/{chunk-ERHSECG2.js → chunk-MORLKUGM.js} +1 -1
- package/dist/{chunk-UWQWTGQH.js → chunk-MPXI6FM6.js} +3 -3
- package/dist/{chunk-DHPUMOTX.js → chunk-N5KCGFWI.js} +8 -4
- package/dist/{chunk-ZAO4HHXI.js → chunk-OG6CL3EB.js} +1 -1
- package/dist/{chunk-C5WJUZVR.js → chunk-ORNOOMVY.js} +1 -1
- package/dist/{chunk-WUVZDFHS.js → chunk-OVLJEVQS.js} +2 -2
- package/dist/{chunk-AUS5FNQE.js → chunk-PDUZO35I.js} +1 -1
- package/dist/{chunk-YLYOWZ4V.js → chunk-PXU6HOZB.js} +1 -1
- package/dist/{chunk-AGQ3YLA5.js → chunk-QJZ3Y6WW.js} +6 -6
- package/dist/{chunk-S7KW47IQ.js → chunk-RHHGLTXJ.js} +1 -1
- package/dist/{chunk-SJQ546ID.js → chunk-SEFMO2EV.js} +1 -1
- package/dist/{chunk-KJ34ZBBI.js → chunk-SMBKXWML.js} +1 -1
- package/dist/{chunk-FIFNP6PL.js → chunk-SX2DFTQV.js} +1 -1
- package/dist/{chunk-L6XZOCP4.js → chunk-UCYIRDND.js} +2 -2
- package/dist/{chunk-D6EVJUGU.js → chunk-UYK72NOS.js} +1 -1
- package/dist/{chunk-TIWAHZZ6.js → chunk-VCOELPCT.js} +2 -2
- package/dist/{chunk-2HY7I3NT.js → chunk-VE6LD3KM.js} +5 -3
- package/dist/{chunk-CAIHUYXV.js → chunk-W4GQWFRX.js} +1 -1
- package/dist/{chunk-BWIPKSWA.js → chunk-XX2VQE55.js} +1 -1
- package/dist/{chunk-UA7O3KKJ.js → chunk-YCTMKKRA.js} +1 -1
- package/dist/{chunk-DSUY5F4E.js → chunk-ZGX2DP7F.js} +2 -2
- package/dist/generated/index.js +44 -44
- package/dist/index.js +44 -44
- package/dist/styles.css +662 -223
- package/package.json +3 -3
- package/dist/SegmentedControl-X3BI3XU4.css +0 -68
package/dist/styles.css
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
/* AddPill-
|
|
91
|
+
/* AddPill-V4TQXJ53.css */
|
|
92
92
|
/*
|
|
93
93
|
* The control that adds a child (AddPill.tsx).
|
|
94
94
|
*
|
|
@@ -180,7 +180,6 @@
|
|
|
180
180
|
* card's own translucent step, in one declaration, which is exactly what a
|
|
181
181
|
* node is painted with: the two are the same grey wherever the chart is
|
|
182
182
|
* scrolled to, and the pair is OPAQUE, which the card's step alone is not.
|
|
183
|
-
* The resting hairline and the 150ms it fades over are that chart's as well.
|
|
184
183
|
*
|
|
185
184
|
* FULLY OPAQUE, ALWAYS. It used to fade with the rest of the control at rest,
|
|
186
185
|
* and a mask at a little over half opacity is not a mask: the branch was drawn
|
|
@@ -192,11 +191,12 @@
|
|
|
192
191
|
height: var(--spacing-4);
|
|
193
192
|
background-color: var(--color-surface-background);
|
|
194
193
|
background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
|
|
195
|
-
|
|
194
|
+
/* NO BOUNDARY OF ITS OWN: the mark drawn over it is the console's
|
|
195
|
+
add-circle, whose ring sits at the disc's edge, and a hairline under it
|
|
196
|
+
was a second ring a pixel outside the first. */
|
|
197
|
+
border: 0;
|
|
196
198
|
border-radius: var(--radius-circle);
|
|
197
|
-
transition:
|
|
198
|
-
background-color var(--motion-duration-base) var(--motion-easing-default),
|
|
199
|
-
border-color var(--motion-duration-base) var(--motion-easing-default);
|
|
199
|
+
transition: background-color var(--motion-duration-base) var(--motion-easing-default);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/* A row has no branch to mask, so there is no disc and no boundary either:
|
|
@@ -209,11 +209,6 @@
|
|
|
209
209
|
border-color: transparent;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
.crewlet-add-pill__mark:hover .crewlet-add-pill__disc,
|
|
213
|
-
.crewlet-add-pill__mark:focus-visible .crewlet-add-pill__disc {
|
|
214
|
-
border-color: var(--color-node-green-line);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
212
|
/*
|
|
218
213
|
* QUIET IS THE PLUS ITSELF. It is one mark per branch on a chart of a hundred,
|
|
219
214
|
* and at rest it says a child can go here and nothing more. The step is the
|
|
@@ -233,9 +228,11 @@
|
|
|
233
228
|
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
234
229
|
}
|
|
235
230
|
|
|
231
|
+
/* The console table's own add-circle, 18px across: at the 20px step the plus
|
|
232
|
+
stood heavier than every other control on the row. */
|
|
236
233
|
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__mark svg {
|
|
237
|
-
width: var(--spacing-
|
|
238
|
-
height: var(--spacing-
|
|
234
|
+
width: calc(var(--spacing-4) + var(--spacing-1) / 2);
|
|
235
|
+
height: calc(var(--spacing-4) + var(--spacing-1) / 2);
|
|
239
236
|
}
|
|
240
237
|
|
|
241
238
|
.crewlet-add-pill__mark:hover svg,
|
|
@@ -283,8 +280,10 @@
|
|
|
283
280
|
animation: crewlet-add-pill-open var(--motion-duration-moderate) var(--motion-easing-spring);
|
|
284
281
|
}
|
|
285
282
|
|
|
283
|
+
/* The console table's pill is 18px tall, under half the row: drawn at the
|
|
284
|
+
row's whole control step it was a second row of buttons inside the row. */
|
|
286
285
|
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__sections {
|
|
287
|
-
height: var(--
|
|
286
|
+
height: calc(var(--spacing-4) + var(--spacing-1) / 2);
|
|
288
287
|
}
|
|
289
288
|
|
|
290
289
|
.crewlet-add-pill[data-layout='split'] .crewlet-add-pill__sections {
|
|
@@ -393,12 +392,14 @@
|
|
|
393
392
|
background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
394
393
|
}
|
|
395
394
|
|
|
396
|
-
/* A
|
|
395
|
+
/* A ROW'S CHOICE IS HIT AT THE ROW'S CONTROL STEP, by the same overhang the
|
|
396
|
+
branch's pill takes: padding past the drawn 18px pill, with the tint clipped
|
|
397
|
+
to its content box, so a hovered choice tints the pill and stops at its
|
|
398
|
+
edges. Its width is the pointer-target floor every choice keeps. */
|
|
397
399
|
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__section {
|
|
398
|
-
width: var(--size-control-sm);
|
|
399
400
|
height: var(--size-control-sm);
|
|
400
|
-
margin: 0;
|
|
401
|
-
padding: 0;
|
|
401
|
+
margin: calc((var(--spacing-4) + var(--spacing-1) / 2 - var(--size-control-sm)) / 2) 0;
|
|
402
|
+
padding: calc((var(--size-control-sm) - var(--spacing-4) - var(--spacing-1) / 2) / 2) 0;
|
|
402
403
|
}
|
|
403
404
|
|
|
404
405
|
/*
|
|
@@ -426,7 +427,7 @@
|
|
|
426
427
|
}
|
|
427
428
|
|
|
428
429
|
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__divider {
|
|
429
|
-
height: var(--spacing-
|
|
430
|
+
height: var(--spacing-3);
|
|
430
431
|
}
|
|
431
432
|
|
|
432
433
|
/*
|
|
@@ -481,8 +482,8 @@
|
|
|
481
482
|
* of each caller, because the pill is what decides it is drawn in one colour.
|
|
482
483
|
*/
|
|
483
484
|
.crewlet-add-pill__section svg {
|
|
484
|
-
width: var(--spacing-
|
|
485
|
-
height: var(--spacing-
|
|
485
|
+
width: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
486
|
+
height: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
486
487
|
}
|
|
487
488
|
|
|
488
489
|
.crewlet-add-pill__section svg,
|
|
@@ -506,8 +507,8 @@
|
|
|
506
507
|
}
|
|
507
508
|
|
|
508
509
|
.crewlet-add-pill[data-size='md'] .crewlet-add-pill__section svg {
|
|
509
|
-
width: var(--spacing-
|
|
510
|
-
height: var(--spacing-
|
|
510
|
+
width: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
511
|
+
height: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
511
512
|
}
|
|
512
513
|
|
|
513
514
|
/*
|
|
@@ -534,7 +535,7 @@
|
|
|
534
535
|
}
|
|
535
536
|
|
|
536
537
|
|
|
537
|
-
/* AppShell-
|
|
538
|
+
/* AppShell-CEVLW4QG.css */
|
|
538
539
|
/*
|
|
539
540
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
540
541
|
* floats beside it.
|
|
@@ -615,10 +616,12 @@
|
|
|
615
616
|
transition: transform var(--motion-duration-fast) var(--motion-easing-default);
|
|
616
617
|
}
|
|
617
618
|
|
|
619
|
+
/* One ring, over the link's own boundary rather than 2px off it, which is two
|
|
620
|
+
edges with a gap between them: the rule every field keeps (see Input.css). */
|
|
618
621
|
.crewlet-app-shell__skip:focus-visible {
|
|
619
622
|
transform: translateY(0);
|
|
620
623
|
outline: 2px solid var(--color-focus);
|
|
621
|
-
outline-offset:
|
|
624
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
622
625
|
}
|
|
623
626
|
|
|
624
627
|
/*
|
|
@@ -1480,7 +1483,7 @@
|
|
|
1480
1483
|
}
|
|
1481
1484
|
|
|
1482
1485
|
|
|
1483
|
-
/* Button-
|
|
1486
|
+
/* Button-UWKBTKYD.css */
|
|
1484
1487
|
/*
|
|
1485
1488
|
* The button, and the link drawn as one.
|
|
1486
1489
|
*
|
|
@@ -1556,6 +1559,24 @@
|
|
|
1556
1559
|
outline-offset: 2px;
|
|
1557
1560
|
}
|
|
1558
1561
|
|
|
1562
|
+
/*
|
|
1563
|
+
* ONE RING, OVER THE BOUNDARY, on every button that draws one. A secondary,
|
|
1564
|
+
* an outline, a danger and a pressed toggle each carry a visible border, and a
|
|
1565
|
+
* ring standing 2px off it was two edges with a gap between them, which reads
|
|
1566
|
+
* as a second outline rather than as focus. On the inset offset the ring
|
|
1567
|
+
* covers the border instead, the rule every field keeps (see Input.css).
|
|
1568
|
+
*
|
|
1569
|
+
* A FILLED OR BORDERLESS BUTTON KEEPS THE OUTSET RING. There is no edge for it
|
|
1570
|
+
* to double, and an inset ring on the accent fill would be drawn in nearly the
|
|
1571
|
+
* fill's own colour, which is a focus nobody can see.
|
|
1572
|
+
*/
|
|
1573
|
+
.crewlet-btn--secondary:focus-visible,
|
|
1574
|
+
.crewlet-btn--outline:focus-visible,
|
|
1575
|
+
.crewlet-btn--danger:focus-visible,
|
|
1576
|
+
.crewlet-btn[aria-pressed='true']:focus-visible {
|
|
1577
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1559
1580
|
.crewlet-btn:disabled,
|
|
1560
1581
|
.crewlet-btn[aria-disabled='true'] {
|
|
1561
1582
|
opacity: 0.5;
|
|
@@ -2061,7 +2082,7 @@
|
|
|
2061
2082
|
}
|
|
2062
2083
|
|
|
2063
2084
|
|
|
2064
|
-
/* Canvas-
|
|
2085
|
+
/* Canvas-YVXHMWLN.css */
|
|
2065
2086
|
/*
|
|
2066
2087
|
* A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
|
|
2067
2088
|
* page's own scroller is never involved.
|
|
@@ -2084,6 +2105,19 @@
|
|
|
2084
2105
|
border-radius: var(--radius-lg);
|
|
2085
2106
|
}
|
|
2086
2107
|
|
|
2108
|
+
/*
|
|
2109
|
+
* A DOTTED FIELD, for content that is moved by dragging the field itself: the
|
|
2110
|
+
* dots say it pans before anybody drags it. They are the strong hairline's ink
|
|
2111
|
+
* in both themes, one spacing step apart so density scales the grid with the
|
|
2112
|
+
* cards on it, and drawn on the frame rather than on the world, so they stay
|
|
2113
|
+
* put while the content moves over them. Longhands, so the ground under them
|
|
2114
|
+
* is the canvas's own.
|
|
2115
|
+
*/
|
|
2116
|
+
.crewlet-canvas[data-ground='dotted'] {
|
|
2117
|
+
background-image: radial-gradient(var(--color-border-strong) 1px, transparent 1.2px);
|
|
2118
|
+
background-size: var(--spacing-5) var(--spacing-5);
|
|
2119
|
+
}
|
|
2120
|
+
|
|
2087
2121
|
.crewlet-canvas__viewport {
|
|
2088
2122
|
position: absolute;
|
|
2089
2123
|
inset: 0;
|
|
@@ -2379,7 +2413,7 @@
|
|
|
2379
2413
|
}
|
|
2380
2414
|
|
|
2381
2415
|
|
|
2382
|
-
/* Card-
|
|
2416
|
+
/* Card-KJOYHDTJ.css */
|
|
2383
2417
|
/*
|
|
2384
2418
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
2385
2419
|
* control.
|
|
@@ -2580,9 +2614,13 @@
|
|
|
2580
2614
|
border-color: var(--color-border-hover);
|
|
2581
2615
|
}
|
|
2582
2616
|
|
|
2617
|
+
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
2618
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
2619
|
+
A chosen card keeps an accent line inside the ring, since the selection
|
|
2620
|
+
ring below is two pixels deep and the focus ring covers one of them. */
|
|
2583
2621
|
.crewlet-card.is-interactive:focus-visible {
|
|
2584
2622
|
outline: 2px solid var(--color-focus);
|
|
2585
|
-
outline-offset:
|
|
2623
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2586
2624
|
}
|
|
2587
2625
|
|
|
2588
2626
|
/*
|
|
@@ -2839,7 +2877,7 @@
|
|
|
2839
2877
|
}
|
|
2840
2878
|
|
|
2841
2879
|
|
|
2842
|
-
/* Charts-
|
|
2880
|
+
/* Charts-THPA5BWV.css */
|
|
2843
2881
|
/* The chart kit: a legend, a ranked bar list, a stacked bar, stacked
|
|
2844
2882
|
columns, an activity strip, a time series and the reading layer they share. Hand-drawn rather than a charting library, for one reason that
|
|
2845
2883
|
decides it: every mark here reads tokens, in two themes, at the contrast
|
|
@@ -3113,6 +3151,46 @@
|
|
|
3113
3151
|
white-space: nowrap;
|
|
3114
3152
|
}
|
|
3115
3153
|
|
|
3154
|
+
/*
|
|
3155
|
+
* A SPLIT BAR: one bar divided into its parts, as a stacked bar is. The parts
|
|
3156
|
+
* stand 2px apart for the stacked bar's reason, the ground showing through is
|
|
3157
|
+
* what makes each part a part, and each part GROWS by its value (a style
|
|
3158
|
+
* property on the part) so the gaps come out of the parts and the bar keeps
|
|
3159
|
+
* its length. The bar clips its parts, so the last part takes the bar's
|
|
3160
|
+
* rounded value end and the first its square start.
|
|
3161
|
+
*/
|
|
3162
|
+
.crewlet-bar-list__bar--parts {
|
|
3163
|
+
display: flex;
|
|
3164
|
+
gap: 2px;
|
|
3165
|
+
overflow: hidden;
|
|
3166
|
+
background: none;
|
|
3167
|
+
}
|
|
3168
|
+
|
|
3169
|
+
.crewlet-bar-list__part {
|
|
3170
|
+
flex-grow: 0;
|
|
3171
|
+
flex-shrink: 1;
|
|
3172
|
+
flex-basis: 0;
|
|
3173
|
+
min-width: 0;
|
|
3174
|
+
height: 100%;
|
|
3175
|
+
background: var(--crewlet-bar-list-part-color, var(--color-data-other));
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
/*
|
|
3179
|
+
* THE KEY UNDER A SPLIT BAR, at the caption step, starting where the bar
|
|
3180
|
+
* starts: under the plot in the BESIDE register, past the words' column and
|
|
3181
|
+
* the gap after it, so each name stands under the bar it keys rather than
|
|
3182
|
+
* under the row's own name.
|
|
3183
|
+
*/
|
|
3184
|
+
.crewlet-bar-list__key {
|
|
3185
|
+
margin-top: var(--spacing-1);
|
|
3186
|
+
font-size: var(--font-size-2xs);
|
|
3187
|
+
}
|
|
3188
|
+
|
|
3189
|
+
.crewlet-bar-list--beside .crewlet-bar-list__key {
|
|
3190
|
+
margin-top: 0;
|
|
3191
|
+
padding-inline-start: calc(var(--crewlet-bar-list-label-width) + var(--spacing-3));
|
|
3192
|
+
}
|
|
3193
|
+
|
|
3116
3194
|
/* ─── Stacked bar ─────────────────────────────────────────────── */
|
|
3117
3195
|
|
|
3118
3196
|
/*
|
|
@@ -3584,7 +3662,7 @@
|
|
|
3584
3662
|
}
|
|
3585
3663
|
|
|
3586
3664
|
|
|
3587
|
-
/* Checkbox-
|
|
3665
|
+
/* Checkbox-UE7TEPAM.css */
|
|
3588
3666
|
/*
|
|
3589
3667
|
* Checkbox: a box, its label and its consequence as one target.
|
|
3590
3668
|
*
|
|
@@ -3692,9 +3770,17 @@
|
|
|
3692
3770
|
opacity: 0.6;
|
|
3693
3771
|
}
|
|
3694
3772
|
|
|
3773
|
+
/*
|
|
3774
|
+
* OUTSIDE THE BOX, AND AGAINST IT. The box IS the target, and 2px eaten off a
|
|
3775
|
+
* 16px square leaves no middle, so the ring stays outside it. But it stands on
|
|
3776
|
+
* the box's own edge rather than 2px off it: a ring with a gap round a box
|
|
3777
|
+
* that already draws its own boundary is two edges, which reads as a second
|
|
3778
|
+
* outline rather than as focus. Flush, the ring and the box are one edge, and
|
|
3779
|
+
* the ring is still drawn whole on the ground around it.
|
|
3780
|
+
*/
|
|
3695
3781
|
.crewlet-checkbox__control:focus-visible {
|
|
3696
3782
|
outline: 2px solid var(--color-focus);
|
|
3697
|
-
outline-offset:
|
|
3783
|
+
outline-offset: 0;
|
|
3698
3784
|
}
|
|
3699
3785
|
|
|
3700
3786
|
|
|
@@ -4440,7 +4526,7 @@
|
|
|
4440
4526
|
}
|
|
4441
4527
|
|
|
4442
4528
|
|
|
4443
|
-
/* DataTable-
|
|
4529
|
+
/* DataTable-WZK3V62B.css */
|
|
4444
4530
|
/* ─────────────────────────────────────────────────────────────────
|
|
4445
4531
|
* Default variant.
|
|
4446
4532
|
*
|
|
@@ -4822,8 +4908,19 @@ body.crewlet-data-table-resizing {
|
|
|
4822
4908
|
color: var(--color-text-on-accent);
|
|
4823
4909
|
}
|
|
4824
4910
|
|
|
4911
|
+
/*
|
|
4912
|
+
* One ring, over the chip's own boundary rather than 2px off it, which is two
|
|
4913
|
+
* edges with a gap between them: the rule every field keeps (see Input.css).
|
|
4914
|
+
* The active size is filled with the accent and its border is the fill, so
|
|
4915
|
+
* there is no edge to double there, and an inset ring on that fill would be
|
|
4916
|
+
* drawn in nearly the fill's own colour: it keeps the outset ring.
|
|
4917
|
+
*/
|
|
4825
4918
|
.crewlet-data-table__items-per-page-btn:focus-visible {
|
|
4826
4919
|
outline: 2px solid var(--color-focus);
|
|
4920
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
4921
|
+
}
|
|
4922
|
+
|
|
4923
|
+
.crewlet-data-table__items-per-page-btn.is-active:focus-visible {
|
|
4827
4924
|
outline-offset: 2px;
|
|
4828
4925
|
}
|
|
4829
4926
|
|
|
@@ -6909,7 +7006,7 @@ body.crewlet-data-table-resizing {
|
|
|
6909
7006
|
}
|
|
6910
7007
|
|
|
6911
7008
|
|
|
6912
|
-
/* DateTimePicker-
|
|
7009
|
+
/* DateTimePicker-4AZBTODT.css */
|
|
6913
7010
|
/*
|
|
6914
7011
|
* DateTimePicker: a Select-shaped trigger over a calendar dialog.
|
|
6915
7012
|
*
|
|
@@ -6953,12 +7050,17 @@ body.crewlet-data-table-resizing {
|
|
|
6953
7050
|
* Focus and open are drawn alike, and the ring is an OUTLINE: forced-colors
|
|
6954
7051
|
* mode drops every box-shadow and keeps outlines, so a ring drawn as a shadow
|
|
6955
7052
|
* disappears for exactly the readers who most need one.
|
|
7053
|
+
*
|
|
7054
|
+
* ONE RING, OVER THE BOUNDARY. It stood 2px off the box with the border
|
|
7055
|
+
* recoloured to the focus colour as well, which is an accent hairline, a gap
|
|
7056
|
+
* and an accent band: two rings from one state. On the inset offset the ring
|
|
7057
|
+
* covers the border, and the border keeps its own colour under it, the rule
|
|
7058
|
+
* every field keeps (see Input.css).
|
|
6956
7059
|
*/
|
|
6957
7060
|
.crewlet-datetime:focus-visible,
|
|
6958
7061
|
.crewlet-datetime.is-open {
|
|
6959
|
-
outline:
|
|
6960
|
-
outline-offset:
|
|
6961
|
-
border-color: var(--color-focus);
|
|
7062
|
+
outline: 1px solid var(--color-focus);
|
|
7063
|
+
outline-offset: -1px;
|
|
6962
7064
|
}
|
|
6963
7065
|
|
|
6964
7066
|
.crewlet-datetime.is-disabled,
|
|
@@ -7081,10 +7183,10 @@ svg.crewlet-datetime__chevron {
|
|
|
7081
7183
|
margin: 0;
|
|
7082
7184
|
}
|
|
7083
7185
|
|
|
7186
|
+
/* The same one ring the trigger draws, over the box's own boundary. */
|
|
7084
7187
|
.crewlet-datetime__time-input:focus-visible {
|
|
7085
|
-
outline:
|
|
7086
|
-
outline-offset:
|
|
7087
|
-
border-color: var(--color-focus);
|
|
7188
|
+
outline: 1px solid var(--color-focus);
|
|
7189
|
+
outline-offset: -1px;
|
|
7088
7190
|
}
|
|
7089
7191
|
|
|
7090
7192
|
.crewlet-datetime__footer {
|
|
@@ -7718,7 +7820,7 @@ svg.crewlet-datetime__chevron {
|
|
|
7718
7820
|
}
|
|
7719
7821
|
|
|
7720
7822
|
|
|
7721
|
-
/* FilterChip-
|
|
7823
|
+
/* FilterChip-EZ4QMW4E.css */
|
|
7722
7824
|
/*
|
|
7723
7825
|
* The filter chip: neutral until it is on, and then the accent.
|
|
7724
7826
|
*
|
|
@@ -7789,9 +7891,12 @@ svg.crewlet-datetime__chevron {
|
|
|
7789
7891
|
color: var(--color-text-primary);
|
|
7790
7892
|
}
|
|
7791
7893
|
|
|
7894
|
+
/* One ring, over the chip's own boundary rather than 2px off it, which is two
|
|
7895
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
7896
|
+
A chip that is on still says so under the ring, in its fill and its ink. */
|
|
7792
7897
|
.crewlet-filter-chip:focus-visible {
|
|
7793
7898
|
outline: 2px solid var(--color-focus);
|
|
7794
|
-
outline-offset:
|
|
7899
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
7795
7900
|
}
|
|
7796
7901
|
|
|
7797
7902
|
.crewlet-filter-chip:disabled {
|
|
@@ -7828,7 +7933,7 @@ svg.crewlet-datetime__chevron {
|
|
|
7828
7933
|
}
|
|
7829
7934
|
|
|
7830
7935
|
|
|
7831
|
-
/* IconButton-
|
|
7936
|
+
/* IconButton-VYWP6SGW.css */
|
|
7832
7937
|
/*
|
|
7833
7938
|
* IconButton: a square icon-only control.
|
|
7834
7939
|
*
|
|
@@ -7865,6 +7970,21 @@ svg.crewlet-datetime__chevron {
|
|
|
7865
7970
|
outline-offset: 2px;
|
|
7866
7971
|
}
|
|
7867
7972
|
|
|
7973
|
+
/*
|
|
7974
|
+
* ONE RING, OVER THE BOUNDARY, on every square that draws one: the secondary
|
|
7975
|
+
* and the soft-brand at rest, and the ghost-brand, which grows one under the
|
|
7976
|
+
* pointer. A ring standing 2px off a visible border is two edges with a gap
|
|
7977
|
+
* between them, which reads as a second outline rather than as focus; on the
|
|
7978
|
+
* inset offset it covers the border instead, the rule every field keeps (see
|
|
7979
|
+
* Input.css). The other ghosts never draw an edge, so they keep the outset
|
|
7980
|
+
* ring.
|
|
7981
|
+
*/
|
|
7982
|
+
.crewlet-icon-btn--secondary:focus-visible,
|
|
7983
|
+
.crewlet-icon-btn--soft-brand:focus-visible,
|
|
7984
|
+
.crewlet-icon-btn--ghost-brand:focus-visible {
|
|
7985
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
7986
|
+
}
|
|
7987
|
+
|
|
7868
7988
|
.crewlet-icon-btn:disabled,
|
|
7869
7989
|
.crewlet-icon-btn[aria-disabled='true'] {
|
|
7870
7990
|
opacity: 0.5;
|
|
@@ -7989,7 +8109,7 @@ svg.crewlet-datetime__chevron {
|
|
|
7989
8109
|
}
|
|
7990
8110
|
|
|
7991
8111
|
|
|
7992
|
-
/* ImageUpload-
|
|
8112
|
+
/* ImageUpload-L2GE4JUM.css */
|
|
7993
8113
|
/*
|
|
7994
8114
|
* ImageUpload, the click-to-upload affordance built on Avatar.
|
|
7995
8115
|
*
|
|
@@ -8173,9 +8293,13 @@ svg.crewlet-datetime__chevron {
|
|
|
8173
8293
|
cursor: default;
|
|
8174
8294
|
}
|
|
8175
8295
|
|
|
8296
|
+
/* One ring, drawn OVER the badge's knockout ring rather than 2px outside it:
|
|
8297
|
+
over the image the knockout is an edge of its own, and a ring standing off
|
|
8298
|
+
it was two rings round one small disc. On the inset offset the focus ring
|
|
8299
|
+
takes the knockout's place, which still parts the disc from the image. */
|
|
8176
8300
|
.crewlet-image-upload__remove:focus-visible {
|
|
8177
8301
|
outline: 2px solid var(--color-focus);
|
|
8178
|
-
outline-offset:
|
|
8302
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
8179
8303
|
}
|
|
8180
8304
|
|
|
8181
8305
|
.crewlet-image-upload__input {
|
|
@@ -8267,7 +8391,7 @@ svg.crewlet-datetime__chevron {
|
|
|
8267
8391
|
}
|
|
8268
8392
|
|
|
8269
8393
|
|
|
8270
|
-
/* Input-
|
|
8394
|
+
/* Input-DRFNI26F.css */
|
|
8271
8395
|
/*
|
|
8272
8396
|
* The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
|
|
8273
8397
|
* ReadOnlyField.
|
|
@@ -8344,11 +8468,14 @@ svg.crewlet-datetime__chevron {
|
|
|
8344
8468
|
* forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
|
|
8345
8469
|
* as a shadow disappears for exactly the readers who most need one.
|
|
8346
8470
|
*
|
|
8347
|
-
* It is
|
|
8348
|
-
*
|
|
8349
|
-
*
|
|
8350
|
-
*
|
|
8351
|
-
*
|
|
8471
|
+
* It is ONE PIXEL, LAID EXACTLY ON THE BOUNDARY: the field's own hairline,
|
|
8472
|
+
* drawn in the focus colour, which is how the console's fields say focus. At
|
|
8473
|
+
* two pixels it was a heavy band round every box a caret landed in, and on a
|
|
8474
|
+
* form of them the field being typed in read as the loudest thing on the page.
|
|
8475
|
+
* Drawn on the boundary rather than outside it, a scroller cannot clip it and
|
|
8476
|
+
* the field does not grow a halo the moment a caret lands in it, which is what
|
|
8477
|
+
* a filter box in a toolbar of them did to the row it sits in. Every boxed
|
|
8478
|
+
* field in the package rings this way (`Input.test.tsx` holds them to it).
|
|
8352
8479
|
*
|
|
8353
8480
|
* THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
|
|
8354
8481
|
* ring has not already said, and it is what cost the error state its own
|
|
@@ -8364,8 +8491,8 @@ svg.crewlet-datetime__chevron {
|
|
|
8364
8491
|
* on a pointer press as well as on a tab.
|
|
8365
8492
|
*/
|
|
8366
8493
|
.crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
8367
|
-
outline:
|
|
8368
|
-
outline-offset:
|
|
8494
|
+
outline: 1px solid var(--color-focus);
|
|
8495
|
+
outline-offset: -1px;
|
|
8369
8496
|
}
|
|
8370
8497
|
|
|
8371
8498
|
.crewlet-input.is-error {
|
|
@@ -8624,8 +8751,8 @@ svg.crewlet-datetime__chevron {
|
|
|
8624
8751
|
on the control itself: a textarea is the field, with nothing wrapped round
|
|
8625
8752
|
it and nothing focusable inside it. */
|
|
8626
8753
|
.crewlet-textarea:focus-visible {
|
|
8627
|
-
outline:
|
|
8628
|
-
outline-offset:
|
|
8754
|
+
outline: 1px solid var(--color-focus);
|
|
8755
|
+
outline-offset: -1px;
|
|
8629
8756
|
}
|
|
8630
8757
|
|
|
8631
8758
|
.crewlet-textarea.is-error {
|
|
@@ -8641,10 +8768,37 @@ svg.crewlet-datetime__chevron {
|
|
|
8641
8768
|
cursor: not-allowed;
|
|
8642
8769
|
}
|
|
8643
8770
|
|
|
8771
|
+
/*
|
|
8772
|
+
* ONE LINE THAT GROWS STARTS AT THE SINGLE-LINE FIELD'S HEIGHT. A box that
|
|
8773
|
+
* grows to fit what is typed was drawn at the large control step while it held
|
|
8774
|
+
* one line, so the box a list item is written in stood sixteen pixels taller
|
|
8775
|
+
* than the fields above and below it. One line now stands at the medium step,
|
|
8776
|
+
* the height of every single-line field, with the line centred in it as an
|
|
8777
|
+
* input's is: the block padding is what that step leaves once the two border
|
|
8778
|
+
* pixels and one line are paid for. Each line past the first grows it from
|
|
8779
|
+
* there.
|
|
8780
|
+
*/
|
|
8644
8781
|
.crewlet-textarea.is-auto-resize {
|
|
8645
8782
|
resize: none;
|
|
8646
8783
|
overflow: hidden;
|
|
8647
|
-
min-height: var(--size-control-
|
|
8784
|
+
min-height: var(--size-control-md);
|
|
8785
|
+
padding-block: max(
|
|
8786
|
+
0px,
|
|
8787
|
+
calc((var(--size-control-md) - 2px - var(--font-line-height-normal) * var(--font-size-compact)) / 2)
|
|
8788
|
+
);
|
|
8789
|
+
}
|
|
8790
|
+
|
|
8791
|
+
/*
|
|
8792
|
+
* AND WHAT TRAILS IT SITS ON ITS FIRST LINE, centred in the band one line
|
|
8793
|
+
* takes, which is exactly where an input's trailing hint sits. Pinned a spacing
|
|
8794
|
+
* step from the top, it sat above the line's middle and level with nothing;
|
|
8795
|
+
* on the first line it stays put as the box grows under it.
|
|
8796
|
+
*/
|
|
8797
|
+
.crewlet-textarea-shell:has(> .crewlet-textarea.is-auto-resize) > .crewlet-input__trailing {
|
|
8798
|
+
top: 0;
|
|
8799
|
+
display: flex;
|
|
8800
|
+
align-items: center;
|
|
8801
|
+
height: var(--size-control-md);
|
|
8648
8802
|
}
|
|
8649
8803
|
|
|
8650
8804
|
.crewlet-textarea::placeholder {
|
|
@@ -8886,7 +9040,7 @@ svg.crewlet-datetime__chevron {
|
|
|
8886
9040
|
}
|
|
8887
9041
|
|
|
8888
9042
|
|
|
8889
|
-
/* Kbd-
|
|
9043
|
+
/* Kbd-MCWJTRTT.css */
|
|
8890
9044
|
/*
|
|
8891
9045
|
* A keycap: the key's name on a small raised tile.
|
|
8892
9046
|
*
|
|
@@ -8931,9 +9085,20 @@ svg.crewlet-datetime__chevron {
|
|
|
8931
9085
|
* platform prints a chord. It is a `kbd` of its own because that is what a key
|
|
8932
9086
|
* inside a key combination is, and a user agent's `kbd` rule would otherwise
|
|
8933
9087
|
* set its own face and size on it.
|
|
9088
|
+
*
|
|
9089
|
+
* AND IT TAKES NO BOX FROM ANYBODY ELSE. An application stylesheet that draws
|
|
9090
|
+
* a bare `kbd` as a cap of its own (a common enough rule) reached each key in
|
|
9091
|
+
* here and framed it, so one chord drew a frame round a run of framed keys.
|
|
9092
|
+
* The key states every part of its box, so whatever a page says about `kbd`,
|
|
9093
|
+
* a chord is one cap.
|
|
8934
9094
|
*/
|
|
8935
9095
|
.crewlet-kbd__key {
|
|
8936
9096
|
font: inherit;
|
|
9097
|
+
color: inherit;
|
|
9098
|
+
padding: 0;
|
|
9099
|
+
background: none;
|
|
9100
|
+
border: 0;
|
|
9101
|
+
border-radius: 0;
|
|
8937
9102
|
}
|
|
8938
9103
|
|
|
8939
9104
|
/*
|
|
@@ -10610,7 +10775,7 @@ svg.crewlet-datetime__chevron {
|
|
|
10610
10775
|
}
|
|
10611
10776
|
|
|
10612
10777
|
|
|
10613
|
-
/* NewItemsNotice-
|
|
10778
|
+
/* NewItemsNotice-Q5ED73BQ.css */
|
|
10614
10779
|
/*
|
|
10615
10780
|
* The pill that holds finished rows back.
|
|
10616
10781
|
*
|
|
@@ -10661,9 +10826,11 @@ svg.crewlet-datetime__chevron {
|
|
|
10661
10826
|
color: var(--color-brand-accent-ink);
|
|
10662
10827
|
}
|
|
10663
10828
|
|
|
10829
|
+
/* One ring, over the pill's own boundary rather than 2px off it, which is two
|
|
10830
|
+
edges with a gap between them: the rule every field keeps (see Input.css). */
|
|
10664
10831
|
.crewlet-new-items:focus-visible {
|
|
10665
10832
|
outline: 2px solid var(--color-focus);
|
|
10666
|
-
outline-offset:
|
|
10833
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
10667
10834
|
}
|
|
10668
10835
|
|
|
10669
10836
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -10673,7 +10840,7 @@ svg.crewlet-datetime__chevron {
|
|
|
10673
10840
|
}
|
|
10674
10841
|
|
|
10675
10842
|
|
|
10676
|
-
/* OrgLabel-
|
|
10843
|
+
/* OrgLabel-6WSKJQOT.css */
|
|
10677
10844
|
/*
|
|
10678
10845
|
* What a node of an org chart and a row of an org table both say
|
|
10679
10846
|
* (OrgLabel.tsx).
|
|
@@ -10762,6 +10929,44 @@ svg.crewlet-datetime__chevron {
|
|
|
10762
10929
|
fill: currentColor;
|
|
10763
10930
|
}
|
|
10764
10931
|
|
|
10932
|
+
/*
|
|
10933
|
+
* A PERSON IS A FIGURE INSIDE A DASHED RING, as the console chart draws one:
|
|
10934
|
+
* the boundary says this seat is held by someone outside the system. The ring
|
|
10935
|
+
* is the 24px target step and the figure inside it a step smaller than a
|
|
10936
|
+
* container's glyph, which leaves the air a boundary needs to read as one: at
|
|
10937
|
+
* the zone's own step the figure touched the ring on every side.
|
|
10938
|
+
*
|
|
10939
|
+
* THE RING IS DECORATION, drawn in the step kept for it, and the figure is the
|
|
10940
|
+
* mark: the ring says how the seat is held, never what it is.
|
|
10941
|
+
*/
|
|
10942
|
+
.crewlet-org-label__icon--ring {
|
|
10943
|
+
position: relative;
|
|
10944
|
+
}
|
|
10945
|
+
|
|
10946
|
+
.crewlet-org-label__icon--ring::before {
|
|
10947
|
+
content: '';
|
|
10948
|
+
position: absolute;
|
|
10949
|
+
top: 50%;
|
|
10950
|
+
left: 50%;
|
|
10951
|
+
width: var(--size-target-min);
|
|
10952
|
+
height: var(--size-target-min);
|
|
10953
|
+
border: 1px dashed var(--color-text-muted);
|
|
10954
|
+
border-radius: var(--radius-circle);
|
|
10955
|
+
transform: translate(-50%, -50%);
|
|
10956
|
+
pointer-events: none;
|
|
10957
|
+
}
|
|
10958
|
+
|
|
10959
|
+
.crewlet-org-label__icon--ring > svg {
|
|
10960
|
+
width: var(--font-size-md);
|
|
10961
|
+
height: var(--font-size-md);
|
|
10962
|
+
}
|
|
10963
|
+
|
|
10964
|
+
/* A ROW DRAWS THE FIGURE ALONE, as the console table does: a ring on a line
|
|
10965
|
+
of text is a second boundary inside the row's own. */
|
|
10966
|
+
.crewlet-org-label--row .crewlet-org-label__icon--ring::before {
|
|
10967
|
+
content: none;
|
|
10968
|
+
}
|
|
10969
|
+
|
|
10765
10970
|
/* ---- The name and its caption -------------------------------------------- */
|
|
10766
10971
|
|
|
10767
10972
|
/*
|
|
@@ -10960,7 +11165,7 @@ svg.crewlet-datetime__chevron {
|
|
|
10960
11165
|
}
|
|
10961
11166
|
|
|
10962
11167
|
|
|
10963
|
-
/* OrgNode-
|
|
11168
|
+
/* OrgNode-TCHJH5FO.css */
|
|
10964
11169
|
/*
|
|
10965
11170
|
* What a node of an org chart carries beyond what it says (OrgNode.tsx).
|
|
10966
11171
|
*
|
|
@@ -10996,6 +11201,15 @@ svg.crewlet-datetime__chevron {
|
|
|
10996
11201
|
|
|
10997
11202
|
/* ---- A unit's lead ------------------------------------------------------ */
|
|
10998
11203
|
|
|
11204
|
+
/*
|
|
11205
|
+
* NO LINE OF ITS OWN. The console chart rules a hairline over this strip and
|
|
11206
|
+
* frames a set lead's pill inside it, 4px in from the node's own edge: inside
|
|
11207
|
+
* a card that is already framed, that is a box drawn twice, with a second line
|
|
11208
|
+
* running beside the card's edge on three sides and a third across the top.
|
|
11209
|
+
* A set lead is a ground instead, and a ground needs no line to divide it from
|
|
11210
|
+
* the name above. Only an EMPTY slot keeps an edge, dashed (below), because
|
|
11211
|
+
* the dash is what says a place is waiting rather than a frame round a value.
|
|
11212
|
+
*/
|
|
10999
11213
|
.crewlet-org-node-lead {
|
|
11000
11214
|
position: relative;
|
|
11001
11215
|
display: flex;
|
|
@@ -11004,28 +11218,11 @@ svg.crewlet-datetime__chevron {
|
|
|
11004
11218
|
padding: 0 var(--spacing-1) var(--spacing-1);
|
|
11005
11219
|
}
|
|
11006
11220
|
|
|
11007
|
-
/*
|
|
11008
|
-
* THE SEPARATOR IS INSET, like every hairline inside a node of the console
|
|
11009
|
-
* chart (it draws this one from 4 to `nw - 4`). Edge to edge it cut the card
|
|
11010
|
-
* in two and the node read as two stacked cells rather than as a card with a
|
|
11011
|
-
* fact along its bottom edge. Drawn rather than bordered for that reason
|
|
11012
|
-
* alone: a border cannot be shorter than the box it is on.
|
|
11013
|
-
*/
|
|
11014
|
-
.crewlet-org-node-lead::before {
|
|
11015
|
-
content: '';
|
|
11016
|
-
position: absolute;
|
|
11017
|
-
top: 0;
|
|
11018
|
-
right: var(--spacing-1);
|
|
11019
|
-
left: var(--spacing-1);
|
|
11020
|
-
height: 1px;
|
|
11021
|
-
background: var(--color-border-default);
|
|
11022
|
-
}
|
|
11023
|
-
|
|
11024
11221
|
/*
|
|
11025
11222
|
* A PILL RATHER THAN A LINE OF TEXT, so the lead reads as one value attached
|
|
11026
|
-
* to this unit rather than as a second caption.
|
|
11027
|
-
*
|
|
11028
|
-
*
|
|
11223
|
+
* to this unit rather than as a second caption. RAISED, on the step a chip
|
|
11224
|
+
* with no boundary of its own takes (the palette suite holds it off the card
|
|
11225
|
+
* on both themes), so it is found by its ground rather than by a frame.
|
|
11029
11226
|
*/
|
|
11030
11227
|
.crewlet-org-node-lead__pill {
|
|
11031
11228
|
display: flex;
|
|
@@ -11040,32 +11237,30 @@ svg.crewlet-datetime__chevron {
|
|
|
11040
11237
|
font-weight: var(--font-weight-medium);
|
|
11041
11238
|
line-height: var(--font-line-height-tight);
|
|
11042
11239
|
color: var(--color-text-secondary);
|
|
11043
|
-
|
|
11044
|
-
* THE BOUNDARY IS THE HOVER STEP, not the resting hairline, which is what
|
|
11045
|
-
* the console chart draws around this one pill and nowhere else inside a
|
|
11046
|
-
* node: every other line in there is the separator step and this is a
|
|
11047
|
-
* boundary around a value. At the separator's own alpha the pill was a
|
|
11048
|
-
* rectangle a reader had to look for, on the one fact a unit's node states.
|
|
11049
|
-
*/
|
|
11050
|
-
border: 1px solid var(--color-border-hover);
|
|
11240
|
+
background: var(--color-surface-elevated);
|
|
11051
11241
|
border-radius: var(--radius-sm);
|
|
11052
11242
|
}
|
|
11053
11243
|
|
|
11054
11244
|
/*
|
|
11055
|
-
* AND AN EMPTY ONE IS
|
|
11056
|
-
*
|
|
11057
|
-
*
|
|
11058
|
-
*
|
|
11245
|
+
* AND AN EMPTY ONE IS AN EMPTY SLOT: no ground, a dashed edge and the word
|
|
11246
|
+
* alone in the quieter ink, as the console chart draws it. A unit with no lead
|
|
11247
|
+
* has a place for one, and the dash is what says the place is waiting to be
|
|
11248
|
+
* filled, which is what invites the reader to set it. It is the one edge drawn
|
|
11249
|
+
* inside a node, and only while the slot is empty: a set lead is a raised
|
|
11250
|
+
* ground with no edge at all. The edge is the hover step rather than the
|
|
11251
|
+
* resting hairline, because at the hairline's own step the slot was a
|
|
11252
|
+
* rectangle a reader had to look for.
|
|
11059
11253
|
*/
|
|
11060
11254
|
.crewlet-org-node-lead__pill--empty {
|
|
11061
11255
|
color: var(--color-text-tertiary);
|
|
11062
|
-
|
|
11256
|
+
background: none;
|
|
11257
|
+
border: 1px dashed var(--color-border-hover);
|
|
11063
11258
|
}
|
|
11064
11259
|
|
|
11065
11260
|
/*
|
|
11066
11261
|
* A LEAD THAT CAN BE CHANGED IS STILL A LEAD. Where the pill holds a control
|
|
11067
11262
|
* rather than a word, the control IS the pill: it fills it, carries the pill's
|
|
11068
|
-
* own type and ink, and draws no
|
|
11263
|
+
* own type and ink, and draws no boundary or ground of its own on the pill's.
|
|
11069
11264
|
* Left at its own size, a control step inside a half-rank strip is a button
|
|
11070
11265
|
* that overflows the node it sits in.
|
|
11071
11266
|
*
|
|
@@ -11092,6 +11287,35 @@ svg.crewlet-datetime__chevron {
|
|
|
11092
11287
|
color: var(--color-text-primary);
|
|
11093
11288
|
}
|
|
11094
11289
|
|
|
11290
|
+
/*
|
|
11291
|
+
* WHATEVER WRAPS THE CONTROL FILLS THE PILL TOO. A menu's trigger arrives
|
|
11292
|
+
* inside the menu's own anchor, and the anchor was a shrink-wrapped item of
|
|
11293
|
+
* the pill's row: the control was the width of the word "Lead" in a pill as
|
|
11294
|
+
* wide as the node, and a press anywhere else in the pill did nothing.
|
|
11295
|
+
*/
|
|
11296
|
+
.crewlet-org-node-lead__pill > :has(> .crewlet-btn) {
|
|
11297
|
+
display: flex;
|
|
11298
|
+
flex: 1;
|
|
11299
|
+
min-width: 0;
|
|
11300
|
+
}
|
|
11301
|
+
|
|
11302
|
+
/*
|
|
11303
|
+
* REACHED, THE WHOLE PILL LIGHTS, because the whole pill is the control. The
|
|
11304
|
+
* ghost control's own hover and press grounds were a patch the size of the
|
|
11305
|
+
* word inside the pill, so it paints neither, and the pill takes the row hover
|
|
11306
|
+
* step over its own ground while the control is pointed at or its menu is
|
|
11307
|
+
* open. Its ink still goes to full, above.
|
|
11308
|
+
*/
|
|
11309
|
+
.crewlet-org-node-lead__pill
|
|
11310
|
+
.crewlet-btn:is(:hover, :active):not(:disabled):not([aria-disabled='true']) {
|
|
11311
|
+
background: none;
|
|
11312
|
+
}
|
|
11313
|
+
|
|
11314
|
+
.crewlet-org-node-lead__pill:has(.crewlet-btn:hover:not(:disabled):not([aria-disabled='true'])),
|
|
11315
|
+
.crewlet-org-node-lead__pill:has(.crewlet-btn[aria-expanded='true']) {
|
|
11316
|
+
background-image: linear-gradient(var(--color-surface-hover), var(--color-surface-hover));
|
|
11317
|
+
}
|
|
11318
|
+
|
|
11095
11319
|
/* The name of the lead, not the chevron beside it, is what truncates. */
|
|
11096
11320
|
.crewlet-org-node-lead__pill .crewlet-btn > span {
|
|
11097
11321
|
overflow: hidden;
|
|
@@ -11110,25 +11334,42 @@ svg.crewlet-datetime__chevron {
|
|
|
11110
11334
|
*
|
|
11111
11335
|
* DRAWN SMALL, HIT FULL SIZE, the rule the whole node keeps: the strip is half
|
|
11112
11336
|
* a rank, so the target is grown past the pill's own edge into the node's
|
|
11113
|
-
* bottom padding, exactly as the lead's own control is.
|
|
11114
|
-
*
|
|
11115
|
-
*
|
|
11116
|
-
*
|
|
11337
|
+
* bottom padding, exactly as the lead's own control is.
|
|
11338
|
+
*
|
|
11339
|
+
* AND IT DOES NOT MOVE THE NAME. Taking its room from the row, it pushed the
|
|
11340
|
+
* name half its own width off the pill's middle, so "Lead: Ada" sat left of
|
|
11341
|
+
* centre on every unit that had one. It is drawn over the pill's right end
|
|
11342
|
+
* instead, out of the row, and the lead's control keeps the same room at both
|
|
11343
|
+
* of its ends while it is there: the name is centred on the whole pill and
|
|
11344
|
+
* truncates before it reaches the clear, and the control is still the whole
|
|
11345
|
+
* pill to press.
|
|
11117
11346
|
*/
|
|
11118
11347
|
.crewlet-org-node-lead__clear {
|
|
11119
|
-
position:
|
|
11348
|
+
position: absolute;
|
|
11349
|
+
top: 50%;
|
|
11350
|
+
right: 0;
|
|
11351
|
+
z-index: 1;
|
|
11120
11352
|
display: inline-flex;
|
|
11121
|
-
flex: none;
|
|
11122
11353
|
align-items: center;
|
|
11123
11354
|
justify-content: center;
|
|
11355
|
+
transform: translateY(-50%);
|
|
11356
|
+
}
|
|
11357
|
+
|
|
11358
|
+
.crewlet-org-node-lead__pill:has(> .crewlet-org-node-lead__clear) {
|
|
11359
|
+
position: relative;
|
|
11360
|
+
}
|
|
11361
|
+
|
|
11362
|
+
.crewlet-org-node-lead__pill:has(> .crewlet-org-node-lead__clear)
|
|
11363
|
+
.crewlet-btn:not(.crewlet-org-node-lead__clear *) {
|
|
11364
|
+
padding-inline: var(--spacing-4);
|
|
11124
11365
|
}
|
|
11125
11366
|
|
|
11126
11367
|
/*
|
|
11127
|
-
* THE
|
|
11128
|
-
*
|
|
11129
|
-
*
|
|
11130
|
-
* would disappear on half the deployments
|
|
11131
|
-
*
|
|
11368
|
+
* THE DISC IS ITS RING. Its ground is the raised step the pill itself is
|
|
11369
|
+
* drawn on, rather than that chart's own alpha (0.08 of white is the card's
|
|
11370
|
+
* own value on this package's light theme, so a disc drawn by its ground
|
|
11371
|
+
* would disappear on half the deployments), and so what draws it on the pill
|
|
11372
|
+
* is the hairline round it.
|
|
11132
11373
|
*/
|
|
11133
11374
|
.crewlet-org-node-lead__disc {
|
|
11134
11375
|
position: absolute;
|
|
@@ -11166,6 +11407,14 @@ svg.crewlet-datetime__chevron {
|
|
|
11166
11407
|
color: var(--color-text-primary);
|
|
11167
11408
|
}
|
|
11168
11409
|
|
|
11410
|
+
/* AND NOTHING ELSE FILLS EITHER: a ghost control's own hover and press grounds
|
|
11411
|
+
are painted on its whole 24px target, which drew a circle twice the disc's
|
|
11412
|
+
size round a 12px mark the moment it was pointed at. */
|
|
11413
|
+
.crewlet-org-node-lead__clear
|
|
11414
|
+
:is(.crewlet-btn, .crewlet-icon-btn):is(:hover, :active):not(:disabled):not([aria-disabled='true']) {
|
|
11415
|
+
background: none;
|
|
11416
|
+
}
|
|
11417
|
+
|
|
11169
11418
|
.crewlet-org-node-lead__clear:hover .crewlet-org-node-lead__disc {
|
|
11170
11419
|
border-color: var(--color-border-control);
|
|
11171
11420
|
}
|
|
@@ -11177,7 +11426,7 @@ svg.crewlet-datetime__chevron {
|
|
|
11177
11426
|
}
|
|
11178
11427
|
|
|
11179
11428
|
|
|
11180
|
-
/* OrgTable-
|
|
11429
|
+
/* OrgTable-JZSYTUIK.css */
|
|
11181
11430
|
/*
|
|
11182
11431
|
* An organization as an indented table of rows (OrgTable.tsx).
|
|
11183
11432
|
*
|
|
@@ -11204,8 +11453,11 @@ svg.crewlet-datetime__chevron {
|
|
|
11204
11453
|
*/
|
|
11205
11454
|
--crewlet-org-table-indent: var(--spacing-8);
|
|
11206
11455
|
/* The wire arriving at a row, and what it fades to at the row's own end.
|
|
11207
|
-
|
|
11208
|
-
|
|
11456
|
+
It leaves the trunk in the TRUNK'S own step, as the console table's does,
|
|
11457
|
+
so the two read as one line; started brighter than the trunk, every
|
|
11458
|
+
branch was a dash floating beside a trunk nobody could see. Rebound per
|
|
11459
|
+
hue below. */
|
|
11460
|
+
--crewlet-org-table-wire: var(--color-border-strong);
|
|
11209
11461
|
--crewlet-org-table-wire-fade: var(--color-border-default);
|
|
11210
11462
|
/* What a row's name and its mark are drawn in. Rebound per hue below. */
|
|
11211
11463
|
--crewlet-org-table-ink: var(--color-text-primary);
|
|
@@ -11314,8 +11566,15 @@ svg.crewlet-datetime__chevron {
|
|
|
11314
11566
|
* follows, so the trunk is one line down the whole table rather than one per
|
|
11315
11567
|
* level. The cell's padding is taken back and the wire element carries the
|
|
11316
11568
|
* level instead.
|
|
11569
|
+
*
|
|
11570
|
+
* AND THE CELL IS THE ROW'S FULL HEIGHT, because the wire in it is. The grid
|
|
11571
|
+
* centres its cells in a row taller than they are, and a trunk drawn down a
|
|
11572
|
+
* centred cell stopped short of both edges of every row, so the line its
|
|
11573
|
+
* segments were meant to stack into read as one dash per row. The cell still
|
|
11574
|
+
* centres what it holds.
|
|
11317
11575
|
*/
|
|
11318
11576
|
.crewlet-org-table [role='gridcell']:first-child {
|
|
11577
|
+
align-self: stretch;
|
|
11319
11578
|
padding-inline-start: var(--spacing-2);
|
|
11320
11579
|
}
|
|
11321
11580
|
|
|
@@ -11350,12 +11609,19 @@ svg.crewlet-datetime__chevron {
|
|
|
11350
11609
|
* segments stack into one line. Neutral, always: it belongs to the table
|
|
11351
11610
|
* rather than to any row, and a trunk that took each row's hue in turn would
|
|
11352
11611
|
* be a striped line saying nothing.
|
|
11612
|
+
*
|
|
11613
|
+
* IN THE STRONG STEP, where the console table draws its trunk a notch above
|
|
11614
|
+
* the row's ground. In the plain border step it all but vanished on the
|
|
11615
|
+
* table's own ground, and the branches beside it read as loose dashes.
|
|
11616
|
+
*
|
|
11617
|
+
* It starts one hairline above the cell, over the grid's rule between rows,
|
|
11618
|
+
* so the segments meet rather than being cut by that rule.
|
|
11353
11619
|
*/
|
|
11354
11620
|
.crewlet-org-table__wire[data-trunk]::before {
|
|
11355
|
-
inset-block: 0;
|
|
11621
|
+
inset-block: -1px 0;
|
|
11356
11622
|
inset-inline-start: 0;
|
|
11357
11623
|
width: 2px;
|
|
11358
|
-
background: var(--color-border-
|
|
11624
|
+
background: var(--color-border-strong);
|
|
11359
11625
|
}
|
|
11360
11626
|
|
|
11361
11627
|
/* A root row's trunk starts at the row's middle: nothing hangs above the
|
|
@@ -11364,6 +11630,13 @@ svg.crewlet-datetime__chevron {
|
|
|
11364
11630
|
inset-block-start: 50%;
|
|
11365
11631
|
}
|
|
11366
11632
|
|
|
11633
|
+
/* The last row a root shows ends the trunk at its own branch: no row below it
|
|
11634
|
+
hangs off the line, and a trunk run on to the next tree or the table's edge
|
|
11635
|
+
is a line to nowhere. */
|
|
11636
|
+
.crewlet-org-table__wire[data-last][data-trunk]::before {
|
|
11637
|
+
inset-block-end: 50%;
|
|
11638
|
+
}
|
|
11639
|
+
|
|
11367
11640
|
/*
|
|
11368
11641
|
* THE BRANCH: from the trunk across the gutter to the row's own mark, fading
|
|
11369
11642
|
* as it arrives. It reaches one cell gap past the wire's own width, which is
|
|
@@ -11631,7 +11904,7 @@ svg.crewlet-datetime__chevron {
|
|
|
11631
11904
|
}
|
|
11632
11905
|
|
|
11633
11906
|
|
|
11634
|
-
/* Popover-
|
|
11907
|
+
/* Popover-QCINR7WG.css */
|
|
11635
11908
|
/*
|
|
11636
11909
|
* The anchored panel.
|
|
11637
11910
|
*
|
|
@@ -11674,10 +11947,13 @@ svg.crewlet-datetime__chevron {
|
|
|
11674
11947
|
transform-origin: bottom left;
|
|
11675
11948
|
}
|
|
11676
11949
|
|
|
11677
|
-
/* A panel that takes focus shows it on the panel, not only on what is inside
|
|
11950
|
+
/* A panel that takes focus shows it on the panel, not only on what is inside,
|
|
11951
|
+
and shows it ONCE: over the panel's own boundary rather than 2px off it,
|
|
11952
|
+
which is two edges with a gap between them (the rule every field keeps, see
|
|
11953
|
+
Input.css). */
|
|
11678
11954
|
.crewlet-popover:focus-visible {
|
|
11679
11955
|
outline: 2px solid var(--color-focus);
|
|
11680
|
-
outline-offset:
|
|
11956
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
11681
11957
|
}
|
|
11682
11958
|
|
|
11683
11959
|
/* Up from under its anchor, which is where it is about to be. */
|
|
@@ -11819,7 +12095,7 @@ svg.crewlet-datetime__chevron {
|
|
|
11819
12095
|
}
|
|
11820
12096
|
|
|
11821
12097
|
|
|
11822
|
-
/* PricingCard-
|
|
12098
|
+
/* PricingCard-HTAHG4ST.css */
|
|
11823
12099
|
/*
|
|
11824
12100
|
* PricingCard, the plan-tier card surface.
|
|
11825
12101
|
*
|
|
@@ -11886,9 +12162,13 @@ svg.crewlet-datetime__chevron {
|
|
|
11886
12162
|
border-color: var(--color-brand-accent-soft-strong);
|
|
11887
12163
|
}
|
|
11888
12164
|
|
|
12165
|
+
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
12166
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
12167
|
+
The chosen plan keeps an accent line inside the ring, since the selection
|
|
12168
|
+
ring below is two pixels deep and the focus ring covers one of them. */
|
|
11889
12169
|
.crewlet-pricing-card:focus-visible {
|
|
11890
12170
|
outline: 2px solid var(--color-focus);
|
|
11891
|
-
outline-offset:
|
|
12171
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
11892
12172
|
}
|
|
11893
12173
|
|
|
11894
12174
|
/* The chosen plan takes the selection ring, which is the same inset rule
|
|
@@ -12214,7 +12494,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12214
12494
|
}
|
|
12215
12495
|
|
|
12216
12496
|
|
|
12217
|
-
/* SearchTrigger-
|
|
12497
|
+
/* SearchTrigger-KIZLWBEH.css */
|
|
12218
12498
|
/*
|
|
12219
12499
|
* A button drawn as the field it stands in for.
|
|
12220
12500
|
*
|
|
@@ -12275,9 +12555,12 @@ svg.crewlet-datetime__chevron {
|
|
|
12275
12555
|
color: var(--color-text-primary);
|
|
12276
12556
|
}
|
|
12277
12557
|
|
|
12558
|
+
/* One ring, over the trigger's own boundary rather than 2px off it, which is
|
|
12559
|
+
two edges with a gap between them: the rule every field keeps (see
|
|
12560
|
+
Input.css). */
|
|
12278
12561
|
.crewlet-search-trigger:focus-visible {
|
|
12279
12562
|
outline: 2px solid var(--color-focus);
|
|
12280
|
-
outline-offset:
|
|
12563
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
12281
12564
|
}
|
|
12282
12565
|
|
|
12283
12566
|
.crewlet-search-trigger__icon {
|
|
@@ -12459,7 +12742,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12459
12742
|
}
|
|
12460
12743
|
|
|
12461
12744
|
|
|
12462
|
-
/* SegmentedControl-
|
|
12745
|
+
/* SegmentedControl-76HODRBT.css */
|
|
12463
12746
|
/*
|
|
12464
12747
|
* SegmentedControl: the pill row, drawn with the Tabs classes.
|
|
12465
12748
|
*
|
|
@@ -12509,6 +12792,13 @@ svg.crewlet-datetime__chevron {
|
|
|
12509
12792
|
font-size: var(--font-size-compact);
|
|
12510
12793
|
}
|
|
12511
12794
|
|
|
12795
|
+
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
12796
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
12797
|
+
The chosen card still says so under the ring, in its tint and its ink. */
|
|
12798
|
+
.crewlet-segmented--cards .crewlet-segmented__option:focus-visible {
|
|
12799
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
12800
|
+
}
|
|
12801
|
+
|
|
12512
12802
|
/* The one card that is chosen takes the accent, which is what "here, this
|
|
12513
12803
|
one" means everywhere else in the product. */
|
|
12514
12804
|
.crewlet-segmented--cards .crewlet-segmented__option.is-active {
|
|
@@ -12517,6 +12807,91 @@ svg.crewlet-datetime__chevron {
|
|
|
12517
12807
|
color: var(--color-brand-accent-ink);
|
|
12518
12808
|
}
|
|
12519
12809
|
|
|
12810
|
+
/*
|
|
12811
|
+
* A ROW OF SEPARATE CHIPS, for a setting with more choices than a well holds
|
|
12812
|
+
* on one line: the console's own row of unit types. It wraps rather than
|
|
12813
|
+
* running off the panel it sits in, and each chip stands on the raised ground
|
|
12814
|
+
* a chip with no edge of its own takes (held off the card by the palette
|
|
12815
|
+
* suite), so no chip draws a frame inside the panel's. Two classes, for the
|
|
12816
|
+
* reason the card row gives above.
|
|
12817
|
+
*/
|
|
12818
|
+
.crewlet-tabs.crewlet-segmented--chips {
|
|
12819
|
+
/* The chip's own drawing (below) is the --crewlet-segmented-chip-height
|
|
12820
|
+
band inside a target-floor box, so it is the same height at every
|
|
12821
|
+
density the console's 11px chip is drawn at. */
|
|
12822
|
+
--crewlet-segmented-chip-height: calc(var(--size-target-min) - var(--spacing-1));
|
|
12823
|
+
display: flex;
|
|
12824
|
+
flex-wrap: wrap;
|
|
12825
|
+
align-items: center;
|
|
12826
|
+
/* No gap between ROWS: each chip's target already overhangs its drawing by
|
|
12827
|
+
half a step above and below, so two rows' drawings stand a whole step
|
|
12828
|
+
apart while their targets meet. */
|
|
12829
|
+
gap: 0 var(--spacing-1);
|
|
12830
|
+
}
|
|
12831
|
+
|
|
12832
|
+
/*
|
|
12833
|
+
* SMALL, AS THE CONSOLE'S ARE, AND DRAWN SMALL BUT HIT FULL SIZE, the rule the
|
|
12834
|
+
* org chart's own controls keep. A chip is a word in the 11px face with a step
|
|
12835
|
+
* of room either side, drawn as a band shorter than the pointer-target floor;
|
|
12836
|
+
* the button around it stays at the floor, so the band can be the console's
|
|
12837
|
+
* size without being a target a finger misses. At the small control step a
|
|
12838
|
+
* row of ten was a second row of buttons under the field's label rather than a
|
|
12839
|
+
* row of answers to it.
|
|
12840
|
+
*
|
|
12841
|
+
* The band is the button's own ::before, behind the label, rather than its
|
|
12842
|
+
* background clipped to the content box: a clip takes the corner's curve in by
|
|
12843
|
+
* the padding it removes, and a chip this small would lose its radius.
|
|
12844
|
+
*/
|
|
12845
|
+
.crewlet-segmented--chips .crewlet-segmented__option {
|
|
12846
|
+
position: relative;
|
|
12847
|
+
isolation: isolate;
|
|
12848
|
+
min-height: var(--size-target-min);
|
|
12849
|
+
padding: 0 var(--spacing-2);
|
|
12850
|
+
border-radius: var(--radius-sm);
|
|
12851
|
+
background: none;
|
|
12852
|
+
color: var(--color-text-secondary);
|
|
12853
|
+
font-size: var(--font-size-2xs);
|
|
12854
|
+
}
|
|
12855
|
+
|
|
12856
|
+
.crewlet-segmented--chips .crewlet-segmented__option::before {
|
|
12857
|
+
content: '';
|
|
12858
|
+
position: absolute;
|
|
12859
|
+
inset: calc((var(--size-target-min) - var(--crewlet-segmented-chip-height)) / 2) 0;
|
|
12860
|
+
z-index: -1;
|
|
12861
|
+
border-radius: var(--radius-sm);
|
|
12862
|
+
background: var(--color-surface-elevated);
|
|
12863
|
+
pointer-events: none;
|
|
12864
|
+
}
|
|
12865
|
+
|
|
12866
|
+
/* The chosen chip is FILLED with the accent: on a row of up to ten raised
|
|
12867
|
+
chips, a fill is the one thing that says "this one" at a glance, as the
|
|
12868
|
+
console's row says it. Its ring stands off it, because an edge drawn on an
|
|
12869
|
+
accent fill in the focus colour is nearly the fill's own colour. */
|
|
12870
|
+
.crewlet-segmented--chips .crewlet-segmented__option.is-active {
|
|
12871
|
+
color: var(--color-text-on-accent);
|
|
12872
|
+
}
|
|
12873
|
+
|
|
12874
|
+
.crewlet-segmented--chips .crewlet-segmented__option.is-active::before {
|
|
12875
|
+
background: var(--color-brand-accent);
|
|
12876
|
+
}
|
|
12877
|
+
|
|
12878
|
+
/* What completes the last choice sits in the row, at the chips' own height
|
|
12879
|
+
and in their face: a field at its own control step stood taller than every
|
|
12880
|
+
chip beside it. */
|
|
12881
|
+
.crewlet-segmented__trailing {
|
|
12882
|
+
display: inline-flex;
|
|
12883
|
+
align-items: center;
|
|
12884
|
+
min-width: 0;
|
|
12885
|
+
}
|
|
12886
|
+
|
|
12887
|
+
.crewlet-segmented--chips .crewlet-segmented__trailing .crewlet-input {
|
|
12888
|
+
min-height: var(--crewlet-segmented-chip-height);
|
|
12889
|
+
}
|
|
12890
|
+
|
|
12891
|
+
.crewlet-segmented--chips .crewlet-segmented__trailing .crewlet-input__control {
|
|
12892
|
+
font-size: var(--font-size-2xs);
|
|
12893
|
+
}
|
|
12894
|
+
|
|
12520
12895
|
.crewlet-segmented__description {
|
|
12521
12896
|
font-size: var(--font-size-xs);
|
|
12522
12897
|
font-weight: var(--font-weight-regular);
|
|
@@ -12642,7 +13017,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12642
13017
|
}
|
|
12643
13018
|
|
|
12644
13019
|
|
|
12645
|
-
/* Select-
|
|
13020
|
+
/* Select-4ANVLHUY.css */
|
|
12646
13021
|
/*
|
|
12647
13022
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
12648
13023
|
*
|
|
@@ -12713,8 +13088,8 @@ svg.crewlet-datetime__chevron {
|
|
|
12713
13088
|
* leave the other bare.
|
|
12714
13089
|
*/
|
|
12715
13090
|
.crewlet-select:focus-within {
|
|
12716
|
-
outline:
|
|
12717
|
-
outline-offset:
|
|
13091
|
+
outline: 1px solid var(--color-focus);
|
|
13092
|
+
outline-offset: -1px;
|
|
12718
13093
|
}
|
|
12719
13094
|
|
|
12720
13095
|
/*
|
|
@@ -12992,8 +13367,8 @@ svg.crewlet-select__chevron {
|
|
|
12992
13367
|
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
12993
13368
|
*/
|
|
12994
13369
|
.crewlet-select__search:focus-within {
|
|
12995
|
-
outline:
|
|
12996
|
-
outline-offset:
|
|
13370
|
+
outline: 1px solid var(--color-focus);
|
|
13371
|
+
outline-offset: -1px;
|
|
12997
13372
|
}
|
|
12998
13373
|
|
|
12999
13374
|
.crewlet-select__search {
|
|
@@ -14537,7 +14912,7 @@ svg.crewlet-select__chevron {
|
|
|
14537
14912
|
}
|
|
14538
14913
|
|
|
14539
14914
|
|
|
14540
|
-
/* Switch-
|
|
14915
|
+
/* Switch-66RAQCRE.css */
|
|
14541
14916
|
/*
|
|
14542
14917
|
* Switch: a setting that takes effect as it moves.
|
|
14543
14918
|
*
|
|
@@ -14651,14 +15026,17 @@ svg.crewlet-select__chevron {
|
|
|
14651
15026
|
* control's own :focus-visible. The track is the same box: the control is
|
|
14652
15027
|
* `inset: 0` over it.
|
|
14653
15028
|
*
|
|
14654
|
-
*
|
|
14655
|
-
* room to draw a ring inside itself
|
|
14656
|
-
*
|
|
14657
|
-
*
|
|
15029
|
+
* OUTSIDE THE TRACK, like a Checkbox's and unlike a text field's: a 20px pill
|
|
15030
|
+
* has no room to draw a ring inside itself. But AGAINST it, not 2px off it.
|
|
15031
|
+
* Off, the track draws a real boundary of its own, and a ring standing off
|
|
15032
|
+
* that boundary was two edges with a gap between them, which reads as a
|
|
15033
|
+
* second outline rather than as focus. Flush, the ring and the track are one
|
|
15034
|
+
* edge in both states, and the ring is still drawn whole on the ground around
|
|
15035
|
+
* the pill, where it is measured.
|
|
14658
15036
|
*/
|
|
14659
15037
|
.crewlet-switch__track:has(.crewlet-switch__control:focus-visible) {
|
|
14660
15038
|
outline: 2px solid var(--color-focus);
|
|
14661
|
-
outline-offset:
|
|
15039
|
+
outline-offset: 0;
|
|
14662
15040
|
}
|
|
14663
15041
|
|
|
14664
15042
|
.crewlet-switch__text {
|
|
@@ -14881,7 +15259,7 @@ svg.crewlet-select__chevron {
|
|
|
14881
15259
|
}
|
|
14882
15260
|
|
|
14883
15261
|
|
|
14884
|
-
/* Tabs-
|
|
15262
|
+
/* Tabs-BWFQSWY3.css */
|
|
14885
15263
|
/*
|
|
14886
15264
|
* The pill register: Tabs and SegmentedControl.
|
|
14887
15265
|
*
|
|
@@ -15172,6 +15550,18 @@ svg.crewlet-select__chevron {
|
|
|
15172
15550
|
outline-offset: 2px;
|
|
15173
15551
|
}
|
|
15174
15552
|
|
|
15553
|
+
/*
|
|
15554
|
+
* A CHIP RINGS ON ITS OWN EDGE, flush rather than 2px off it. The chip that
|
|
15555
|
+
* is on draws a hairline round itself, and a ring standing off that hairline
|
|
15556
|
+
* was two edges with a gap between them, which reads as a second outline
|
|
15557
|
+
* rather than as focus. Flush, the ring covers the hairline, and it stays
|
|
15558
|
+
* inside the well's 2px inset: two pixels wide, it meets the well's own
|
|
15559
|
+
* boundary rather than leaving a sliver of the well between the two.
|
|
15560
|
+
*/
|
|
15561
|
+
.crewlet-tabs--pill .crewlet-tabs__tab:focus-visible {
|
|
15562
|
+
outline-offset: 0;
|
|
15563
|
+
}
|
|
15564
|
+
|
|
15175
15565
|
.crewlet-tabs__tab.is-disabled,
|
|
15176
15566
|
.crewlet-tabs__tab:disabled {
|
|
15177
15567
|
opacity: 0.55;
|
|
@@ -15211,7 +15601,7 @@ svg.crewlet-select__chevron {
|
|
|
15211
15601
|
}
|
|
15212
15602
|
|
|
15213
15603
|
|
|
15214
|
-
/* Tag-
|
|
15604
|
+
/* Tag-4BRQS6GN.css */
|
|
15215
15605
|
/*
|
|
15216
15606
|
* The tag: a small pill naming a state, a category or a value.
|
|
15217
15607
|
*
|
|
@@ -15478,11 +15868,38 @@ svg.crewlet-select__chevron {
|
|
|
15478
15868
|
box-shadow: inset 0 0 0 1px var(--crewlet-tag-ink);
|
|
15479
15869
|
}
|
|
15480
15870
|
|
|
15871
|
+
/*
|
|
15872
|
+
* ONE RING, ON THE PILL'S OWN EDGE, never off it. A pill draws a border
|
|
15873
|
+
* whenever it is neutral, pointed at or pressed, and a ring standing off that
|
|
15874
|
+
* border is two edges with a gap between them, which reads as a second
|
|
15875
|
+
* outline rather than as focus. So every control here rings over the pill's
|
|
15876
|
+
* border, and the offset that puts it there is each control's own, because
|
|
15877
|
+
* the three boxes meet that border in different places:
|
|
15878
|
+
*
|
|
15879
|
+
* - a whole actionable tag IS the pill, so -1px covers the border and one
|
|
15880
|
+
* pixel outside it;
|
|
15881
|
+
* - the press half of a split pill stops at the border's inside edge, so 0
|
|
15882
|
+
* puts its ring on the same two pixels;
|
|
15883
|
+
* - the remove reaches over the border at the top and the bottom (see its
|
|
15884
|
+
* rule below), so -1px puts its ring there as well.
|
|
15885
|
+
*
|
|
15886
|
+
* ONE PIXEL INTO THE PILL AT MOST, not a field's two, because a pressed tag
|
|
15887
|
+
* says so in an ink line just inside its border: a ring two pixels deep would
|
|
15888
|
+
* cover the one change that pressing it makes.
|
|
15889
|
+
*/
|
|
15481
15890
|
.crewlet-tag--actionable:focus-visible,
|
|
15482
15891
|
.crewlet-tag__press:focus-visible,
|
|
15483
15892
|
.crewlet-tag__remove:focus-visible {
|
|
15484
15893
|
outline: 2px solid var(--color-focus);
|
|
15485
|
-
|
|
15894
|
+
}
|
|
15895
|
+
|
|
15896
|
+
.crewlet-tag--actionable:focus-visible,
|
|
15897
|
+
.crewlet-tag__remove:focus-visible {
|
|
15898
|
+
outline-offset: -1px;
|
|
15899
|
+
}
|
|
15900
|
+
|
|
15901
|
+
.crewlet-tag__press:focus-visible {
|
|
15902
|
+
outline-offset: 0;
|
|
15486
15903
|
}
|
|
15487
15904
|
|
|
15488
15905
|
/* ── the pill that holds two controls ──────────────────────────────────── */
|
|
@@ -15618,7 +16035,7 @@ svg.crewlet-select__chevron {
|
|
|
15618
16035
|
}
|
|
15619
16036
|
|
|
15620
16037
|
|
|
15621
|
-
/* TagGroup-
|
|
16038
|
+
/* TagGroup-BCQZD7ZD.css */
|
|
15622
16039
|
/*
|
|
15623
16040
|
* A labelled list of tags with the tail behind a count.
|
|
15624
16041
|
*
|
|
@@ -15684,9 +16101,12 @@ svg.crewlet-select__chevron {
|
|
|
15684
16101
|
color: var(--color-text-primary);
|
|
15685
16102
|
}
|
|
15686
16103
|
|
|
16104
|
+
/* One ring, over the dashed boundary rather than 2px off it, which is two
|
|
16105
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
16106
|
+
The list above has no edge of its own, so its ring stays outset. */
|
|
15687
16107
|
.crewlet-tag-group__more:focus-visible {
|
|
15688
16108
|
outline: 2px solid var(--color-focus);
|
|
15689
|
-
outline-offset:
|
|
16109
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
15690
16110
|
}
|
|
15691
16111
|
|
|
15692
16112
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -15696,7 +16116,7 @@ svg.crewlet-select__chevron {
|
|
|
15696
16116
|
}
|
|
15697
16117
|
|
|
15698
16118
|
|
|
15699
|
-
/* TagsInput-
|
|
16119
|
+
/* TagsInput-P2HS5QL4.css */
|
|
15700
16120
|
/*
|
|
15701
16121
|
* TagsInput: several values in one field.
|
|
15702
16122
|
*
|
|
@@ -15771,8 +16191,8 @@ svg.crewlet-select__chevron {
|
|
|
15771
16191
|
* the whole reason they sit above the field instead of inside it.
|
|
15772
16192
|
*/
|
|
15773
16193
|
.crewlet-tags-input__box:focus-visible {
|
|
15774
|
-
outline:
|
|
15775
|
-
outline-offset:
|
|
16194
|
+
outline: 1px solid var(--color-focus);
|
|
16195
|
+
outline-offset: -1px;
|
|
15776
16196
|
}
|
|
15777
16197
|
|
|
15778
16198
|
.crewlet-tags-input.is-disabled {
|
|
@@ -16024,7 +16444,7 @@ svg.crewlet-select__chevron {
|
|
|
16024
16444
|
}
|
|
16025
16445
|
|
|
16026
16446
|
|
|
16027
|
-
/* TimeWindowPicker-
|
|
16447
|
+
/* TimeWindowPicker-GBF4JDFI.css */
|
|
16028
16448
|
/*
|
|
16029
16449
|
* TimeWindowPicker: one trigger over one panel.
|
|
16030
16450
|
*
|
|
@@ -16064,11 +16484,17 @@ svg.crewlet-select__chevron {
|
|
|
16064
16484
|
border-color: var(--color-border-hover);
|
|
16065
16485
|
}
|
|
16066
16486
|
|
|
16487
|
+
/*
|
|
16488
|
+
* ONE RING, OVER THE BOUNDARY, for focus and for open alike. It stood 2px off
|
|
16489
|
+
* the box with the border recoloured to the focus colour as well, which is an
|
|
16490
|
+
* accent hairline, a gap and an accent band: two rings from one state. On the
|
|
16491
|
+
* inset offset the ring covers the border, and the border keeps its own colour
|
|
16492
|
+
* under it, the rule every field keeps (see Input.css).
|
|
16493
|
+
*/
|
|
16067
16494
|
.crewlet-time-window:focus-visible,
|
|
16068
16495
|
.crewlet-time-window.is-open {
|
|
16069
|
-
outline:
|
|
16070
|
-
outline-offset:
|
|
16071
|
-
border-color: var(--color-focus);
|
|
16496
|
+
outline: 1px solid var(--color-focus);
|
|
16497
|
+
outline-offset: -1px;
|
|
16072
16498
|
}
|
|
16073
16499
|
|
|
16074
16500
|
.crewlet-time-window.is-disabled,
|
|
@@ -16328,11 +16754,18 @@ svg.crewlet-time-window__tick {
|
|
|
16328
16754
|
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
16329
16755
|
}
|
|
16330
16756
|
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
|
|
16335
|
-
|
|
16757
|
+
/*
|
|
16758
|
+
* THE BOX RINGS ONCE, AS A FIELD DOES. It drew the field register's old
|
|
16759
|
+
* indicator: the border recoloured to the focus colour AND --shadow-focus,
|
|
16760
|
+
* which is itself a ring (a background-coloured gap, then a band), so a
|
|
16761
|
+
* focused box showed two accent edges with a gap between them, and the
|
|
16762
|
+
* transparent outline under them was a third that forced-colors mode paints.
|
|
16763
|
+
* What is left is the field's one outline on the inset offset, over the box's
|
|
16764
|
+
* own boundary (see Input.css), keyed on the box's own input.
|
|
16765
|
+
*/
|
|
16766
|
+
.crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
|
|
16767
|
+
outline: 1px solid var(--color-focus);
|
|
16768
|
+
outline-offset: -1px;
|
|
16336
16769
|
}
|
|
16337
16770
|
|
|
16338
16771
|
.crewlet-time-window__masked-input {
|
|
@@ -17013,7 +17446,7 @@ svg.crewlet-time-window__tick {
|
|
|
17013
17446
|
}
|
|
17014
17447
|
|
|
17015
17448
|
|
|
17016
|
-
/* TreeCanvas-
|
|
17449
|
+
/* TreeCanvas-L2XYONWL.css */
|
|
17017
17450
|
/*
|
|
17018
17451
|
* A hierarchy drawn as cards on a canvas (TreeCanvas.tsx).
|
|
17019
17452
|
*
|
|
@@ -17119,32 +17552,21 @@ svg.crewlet-time-window__tick {
|
|
|
17119
17552
|
}
|
|
17120
17553
|
|
|
17121
17554
|
/*
|
|
17122
|
-
*
|
|
17123
|
-
* of the hue's
|
|
17124
|
-
*
|
|
17125
|
-
*
|
|
17126
|
-
*
|
|
17127
|
-
*
|
|
17128
|
-
|
|
17129
|
-
|
|
17130
|
-
|
|
17131
|
-
|
|
17132
|
-
|
|
17133
|
-
border: 1px solid var(--crewlet-tree-canvas-card-halo);
|
|
17134
|
-
border-radius: var(--radius-lg);
|
|
17135
|
-
pointer-events: none;
|
|
17136
|
-
}
|
|
17137
|
-
|
|
17138
|
-
/*
|
|
17139
|
-
* The six hues, each as the four steps a toned card draws: the fill it sits
|
|
17140
|
-
* on, the boundary around it, the halo outside that, and the ink its name is
|
|
17141
|
-
* written in. The ink is published as a variable rather than applied here
|
|
17142
|
-
* because WHICH text is the name is the caller's to say.
|
|
17555
|
+
* ONE BOUNDARY, AND NO HALO. A toned card used to carry a second hairline ring
|
|
17556
|
+
* 3px outside its boundary, at the lightest of the hue's alphas, so a toned
|
|
17557
|
+
* card was framed twice: two parallel lines round one node read as a double
|
|
17558
|
+
* border, which is the one thing no box in this package draws. The fill and
|
|
17559
|
+
* the boundary in the hue already say the card is toned from across a chart.
|
|
17560
|
+
*
|
|
17561
|
+
* The six hues, each as the steps a toned card draws: the fill it sits on, the
|
|
17562
|
+
* boundary around it, the ink its name is written in and the accent its mark
|
|
17563
|
+
* takes. The ink and the accent are published as variables rather than applied
|
|
17564
|
+
* here because WHICH text is the name and which drawing the mark is are the
|
|
17565
|
+
* caller's to say.
|
|
17143
17566
|
*/
|
|
17144
17567
|
.crewlet-tree-canvas__card[data-tone='purple'] {
|
|
17145
17568
|
--crewlet-tree-canvas-card-fill: var(--color-node-purple-fill);
|
|
17146
17569
|
--crewlet-tree-canvas-card-line: var(--color-node-purple-line);
|
|
17147
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-purple-halo);
|
|
17148
17570
|
--crewlet-tree-canvas-card-ink: var(--color-node-purple-ink);
|
|
17149
17571
|
--crewlet-tree-canvas-card-accent: var(--color-node-purple);
|
|
17150
17572
|
}
|
|
@@ -17152,7 +17574,6 @@ svg.crewlet-time-window__tick {
|
|
|
17152
17574
|
.crewlet-tree-canvas__card[data-tone='cyan'] {
|
|
17153
17575
|
--crewlet-tree-canvas-card-fill: var(--color-node-cyan-fill);
|
|
17154
17576
|
--crewlet-tree-canvas-card-line: var(--color-node-cyan-line);
|
|
17155
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-cyan-halo);
|
|
17156
17577
|
--crewlet-tree-canvas-card-ink: var(--color-node-cyan-ink);
|
|
17157
17578
|
--crewlet-tree-canvas-card-accent: var(--color-node-cyan);
|
|
17158
17579
|
}
|
|
@@ -17160,7 +17581,6 @@ svg.crewlet-time-window__tick {
|
|
|
17160
17581
|
.crewlet-tree-canvas__card[data-tone='green'] {
|
|
17161
17582
|
--crewlet-tree-canvas-card-fill: var(--color-node-green-fill);
|
|
17162
17583
|
--crewlet-tree-canvas-card-line: var(--color-node-green-line);
|
|
17163
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-green-halo);
|
|
17164
17584
|
--crewlet-tree-canvas-card-ink: var(--color-node-green-ink);
|
|
17165
17585
|
--crewlet-tree-canvas-card-accent: var(--color-node-green);
|
|
17166
17586
|
}
|
|
@@ -17168,7 +17588,6 @@ svg.crewlet-time-window__tick {
|
|
|
17168
17588
|
.crewlet-tree-canvas__card[data-tone='amber'] {
|
|
17169
17589
|
--crewlet-tree-canvas-card-fill: var(--color-node-amber-fill);
|
|
17170
17590
|
--crewlet-tree-canvas-card-line: var(--color-node-amber-line);
|
|
17171
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-amber-halo);
|
|
17172
17591
|
--crewlet-tree-canvas-card-ink: var(--color-node-amber-ink);
|
|
17173
17592
|
--crewlet-tree-canvas-card-accent: var(--color-node-amber);
|
|
17174
17593
|
}
|
|
@@ -17176,7 +17595,6 @@ svg.crewlet-time-window__tick {
|
|
|
17176
17595
|
.crewlet-tree-canvas__card[data-tone='rose'] {
|
|
17177
17596
|
--crewlet-tree-canvas-card-fill: var(--color-node-rose-fill);
|
|
17178
17597
|
--crewlet-tree-canvas-card-line: var(--color-node-rose-line);
|
|
17179
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-rose-halo);
|
|
17180
17598
|
--crewlet-tree-canvas-card-ink: var(--color-node-rose-ink);
|
|
17181
17599
|
--crewlet-tree-canvas-card-accent: var(--color-node-rose);
|
|
17182
17600
|
}
|
|
@@ -17184,7 +17602,6 @@ svg.crewlet-time-window__tick {
|
|
|
17184
17602
|
.crewlet-tree-canvas__card[data-tone='blue'] {
|
|
17185
17603
|
--crewlet-tree-canvas-card-fill: var(--color-node-blue-fill);
|
|
17186
17604
|
--crewlet-tree-canvas-card-line: var(--color-node-blue-line);
|
|
17187
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-blue-halo);
|
|
17188
17605
|
--crewlet-tree-canvas-card-ink: var(--color-node-blue-ink);
|
|
17189
17606
|
--crewlet-tree-canvas-card-accent: var(--color-node-blue);
|
|
17190
17607
|
}
|
|
@@ -17220,18 +17637,43 @@ svg.crewlet-time-window__tick {
|
|
|
17220
17637
|
* canvas clips, so an outset ring is cut away on the cards nearest the frame.
|
|
17221
17638
|
* This component hands out the tab stop, so the indicator is its to draw; left
|
|
17222
17639
|
* to the caller it was drawn on some charts and on others not at all.
|
|
17223
|
-
|
|
17224
|
-
.
|
|
17640
|
+
*
|
|
17641
|
+
* A CARD'S OWN NODE RINGS THE WHOLE CARD. Where the treeitem is the card's
|
|
17642
|
+
* direct child, the card's edge IS the node's edge, and a ring drawn on the
|
|
17643
|
+
* treeitem did two things wrong: it stopped short of anything the card holds
|
|
17644
|
+
* under the node (a unit's lead), and it stood beside the card's boundary as a
|
|
17645
|
+
* second line. So the ring is drawn on the card, over its boundary, and the
|
|
17646
|
+
* treeitem draws none in any state, the way a field's control leaves its ring
|
|
17647
|
+
* to the field. A row deeper inside a card (`*` between the two, because a row
|
|
17648
|
+
* is always inside something the caller drew) has no boundary of its own, and
|
|
17649
|
+
* keeps its ring.
|
|
17650
|
+
*/
|
|
17651
|
+
.crewlet-tree-canvas__card * [role='treeitem']:focus-visible,
|
|
17652
|
+
.crewlet-tree-canvas__card:has(> [role='treeitem']:focus-visible) {
|
|
17225
17653
|
outline: 2px solid var(--color-focus);
|
|
17226
17654
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
17227
17655
|
}
|
|
17228
17656
|
|
|
17657
|
+
.crewlet-tree-canvas__card > [role='treeitem'] {
|
|
17658
|
+
outline: none;
|
|
17659
|
+
}
|
|
17660
|
+
|
|
17229
17661
|
/* The selection is where the reader is, so it takes the accent. Inset, for the
|
|
17230
17662
|
same reason the ring is. */
|
|
17231
17663
|
.crewlet-tree-canvas__card [role='treeitem'][aria-selected='true'] {
|
|
17232
17664
|
box-shadow: inset 0 0 0 1px var(--color-brand-accent);
|
|
17233
17665
|
}
|
|
17234
17666
|
|
|
17667
|
+
/* On a card's own node the selection IS the card's boundary, in the accent: an
|
|
17668
|
+
inset ring beside the boundary drew two lines where one says it. */
|
|
17669
|
+
.crewlet-tree-canvas__card:has(> [role='treeitem'][aria-selected='true']) {
|
|
17670
|
+
border-color: var(--color-brand-accent);
|
|
17671
|
+
}
|
|
17672
|
+
|
|
17673
|
+
.crewlet-tree-canvas__card > [role='treeitem'][aria-selected='true'] {
|
|
17674
|
+
box-shadow: none;
|
|
17675
|
+
}
|
|
17676
|
+
|
|
17235
17677
|
/*
|
|
17236
17678
|
* THE POINTER'S CONTROLS, drawn over the end of the card and quiet until it is
|
|
17237
17679
|
* reached.
|
|
@@ -17376,8 +17818,8 @@ svg.crewlet-time-window__tick {
|
|
|
17376
17818
|
* The space around the whole chart, as a token, for the reason the gaps are
|
|
17377
17819
|
* one. None by default: a chart of panels is read inside its own frame, and
|
|
17378
17820
|
* the space around it is the page's. The `node` appearance takes the console
|
|
17379
|
-
* chart's own margin below, which is what keeps the
|
|
17380
|
-
*
|
|
17821
|
+
* chart's own margin below, which is what keeps the control hanging under the
|
|
17822
|
+
* outermost node off the canvas's clip.
|
|
17381
17823
|
*/
|
|
17382
17824
|
.crewlet-tree-canvas__margin {
|
|
17383
17825
|
width: var(--spacing-0);
|
|
@@ -17651,8 +18093,8 @@ svg.crewlet-time-window__tick {
|
|
|
17651
18093
|
* drawn distance is the same number either way, and the room simply moved
|
|
17652
18094
|
* from the card's box into the gap with the control that needs it.
|
|
17653
18095
|
* - AROUND: `--spacing-8`, 40px against 36, and deliberately the step above
|
|
17654
|
-
* rather than below: the canvas CLIPS, and
|
|
17655
|
-
*
|
|
18096
|
+
* rather than below: the canvas CLIPS, and what hangs under the outermost
|
|
18097
|
+
* node has to clear the frame.
|
|
17656
18098
|
*/
|
|
17657
18099
|
.crewlet-tree-canvas--node .crewlet-tree-canvas__gap {
|
|
17658
18100
|
width: var(--spacing-9);
|
|
@@ -17996,6 +18438,27 @@ svg.crewlet-time-window__tick {
|
|
|
17996
18438
|
border-radius: 0;
|
|
17997
18439
|
}
|
|
17998
18440
|
|
|
18441
|
+
/*
|
|
18442
|
+
* AND THEY ANSWER THE POINTER WITH THEIR INK, NOT A GROUND, as the console
|
|
18443
|
+
* chart's do: the edit mark turns to the accent and the trash to the critical
|
|
18444
|
+
* hue, and nothing is painted under either. A cell is a whole share of the
|
|
18445
|
+
* node's corner, so a ground painted over it was a square standing past the
|
|
18446
|
+
* card's rounded corner, the one place on a node with no room for a square.
|
|
18447
|
+
*/
|
|
18448
|
+
.crewlet-tree-canvas--node
|
|
18449
|
+
.crewlet-tree-canvas__actions
|
|
18450
|
+
.crewlet-icon-btn:hover:not(:disabled):not([aria-disabled='true']) {
|
|
18451
|
+
background: none;
|
|
18452
|
+
border-color: transparent;
|
|
18453
|
+
color: var(--color-brand-accent-ink);
|
|
18454
|
+
}
|
|
18455
|
+
|
|
18456
|
+
.crewlet-tree-canvas--node
|
|
18457
|
+
.crewlet-tree-canvas__actions
|
|
18458
|
+
.crewlet-icon-btn--ghost-danger:hover:not(:disabled):not([aria-disabled='true']) {
|
|
18459
|
+
color: var(--color-feedback-danger-ink);
|
|
18460
|
+
}
|
|
18461
|
+
|
|
17999
18462
|
/*
|
|
18000
18463
|
* A CONTROL ON AN EDGE IS A DISC: a ground of its own, so the line it sits on,
|
|
18001
18464
|
* or the card it straddles, stops at its edge rather than running through it.
|
|
@@ -18097,38 +18560,29 @@ svg.crewlet-time-window__tick {
|
|
|
18097
18560
|
background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
|
|
18098
18561
|
border: 1px dashed var(--color-brand-accent-soft-strong);
|
|
18099
18562
|
box-shadow: var(--shadow-md);
|
|
18100
|
-
|
|
18101
|
-
|
|
18102
|
-
|
|
18103
|
-
|
|
18104
|
-
|
|
18105
|
-
|
|
18106
|
-
|
|
18107
|
-
|
|
18108
|
-
* over the gap the next card's controls reach into, so it takes no pointer.
|
|
18109
|
-
*/
|
|
18110
|
-
.crewlet-tree-canvas__card--composing::after {
|
|
18111
|
-
content: '';
|
|
18112
|
-
position: absolute;
|
|
18113
|
-
inset: -3px;
|
|
18114
|
-
border: 1px solid var(--color-brand-accent-soft-strong);
|
|
18115
|
-
border-radius: var(--radius-lg);
|
|
18116
|
-
pointer-events: none;
|
|
18563
|
+
/*
|
|
18564
|
+
* THE BOUNDARY BREATHES, which is what says the card is waiting for the
|
|
18565
|
+
* reader from the far end of a chart, where a dashed hairline is a few
|
|
18566
|
+
* pixels. It used to be a second ring 3px outside the boundary that
|
|
18567
|
+
* breathed instead, two lines round one card where every box in this
|
|
18568
|
+
* package draws one, so the dashed boundary itself moves between the soft
|
|
18569
|
+
* accent and the full one.
|
|
18570
|
+
*/
|
|
18117
18571
|
animation:
|
|
18118
|
-
crewlet-tree-canvas-ghost-
|
|
18119
|
-
var(--motion-duration-
|
|
18572
|
+
crewlet-tree-canvas-ghost-card var(--motion-duration-slow) var(--motion-easing-emphasized)
|
|
18573
|
+
var(--motion-duration-base) both,
|
|
18120
18574
|
/* A BREATH RATHER THAN A TRANSITION, so it is a multiple of the scale's
|
|
18121
18575
|
longest step (1.8s) rather than a number off it: the scale tops out at
|
|
18122
18576
|
one UI transition, and a pulse held there would strobe. The console
|
|
18123
|
-
chart's own is 2s. It starts where the
|
|
18577
|
+
chart's own is 2s. It starts where the card's arrival ends. */
|
|
18124
18578
|
crewlet-tree-canvas-ghost-pulse calc(var(--motion-duration-slow) * 6)
|
|
18125
|
-
var(--motion-easing-in-out)
|
|
18126
|
-
|
|
18579
|
+
var(--motion-easing-in-out) calc(var(--motion-duration-base) + var(--motion-duration-slow))
|
|
18580
|
+
infinite;
|
|
18127
18581
|
}
|
|
18128
18582
|
|
|
18129
18583
|
/*
|
|
18130
18584
|
* THE FORM ARRIVES LAST, and from slightly above and behind: the wire, then
|
|
18131
|
-
* the card, then
|
|
18585
|
+
* the card, then what is inside it, which is the order a reader
|
|
18132
18586
|
* follows from the node they pressed to the thing they have to fill in. The
|
|
18133
18587
|
* caller's own element, whatever it drew, because the ghost's contents are
|
|
18134
18588
|
* entirely the caller's.
|
|
@@ -18172,24 +18626,14 @@ svg.crewlet-time-window__tick {
|
|
|
18172
18626
|
}
|
|
18173
18627
|
}
|
|
18174
18628
|
|
|
18175
|
-
@keyframes crewlet-tree-canvas-ghost-glow {
|
|
18176
|
-
from {
|
|
18177
|
-
opacity: 0;
|
|
18178
|
-
}
|
|
18179
|
-
|
|
18180
|
-
to {
|
|
18181
|
-
opacity: 1;
|
|
18182
|
-
}
|
|
18183
|
-
}
|
|
18184
|
-
|
|
18185
18629
|
@keyframes crewlet-tree-canvas-ghost-pulse {
|
|
18186
18630
|
0%,
|
|
18187
18631
|
100% {
|
|
18188
|
-
|
|
18632
|
+
border-color: var(--color-brand-accent-soft-strong);
|
|
18189
18633
|
}
|
|
18190
18634
|
|
|
18191
18635
|
50% {
|
|
18192
|
-
|
|
18636
|
+
border-color: var(--color-brand-accent);
|
|
18193
18637
|
}
|
|
18194
18638
|
}
|
|
18195
18639
|
|
|
@@ -18209,8 +18653,8 @@ svg.crewlet-time-window__tick {
|
|
|
18209
18653
|
* A READER WHO ASKED FOR LESS gets the ghost DRAWN, in place, at once. Nothing
|
|
18210
18654
|
* about the add is behind the motion: the chart still makes room, the branch
|
|
18211
18655
|
* is still dashed, the view still moves onto it and focus still lands in the
|
|
18212
|
-
* form. Only the arrival, the breath and the rise are dropped, and the
|
|
18213
|
-
*
|
|
18656
|
+
* form. Only the arrival, the breath and the rise are dropped, and the
|
|
18657
|
+
* boundary rests at the soft step it breathes from.
|
|
18214
18658
|
*/
|
|
18215
18659
|
@media (prefers-reduced-motion: reduce) {
|
|
18216
18660
|
/* NOT `transform` on the card itself: its transform is where the layout
|
|
@@ -18230,11 +18674,6 @@ svg.crewlet-time-window__tick {
|
|
|
18230
18674
|
transform: none;
|
|
18231
18675
|
animation: none;
|
|
18232
18676
|
}
|
|
18233
|
-
|
|
18234
|
-
.crewlet-tree-canvas__card--composing::after {
|
|
18235
|
-
opacity: 1;
|
|
18236
|
-
animation: none;
|
|
18237
|
-
}
|
|
18238
18677
|
}
|
|
18239
18678
|
|
|
18240
18679
|
|