@crewlethq/ui 0.82.0 → 0.84.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 +63 -1
- package/dist/ActionCard/ActionCard.d.ts +7 -7
- package/dist/ActionCard/index.js +1 -1
- package/dist/ActionCard-YZKL3CKR.css +130 -0
- package/dist/AppShell/AccountRow.d.ts +6 -1
- package/dist/AppShell/AppShell.d.ts +25 -13
- package/dist/AppShell/index.d.ts +1 -1
- package/dist/AppShell/index.js +8 -5
- package/dist/AppShell/railMotion.d.ts +60 -0
- package/dist/AppShell/railShape.d.ts +5 -0
- package/dist/{AppShell-F7RID4P4.css → AppShell-NX5HCD4O.css} +251 -90
- package/dist/ArrangeList/index.js +3 -2
- package/dist/ArtifactBar/index.js +7 -5
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/ArtifactKindIllustration/index.js +1 -1
- package/dist/{ArtifactKinds-3EH4KR3F.css → ArtifactKinds-27TE3KJL.css} +7 -7
- package/dist/ArtifactMakeRow/index.js +1 -1
- package/dist/ArtifactNameCell/index.js +1 -1
- package/dist/AuthLayout/index.js +3 -3
- package/dist/AvatarPicker/index.js +7 -6
- package/dist/BrandLockup/index.js +2 -2
- package/dist/BriefCard/index.js +2 -1
- package/dist/Canvas/index.js +4 -2
- package/dist/CanvasBoard/index.js +6 -4
- package/dist/CanvasToolbar/index.js +5 -3
- package/dist/CatalogTile/CatalogTile.d.ts +23 -5
- package/dist/CatalogTile/index.d.ts +1 -1
- package/dist/CatalogTile/index.js +2 -1
- package/dist/{CatalogTile-6VF36JWA.css → CatalogTile-TMOSGSV3.css} +4 -3
- package/dist/ChangeMark/index.js +4 -2
- package/dist/ChatThread/index.js +2 -2
- package/dist/CommandPalette/index.js +3 -2
- package/dist/CompactNav/CompactNav.d.ts +10 -6
- package/dist/CompactNav/index.js +2 -1
- package/dist/ContrastHelp/index.js +3 -2
- package/dist/DataGrid/index.js +2 -2
- package/dist/DataTable/index.js +4 -3
- package/dist/DataView/index.js +8 -7
- package/dist/DateTimePicker/index.js +3 -2
- package/dist/DeepWorkCard/index.js +2 -2
- package/dist/DirectoryList/index.js +1 -1
- package/dist/{DirectoryList-XZOWYOA3.css → DirectoryList-IXQIMNFS.css} +8 -1
- package/dist/DocTabsEditor/index.js +5 -3
- package/dist/DockColumn/DockColumn.d.ts +68 -0
- package/dist/DockColumn/index.d.ts +3 -0
- package/dist/DockColumn/index.js +6 -0
- package/dist/DockColumn-SMJCXHS4.css +61 -0
- package/dist/{Editor-7EQWP3RN.js → Editor-VGNB35NJ.js} +2 -1
- package/dist/EmojiPicker/index.js +5 -3
- package/dist/FactList/index.js +4 -2
- package/dist/HuePicker/index.js +5 -4
- package/dist/InboxList/InboxList.d.ts +28 -2
- package/dist/InboxList/index.d.ts +1 -1
- package/dist/InboxList/index.js +6 -1
- package/dist/{InboxList-OFGSX5IH.css → InboxList-X5Q5WWAI.css} +63 -2
- package/dist/LinkInterstitial/index.js +3 -2
- package/dist/ListDetail/ListDetail.d.ts +6 -0
- package/dist/ListDetail/index.js +1 -1
- package/dist/{ListDetail-N3L7PB46.css → ListDetail-JGESKTR7.css} +38 -0
- package/dist/ListInput/index.js +3 -2
- package/dist/MarkdownEditor/index.js +5 -4
- package/dist/MediaMatch/index.d.ts +1 -1
- package/dist/MediaMatch/index.js +1 -1
- package/dist/MediaMatch/useMediaMatch.d.ts +14 -0
- package/dist/Menu/index.js +2 -1
- package/dist/MergeConflicts/index.js +5 -4
- package/dist/MessageActions/index.js +6 -4
- package/dist/Modal/index.js +2 -1
- package/dist/OpenInAppCard/index.js +2 -2
- package/dist/Outline/index.js +2 -1
- package/dist/Popover/index.js +2 -1
- package/dist/Presence/index.d.ts +2 -0
- package/dist/Presence/index.js +4 -0
- package/dist/Presence/usePresence.d.ts +109 -0
- package/dist/ReactionBar/index.js +6 -4
- package/dist/ReadingPane/ReadingPane.d.ts +17 -1
- package/dist/ReadingPane/index.d.ts +1 -1
- package/dist/ReadingPane/index.js +2 -1
- package/dist/{ReadingPane-VLYOWMCM.css → ReadingPane-VFTRDPC5.css} +19 -0
- package/dist/RecordChip/index.js +3 -2
- package/dist/Reorder/index.js +2 -1
- package/dist/RichEditor/index.js +1 -1
- package/dist/SectionFrame/index.js +2 -2
- package/dist/SegmentedControl/index.js +4 -3
- package/dist/SetupWizard/index.js +2 -2
- package/dist/ShareDialog/index.js +5 -4
- package/dist/SheetColumnEditor/index.js +6 -5
- package/dist/SheetGrid/index.js +8 -6
- package/dist/SidebarNav/SidebarNav.d.ts +18 -2
- package/dist/SidebarNav/index.d.ts +1 -1
- package/dist/SidebarNav/index.js +1 -1
- package/dist/{SidebarNav-E7PZGGA6.css → SidebarNav-IKBKGXW4.css} +20 -0
- package/dist/SlideFilmstrip/index.js +5 -3
- package/dist/Switcher/index.js +5 -4
- package/dist/Tabs/index.js +3 -2
- package/dist/ThemeSwitcher/index.js +5 -4
- package/dist/TimeRangePicker/index.js +6 -5
- package/dist/TimeWindowPicker/index.js +3 -2
- package/dist/Tooltip/index.js +3 -1
- package/dist/TreeCanvas/index.js +6 -3
- package/dist/VersionCompare/index.js +5 -4
- package/dist/{chunk-KJR5X4II.js → chunk-22CU7V4J.js} +2 -2
- package/dist/{chunk-4RYELYWG.js → chunk-2SVQBQAD.js} +2 -2
- package/dist/{chunk-N2T7Y5KR.js → chunk-3AMWXJQX.js} +1 -1
- package/dist/{chunk-HQFOZJQ4.js → chunk-46FIBJCV.js} +4 -4
- package/dist/{chunk-LQRN2XZK.js → chunk-4DEKONVJ.js} +2 -2
- package/dist/chunk-5JPOFAVN.js +58 -0
- package/dist/{chunk-C7UHDM7Y.js → chunk-5V6GW6HK.js} +1 -1
- package/dist/{chunk-Q7N2ATMC.js → chunk-64JNKLLP.js} +57 -9
- package/dist/chunk-6C7GQOBV.js +10 -0
- package/dist/{chunk-YRNNUCQP.js → chunk-7BDBO2NP.js} +1 -1
- package/dist/{chunk-XGLMPPDW.js → chunk-7K6LVM5I.js} +1 -1
- package/dist/{chunk-FKAJBN6G.js → chunk-7M7WKYOV.js} +3 -3
- package/dist/{chunk-A5YKNRG6.js → chunk-7QCSISHM.js} +2 -1
- package/dist/{chunk-3QQIGMY3.js → chunk-7ZSEUO5Q.js} +6 -30
- package/dist/{chunk-57BFL323.js → chunk-ABRWL5FJ.js} +1 -1
- package/dist/{chunk-HFOTRZFU.js → chunk-AQNP3KQU.js} +2 -2
- package/dist/{chunk-GZVAZ3LL.js → chunk-AZYE7NR4.js} +1 -1
- package/dist/{chunk-6IOQWMYJ.js → chunk-BN5FEJL5.js} +1 -1
- package/dist/{chunk-25JQNHTC.js → chunk-BRK3HXGZ.js} +8 -2
- package/dist/{chunk-MPVMB2DV.js → chunk-BVML4UVB.js} +3 -2
- package/dist/{chunk-OAHRMR4U.js → chunk-C42XW5YP.js} +1 -1
- package/dist/{chunk-2H6YDUR5.js → chunk-C4JTX25K.js} +3 -3
- package/dist/{chunk-QE4OIE3Q.js → chunk-DJIWCW5Z.js} +6 -4
- package/dist/{chunk-HA2PL7PA.js → chunk-DRFOTWJE.js} +1 -1
- package/dist/{chunk-SM4P2SHB.js → chunk-EC6EUIAD.js} +7 -4
- package/dist/{chunk-QPHD4UUG.js → chunk-F6ZUM66S.js} +160 -25
- package/dist/{chunk-AMUXSJ2A.js → chunk-FPU7AA3X.js} +4 -15
- package/dist/{chunk-KLAVEJIO.js → chunk-GLKQHN7G.js} +1 -1
- package/dist/{chunk-MVMVMHYI.js → chunk-HDEKHP65.js} +1 -1
- package/dist/{chunk-XY4O2XMR.js → chunk-HKUZ2GYX.js} +4 -4
- package/dist/chunk-HTS5RJ7S.js +6 -0
- package/dist/{chunk-ZB3E2Z4Y.js → chunk-J5T5TDM2.js} +1 -1
- package/dist/{chunk-ISQANI6Q.js → chunk-JLOESTT2.js} +2 -1
- package/dist/{chunk-C75WZMXG.js → chunk-K6RWEQ6P.js} +1 -1
- package/dist/{chunk-GVPUCEWH.js → chunk-KXWJJWBD.js} +1 -1
- package/dist/chunk-L72URIHR.js +36 -0
- package/dist/{chunk-2TOGGCDM.js → chunk-LT44RL62.js} +2 -2
- package/dist/{chunk-C46DDVTK.js → chunk-LTD7KLOU.js} +1 -1
- package/dist/{chunk-HCUECVZ3.js → chunk-MVKUE4FI.js} +1 -1
- package/dist/{chunk-6YBBQAEM.js → chunk-MYAARF4Z.js} +1 -1
- package/dist/{chunk-SEKO6P3Y.js → chunk-NCUSI4ZU.js} +1 -1
- package/dist/{chunk-YBC2CYPD.js → chunk-O4VTQMEF.js} +1 -1
- package/dist/{chunk-HTBTAIH6.js → chunk-OM2LABPS.js} +2 -2
- package/dist/{chunk-T4IEESXN.js → chunk-ORONAXSF.js} +91 -25
- package/dist/chunk-PCAT2EFB.js +104 -0
- package/dist/{chunk-GP5TNTZH.js → chunk-QWRAWKB2.js} +53 -14
- package/dist/{chunk-TGCGLKD4.js → chunk-RBQRTGXX.js} +1 -1
- package/dist/{chunk-B3X4DHRB.js → chunk-RDIQB5ZE.js} +2 -2
- package/dist/{chunk-SRDNGGZE.js → chunk-RKIJAXQA.js} +1 -1
- package/dist/{chunk-T7WESRZF.js → chunk-RO5JU6SN.js} +2 -2
- package/dist/{chunk-IUWP2LSE.js → chunk-SGMWLUYQ.js} +2 -2
- package/dist/{chunk-LSOR77RZ.js → chunk-SHH7UD5U.js} +1 -1
- package/dist/{chunk-JV6JM6W6.js → chunk-SNQ7PH3D.js} +1 -1
- package/dist/{chunk-MPYRC3GO.js → chunk-SPNTUQBV.js} +2 -2
- package/dist/{chunk-YM77TZ7Q.js → chunk-T3S3D4FC.js} +1 -1
- package/dist/{chunk-YOJAGKTS.js → chunk-TGGYSQRD.js} +3 -4
- package/dist/{chunk-2KJCUCVE.js → chunk-TQKQRS2J.js} +2 -2
- package/dist/{chunk-ONNXUS5Y.js → chunk-VB3FVKNI.js} +1 -1
- package/dist/{chunk-JHQGNFN3.js → chunk-VONEKR3J.js} +2 -2
- package/dist/{chunk-P6F3PE4V.js → chunk-WANKINXG.js} +2 -2
- package/dist/{chunk-PXLS6JKL.js → chunk-WMO722J2.js} +1 -1
- package/dist/{chunk-SYVQXMLO.js → chunk-XRWHDW6F.js} +4 -4
- package/dist/{chunk-WT3B76MG.js → chunk-XTJHMP3W.js} +1 -1
- package/dist/{chunk-CF4M6N6A.js → chunk-XYSSFI5C.js} +1 -7
- package/dist/{chunk-RTPQDNW3.js → chunk-YJQXESOJ.js} +5 -1
- package/dist/{chunk-VGOWSOUA.js → chunk-YXKSUILG.js} +1 -1
- package/dist/{chunk-G6ZFSUIH.js → chunk-ZJVLGYE3.js} +2 -2
- package/dist/{chunk-BSAU7QRW.js → chunk-ZPTKAYJK.js} +1 -1
- package/dist/{chunk-XXDB6KPV.js → chunk-ZXXZESCD.js} +3 -4
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +108 -103
- package/dist/index.js +108 -103
- package/dist/styles.css +525 -134
- package/dist/utils/composedRef.d.ts +39 -0
- package/dist/utils/developing.d.ts +10 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -1
- package/dist/utils/tokenMs.d.ts +6 -0
- package/package.json +5 -5
- package/dist/ActionCard-47WSZ2O5.css +0 -110
- package/dist/{chunk-IYI6HWKN.js → chunk-CV2LU2T2.js} +1 -1
- package/dist/{chunk-FVZPSTL2.js → chunk-G4EHZHKM.js} +1 -1
- /package/dist/{chunk-FEJANUZK.js → chunk-KBSD476L.js} +0 -0
- /package/dist/{chunk-KLWWNV25.js → chunk-REEZQCML.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -109,13 +109,15 @@
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
/* ActionCard-
|
|
112
|
+
/* ActionCard-YZKL3CKR.css */
|
|
113
113
|
/*
|
|
114
|
-
* ActionCard: a first step offered as a picture, on
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
114
|
+
* ActionCard: a first step offered as a picture, on a CALM TINT of an
|
|
115
|
+
* artifact kind's hue. The ground is the kind's own Ground steps
|
|
116
|
+
* (ArtifactKinds.css): the card rung tinted by a share of the hue's chroma,
|
|
117
|
+
* never a slab of it, which the palette suite holds to 4.5:1 for the primary
|
|
118
|
+
* text in every palette and both modes and to a chroma ceiling. The edge is
|
|
119
|
+
* the kind's hue stepped toward the ink until it clears 3:1, a step further
|
|
120
|
+
* under the pointer, and a soft halo of the hue stands behind the drawing.
|
|
119
121
|
*/
|
|
120
122
|
|
|
121
123
|
/*
|
|
@@ -143,6 +145,7 @@
|
|
|
143
145
|
|
|
144
146
|
.crewlet-action-card {
|
|
145
147
|
--crewlet-action-card-ground: var(--crewlet-kind-ground);
|
|
148
|
+
--crewlet-action-card-edge: var(--crewlet-kind-edge);
|
|
146
149
|
position: relative;
|
|
147
150
|
display: flex;
|
|
148
151
|
flex: none;
|
|
@@ -153,30 +156,41 @@
|
|
|
153
156
|
box-sizing: border-box;
|
|
154
157
|
overflow: hidden;
|
|
155
158
|
padding: var(--spacing-3) var(--spacing-3) 0;
|
|
156
|
-
/*
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
/* THE KIND'S OWN EDGE: its hue stepped toward the ink until it clears 3:1
|
|
160
|
+
on the sheet and on the card's tint (`--color-artifact-kind-<kind>-edge`,
|
|
161
|
+
derived by the tokens build and held by its suite). The Line step, the
|
|
162
|
+
hue at 0.38, did not clear it, and a neutral grey outline read as a card
|
|
163
|
+
from another family. */
|
|
164
|
+
border: 1px solid var(--crewlet-action-card-edge);
|
|
165
|
+
/* The edge scale: the extra-large corner a tall card of its own takes, and
|
|
166
|
+
the smallest shadow, so the card sits on the page rather than in it. */
|
|
167
|
+
border-radius: var(--radius-xl);
|
|
160
168
|
background-color: var(--color-surface-subtle);
|
|
161
169
|
background-image:
|
|
162
|
-
radial-gradient(
|
|
170
|
+
radial-gradient(90% 56% at 50% 100%, var(--crewlet-kind-glow) 0%, transparent 72%),
|
|
163
171
|
linear-gradient(180deg, var(--crewlet-action-card-ground) 0%, var(--crewlet-kind-ground-end) 100%);
|
|
172
|
+
box-shadow: var(--shadow-xs);
|
|
164
173
|
color: var(--color-text-primary);
|
|
165
174
|
font: inherit;
|
|
166
175
|
text-align: left;
|
|
167
176
|
cursor: pointer;
|
|
168
177
|
scroll-snap-align: start;
|
|
169
|
-
transition:
|
|
178
|
+
transition:
|
|
179
|
+
box-shadow var(--motion-duration-fast) var(--motion-easing-default),
|
|
180
|
+
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
170
181
|
}
|
|
171
182
|
|
|
172
|
-
/* A QUIET HOVER: the
|
|
173
|
-
card off the page. Nothing moves
|
|
183
|
+
/* A QUIET HOVER: the tint deepens a step, the edge takes a stronger step of
|
|
184
|
+
the hue, and a small shadow lifts the card off the page. Nothing moves, so
|
|
185
|
+
a row of cards stays still under a pointer passing over it. */
|
|
174
186
|
.crewlet-action-card:hover {
|
|
175
187
|
--crewlet-action-card-ground: var(--crewlet-kind-ground-strong);
|
|
188
|
+
--crewlet-action-card-edge: var(--crewlet-kind-edge-strong);
|
|
176
189
|
box-shadow: var(--shadow-sm);
|
|
177
190
|
}
|
|
178
191
|
|
|
179
|
-
/* The card draws its own edge, so the ring is drawn over it
|
|
192
|
+
/* The card draws its own edge, so the ring is drawn over it, on the same
|
|
193
|
+
corner. */
|
|
180
194
|
.crewlet-action-card:focus-visible {
|
|
181
195
|
outline: 2px solid var(--color-focus);
|
|
182
196
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
@@ -192,23 +206,29 @@
|
|
|
192
206
|
text-wrap: balance;
|
|
193
207
|
}
|
|
194
208
|
|
|
195
|
-
/*
|
|
209
|
+
/*
|
|
210
|
+
* THE DRAWING STANDS ON THE CARD'S FOOT, still, the card's own width less its
|
|
211
|
+
* inset. Every kind's drawing is one canvas (160 by 120), so each takes the
|
|
212
|
+
* same box whatever its shape, a tall page and a wide slide alike, where a
|
|
213
|
+
* fixed width and a height cap drew a page half the size of a slide. It is
|
|
214
|
+
* set a step into the foot, so it stands on the edge rather than floating
|
|
215
|
+
* above it, on a soft shadow of the kind's Fill.
|
|
216
|
+
*/
|
|
196
217
|
.crewlet-action-card__art {
|
|
197
218
|
display: flex;
|
|
198
219
|
align-items: flex-end;
|
|
199
220
|
justify-content: center;
|
|
200
|
-
|
|
201
|
-
margin: 0 calc(var(--spacing-3) * -1);
|
|
221
|
+
margin-bottom: calc(var(--spacing-2) * -1);
|
|
202
222
|
}
|
|
203
223
|
|
|
204
224
|
.crewlet-action-card__art .crewlet-kind-illustration {
|
|
205
|
-
width:
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
filter: drop-shadow(0 6px 12px var(--crewlet-kind-line));
|
|
225
|
+
width: 100%;
|
|
226
|
+
height: auto;
|
|
227
|
+
filter: drop-shadow(0 4px 10px var(--crewlet-kind-fill));
|
|
209
228
|
}
|
|
210
229
|
|
|
211
|
-
/* FORCED COLORS drops the ground
|
|
230
|
+
/* FORCED COLORS drops the ground and the hue; the edge is drawn in the
|
|
231
|
+
system's text colour, so the card keeps its outline. */
|
|
212
232
|
@media (forced-colors: active) {
|
|
213
233
|
.crewlet-action-card {
|
|
214
234
|
border-color: CanvasText;
|
|
@@ -944,7 +964,7 @@
|
|
|
944
964
|
}
|
|
945
965
|
|
|
946
966
|
|
|
947
|
-
/* AppShell-
|
|
967
|
+
/* AppShell-NX5HCD4O.css */
|
|
948
968
|
/*
|
|
949
969
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
950
970
|
* floats beside it.
|
|
@@ -973,31 +993,46 @@
|
|
|
973
993
|
.crewlet-app-shell {
|
|
974
994
|
--crewlet-app-shell-rail: var(--size-shell-rail);
|
|
975
995
|
--crewlet-app-shell-topbar: var(--size-shell-topbar);
|
|
996
|
+
/* THE SHEET'S SIDE INSET, ONE LENGTH: the bar's, the content column's, and
|
|
997
|
+
the inset a box that reaches past the column to the sheet's edge keeps
|
|
998
|
+
inside itself (a `ListDetail` on a fill screen), one step narrower on a
|
|
999
|
+
narrow window. */
|
|
1000
|
+
--crewlet-app-shell-inset: var(--spacing-5);
|
|
976
1001
|
/* What stands on the frame to the sheet's left: the rail's column, or
|
|
977
|
-
nothing where there is no rail or the rail is a drawer.
|
|
978
|
-
below subtracts it, so it is one name for both. */
|
|
1002
|
+
nothing where there is no rail or the rail is a drawer. */
|
|
979
1003
|
--crewlet-app-shell-beside: var(--crewlet-app-shell-rail);
|
|
980
|
-
/*
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1004
|
+
/*
|
|
1005
|
+
* THE ASIDE'S TRACK, while it is a column: the inset it is held off the
|
|
1006
|
+
* window's edge by at least, and the panel's width and that inset at most.
|
|
1007
|
+
* THE CAP IS THE GRID'S. The page's sheet takes the host's floor as its
|
|
1008
|
+
* own track's minimum (`--crewlet-app-shell-aside-reserve`, the page's sheet
|
|
1009
|
+
* with its own inset and hairlines), and the grid hands the aside what is
|
|
1010
|
+
* left once the rail and that floor have theirs, up to its width. The rail's
|
|
1011
|
+
* track is the rail's live width, so while the rail eases between its
|
|
1012
|
+
* shapes the cap eases with it: a cap computed from the rail's VARIABLE
|
|
1013
|
+
* named the shape drawn, and jumped at both ends of a fold. With no reserve
|
|
1014
|
+
* the panel takes the width it was given, as far as the window holds it.
|
|
1015
|
+
*/
|
|
1016
|
+
--crewlet-app-shell-aside-track: minmax(
|
|
1017
|
+
var(--size-shell-inset),
|
|
1018
|
+
calc(var(--crewlet-app-shell-aside) + var(--size-shell-inset))
|
|
1019
|
+
);
|
|
1020
|
+
/* The page's floor beside an aside column, never more than the window
|
|
1021
|
+
leaves it: on a window too narrow for the floor, the page gives way rather
|
|
1022
|
+
than the shell growing past the window's edge. */
|
|
1023
|
+
--crewlet-app-shell-sheet-floor: min(
|
|
1024
|
+
var(--crewlet-app-shell-aside-reserve, 0px),
|
|
1025
|
+
max(0px, 100% - var(--crewlet-app-shell-beside) - var(--size-shell-inset))
|
|
994
1026
|
);
|
|
995
1027
|
/* Where the drawer's veil sits while it is open. The shell replaces it with
|
|
996
1028
|
the surface's own place in the layer band; this default only has to clear
|
|
997
1029
|
the page chrome for the moment before that lands. */
|
|
998
1030
|
--crewlet-app-shell-drawer-z: var(--z-index-overlay);
|
|
999
1031
|
display: grid;
|
|
1000
|
-
|
|
1032
|
+
/* The rail's track is the rail's own width (`auto`), and the rail takes
|
|
1033
|
+
`--crewlet-app-shell-rail` itself, so the track follows it while it eases
|
|
1034
|
+
between its two shapes (see the rail's motion, below). */
|
|
1035
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
1001
1036
|
/* One row, the viewport's height less nothing: the sheet's own margin is
|
|
1002
1037
|
what holds it off the frame's edges, and a row sized by its content would
|
|
1003
1038
|
let a tall screen push the sheet's bottom edge off the window. */
|
|
@@ -1036,11 +1071,11 @@
|
|
|
1036
1071
|
keeps its column and is only narrower, so nothing under the bar moves but
|
|
1037
1072
|
its end edge. */
|
|
1038
1073
|
.crewlet-app-shell[data-aside='column'] {
|
|
1039
|
-
grid-template-columns: var(--crewlet-app-shell-
|
|
1074
|
+
grid-template-columns: auto minmax(var(--crewlet-app-shell-sheet-floor), 1fr) var(--crewlet-app-shell-aside-track);
|
|
1040
1075
|
}
|
|
1041
1076
|
|
|
1042
1077
|
.crewlet-app-shell--no-rail[data-aside='column'] {
|
|
1043
|
-
grid-template-columns: minmax(
|
|
1078
|
+
grid-template-columns: minmax(var(--crewlet-app-shell-sheet-floor), 1fr) var(--crewlet-app-shell-aside-track);
|
|
1044
1079
|
}
|
|
1045
1080
|
|
|
1046
1081
|
/* The skip link, drawn only while it holds focus, over everything. */
|
|
@@ -1086,14 +1121,25 @@
|
|
|
1086
1121
|
position: relative;
|
|
1087
1122
|
display: flex;
|
|
1088
1123
|
flex-direction: column;
|
|
1124
|
+
width: var(--crewlet-app-shell-rail);
|
|
1089
1125
|
min-height: 0;
|
|
1090
1126
|
min-width: 0;
|
|
1127
|
+
/* THE MOVING EDGE CUTS WHAT IT PASSES. While the rail eases between its
|
|
1128
|
+
shapes its content keeps the width of the shape drawn (below), and the
|
|
1129
|
+
edge clips it rather than squeezing it. Across only: a ring or a badge
|
|
1130
|
+
at a row's top or bottom is never cut. */
|
|
1131
|
+
overflow-x: clip;
|
|
1091
1132
|
background: var(--color-surface-frame);
|
|
1133
|
+
transition: width var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
1092
1134
|
}
|
|
1093
1135
|
|
|
1136
|
+
/* THE CONTENT IS LAID OUT AT ITS SHAPE'S WIDTH, never at a width between the
|
|
1137
|
+
two, so no word in the rail rewraps while it moves and nothing drifts with
|
|
1138
|
+
the edge: the column stands still and the edge travels over it. */
|
|
1094
1139
|
.crewlet-app-shell__rail-inner {
|
|
1095
1140
|
display: flex;
|
|
1096
1141
|
flex-direction: column;
|
|
1142
|
+
width: var(--crewlet-app-shell-rail);
|
|
1097
1143
|
min-height: 0;
|
|
1098
1144
|
height: 100%;
|
|
1099
1145
|
}
|
|
@@ -1554,7 +1600,8 @@
|
|
|
1554
1600
|
gap: var(--spacing-3);
|
|
1555
1601
|
flex: none;
|
|
1556
1602
|
height: var(--crewlet-app-shell-topbar);
|
|
1557
|
-
padding: 0 calc(var(--
|
|
1603
|
+
padding: 0 calc(var(--crewlet-app-shell-inset) + var(--crewlet-app-shell-gutter, 0px)) 0
|
|
1604
|
+
var(--crewlet-app-shell-inset);
|
|
1558
1605
|
border-bottom: 1px solid var(--color-border-default);
|
|
1559
1606
|
background: var(--color-surface-background);
|
|
1560
1607
|
}
|
|
@@ -1644,46 +1691,76 @@
|
|
|
1644
1691
|
gap: var(--spacing-5);
|
|
1645
1692
|
max-width: var(--size-content-max);
|
|
1646
1693
|
margin: 0 auto;
|
|
1647
|
-
padding: var(--
|
|
1694
|
+
padding: var(--crewlet-app-shell-inset);
|
|
1648
1695
|
padding-bottom: var(--crewlet-app-shell-content-end);
|
|
1649
1696
|
min-width: 0;
|
|
1650
1697
|
}
|
|
1651
1698
|
|
|
1652
|
-
/*
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1699
|
+
/*
|
|
1700
|
+
* A screen that draws to the bottom of the window: the scroller stops
|
|
1701
|
+
* scrolling and the content column takes the height that is left, and the
|
|
1702
|
+
* whole width, since a screen that fills the window is a frame for panes
|
|
1703
|
+
* rather than a page of prose (prose inside it keeps its own measure).
|
|
1704
|
+
*
|
|
1705
|
+
* THE SCROLLER RESERVES NO GUTTER; THE COLUMN PADS BY IT INSTEAD. Nothing
|
|
1706
|
+
* scrolls here, so the strip a scrolling screen keeps for its scrollbar is
|
|
1707
|
+
* only there to hold the content where the bar's controls expect it (the
|
|
1708
|
+
* bar's end inset counts the gutter). A reserved strip did that, and also
|
|
1709
|
+
* stood between the sheet's edge and every pane that scrolls on its own: a
|
|
1710
|
+
* list's detail drew its scrollbar 31px inside the sheet, beside an empty
|
|
1711
|
+
* strip, and nothing in the screen could paint over a reserved gutter. The
|
|
1712
|
+
* same length as padding holds the content exactly where it stood, and a box
|
|
1713
|
+
* standing in the column can reach past padding: the column publishes it as
|
|
1714
|
+
* `--crewlet-app-shell-bleed-end`, and a `ListDetail` takes it back so its
|
|
1715
|
+
* scrollbar is the sheet's last pixel. The scrollbar's width is read off the
|
|
1716
|
+
* shell's gauge here (AppShell.tsx), so the bar keeps its place between a
|
|
1717
|
+
* fill screen and a scrolling one.
|
|
1718
|
+
*/
|
|
1662
1719
|
.crewlet-app-shell--fill .crewlet-app-shell__main {
|
|
1663
1720
|
overflow: hidden;
|
|
1721
|
+
scrollbar-gutter: auto;
|
|
1664
1722
|
}
|
|
1665
1723
|
|
|
1666
1724
|
.crewlet-app-shell--fill .crewlet-app-shell__content {
|
|
1667
1725
|
--crewlet-app-shell-content-end: var(--spacing-5);
|
|
1726
|
+
--crewlet-app-shell-bleed-end: calc(var(--crewlet-app-shell-inset) + var(--crewlet-app-shell-gutter, 0px));
|
|
1668
1727
|
|
|
1669
1728
|
height: 100%;
|
|
1729
|
+
max-width: none;
|
|
1730
|
+
padding-right: var(--crewlet-app-shell-bleed-end);
|
|
1670
1731
|
}
|
|
1671
1732
|
|
|
1672
1733
|
/*
|
|
1673
|
-
*
|
|
1674
|
-
*
|
|
1675
|
-
*
|
|
1676
|
-
*
|
|
1677
|
-
*
|
|
1734
|
+
* THE GAUGE: an empty scroller, never seen, that always draws its scrollbar,
|
|
1735
|
+
* so the shell can read the scrollbar's width on a fill screen, where the
|
|
1736
|
+
* screen's own scroller reserves none. It is a row of no height in the
|
|
1737
|
+
* sheet's column, clipped, so it takes no room and moves nothing; the ruler
|
|
1738
|
+
* inside it has a height of its own, because a scroller of no height draws
|
|
1739
|
+
* no scrollbar in Firefox and measured 0 there.
|
|
1678
1740
|
*/
|
|
1679
|
-
.crewlet-app-
|
|
1680
|
-
|
|
1741
|
+
.crewlet-app-shell__gauge {
|
|
1742
|
+
flex: none;
|
|
1743
|
+
height: 0;
|
|
1744
|
+
overflow: hidden;
|
|
1745
|
+
visibility: hidden;
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
.crewlet-app-shell__gauge-ruler {
|
|
1749
|
+
height: var(--size-target-min);
|
|
1750
|
+
overflow-y: scroll;
|
|
1681
1751
|
}
|
|
1682
1752
|
|
|
1753
|
+
/*
|
|
1754
|
+
* A FLUSH SCREEN draws its own frame to the sheet's edges: the column gives up
|
|
1755
|
+
* its pad and its gap as well, so there is nothing for a box in it to reach
|
|
1756
|
+
* past. The column is the containing block for a `LayerHost` the screen
|
|
1757
|
+
* keeps, so its layers fill the screen rather than the window.
|
|
1758
|
+
*/
|
|
1683
1759
|
.crewlet-app-shell--fill-flush .crewlet-app-shell__content {
|
|
1760
|
+
--crewlet-app-shell-bleed-end: 0px;
|
|
1761
|
+
|
|
1684
1762
|
position: relative;
|
|
1685
1763
|
gap: 0;
|
|
1686
|
-
max-width: none;
|
|
1687
1764
|
padding: 0;
|
|
1688
1765
|
}
|
|
1689
1766
|
|
|
@@ -1837,7 +1914,7 @@
|
|
|
1837
1914
|
}
|
|
1838
1915
|
|
|
1839
1916
|
/*
|
|
1840
|
-
* THE COMPACT RAIL: the same
|
|
1917
|
+
* THE COMPACT RAIL: the same rail, narrowed to the compact column. One
|
|
1841
1918
|
* variable is the rail's width for the grid, the aside's cap and the drawer
|
|
1842
1919
|
* alike, so folding the rail is this one declaration. The shell writes the
|
|
1843
1920
|
* attribute only where the layout is wide: the drawer under the step is
|
|
@@ -1848,21 +1925,33 @@
|
|
|
1848
1925
|
}
|
|
1849
1926
|
|
|
1850
1927
|
/*
|
|
1851
|
-
* THE FOLD CONTROL stands
|
|
1852
|
-
*
|
|
1853
|
-
*
|
|
1854
|
-
*
|
|
1855
|
-
*
|
|
1928
|
+
* THE FOLD CONTROL stands on the head's row, before the brand's mark, in both
|
|
1929
|
+
* shapes, so it never moves under the pointer that pressed it: chevrons
|
|
1930
|
+
* pointing left to fold the rail and right to unfold it.
|
|
1931
|
+
*
|
|
1932
|
+
* THE CONTROL AND THE MARK ARE ONE PAIR: the control at the target floor
|
|
1933
|
+
* (`--size-target-min`, at every density), a step (`--spacing-1`), then the
|
|
1934
|
+
* mark, which is a target's size too, the pair centred in the compact column
|
|
1935
|
+
* so the 76px column holds both (12 + 24 + 4 + 24 + 12). The control is
|
|
1936
|
+
* centred on the bar's line as the mark is: the inset, then half of what the
|
|
1937
|
+
* bar leaves round it. The mark's inset below is the same arithmetic from the
|
|
1938
|
+
* other side.
|
|
1939
|
+
*
|
|
1940
|
+
* Quiet until the rail is pointed at: the tertiary ink, which holds 3:1 on
|
|
1941
|
+
* the frame, then the secondary, and the ghost's own primary under the
|
|
1942
|
+
* pointer. Its ring is drawn inside its own box, clear of the mark beside it.
|
|
1856
1943
|
*/
|
|
1857
1944
|
.crewlet-app-shell__fold {
|
|
1858
1945
|
position: absolute;
|
|
1859
|
-
top: calc(var(--size-shell-inset) + var(--crewlet-app-shell-topbar));
|
|
1860
|
-
left: calc((var(--size-shell-rail-compact) - var(--size-
|
|
1946
|
+
top: calc(var(--size-shell-inset) + (var(--crewlet-app-shell-topbar) - var(--size-target-min)) / 2);
|
|
1947
|
+
left: calc((var(--size-shell-rail-compact) - 2 * var(--size-target-min) - var(--spacing-1)) / 2);
|
|
1861
1948
|
z-index: 1;
|
|
1862
1949
|
display: inline-flex;
|
|
1863
1950
|
}
|
|
1864
1951
|
|
|
1865
1952
|
.crewlet-app-shell__fold > .crewlet-icon-btn {
|
|
1953
|
+
width: var(--size-target-min);
|
|
1954
|
+
height: var(--size-target-min);
|
|
1866
1955
|
color: var(--color-text-tertiary);
|
|
1867
1956
|
}
|
|
1868
1957
|
|
|
@@ -1870,14 +1959,25 @@
|
|
|
1870
1959
|
color: var(--color-text-secondary);
|
|
1871
1960
|
}
|
|
1872
1961
|
|
|
1962
|
+
.crewlet-app-shell__fold > .crewlet-icon-btn:focus-visible {
|
|
1963
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1873
1966
|
/*
|
|
1874
|
-
* THE MARK STANDS WHERE THE COMPACT RAIL'S DOES, in both shapes
|
|
1875
|
-
*
|
|
1876
|
-
*
|
|
1967
|
+
* THE MARK STANDS WHERE THE COMPACT RAIL'S DOES, in both shapes. With no fold
|
|
1968
|
+
* control it is centred over the compact column; beside the fold control it
|
|
1969
|
+
* is the second of the pair (above), a step after the control, which is half
|
|
1970
|
+
* the column and half the step in. Full, the name follows it; compact, the
|
|
1971
|
+
* name is not drawn (the link keeps it as its name and title), and the
|
|
1972
|
+
* lockup's end inset is given up, so the mark is all the column holds.
|
|
1877
1973
|
*/
|
|
1878
|
-
.crewlet-app-shell--foldable .crewlet-app-shell__rail-head > .crewlet-brand,
|
|
1879
1974
|
.crewlet-app-shell[data-rail='compact'] .crewlet-app-shell__rail-head > .crewlet-brand {
|
|
1880
1975
|
padding-left: calc((var(--size-shell-rail-compact) - var(--crewlet-brand-mark)) / 2);
|
|
1976
|
+
padding-right: 0;
|
|
1977
|
+
}
|
|
1978
|
+
|
|
1979
|
+
.crewlet-app-shell--foldable[data-rail] .crewlet-app-shell__rail-head > .crewlet-brand {
|
|
1980
|
+
padding-left: calc((var(--size-shell-rail-compact) + var(--spacing-1)) / 2);
|
|
1881
1981
|
}
|
|
1882
1982
|
|
|
1883
1983
|
.crewlet-app-shell[data-rail='compact'] .crewlet-brand__name,
|
|
@@ -1886,30 +1986,16 @@
|
|
|
1886
1986
|
}
|
|
1887
1987
|
|
|
1888
1988
|
/*
|
|
1889
|
-
*
|
|
1890
|
-
*
|
|
1891
|
-
*
|
|
1892
|
-
*
|
|
1989
|
+
* COMPACT, THE STATUS HAS A ROW OF ITS OWN under the mark, a small control
|
|
1990
|
+
* step tall, its dot and its count centred in the column: the first thing
|
|
1991
|
+
* under the head, before the places, where the fold control stood before it
|
|
1992
|
+
* moved to the corner.
|
|
1893
1993
|
*/
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
}
|
|
1900
|
-
|
|
1901
|
-
.crewlet-app-shell--foldable[data-rail='full'] .crewlet-app-shell__rail-search {
|
|
1902
|
-
position: sticky;
|
|
1903
|
-
top: 0;
|
|
1904
|
-
z-index: 1;
|
|
1905
|
-
padding-left: calc((var(--size-shell-rail-compact) + var(--size-control-sm)) / 2 + var(--spacing-2));
|
|
1906
|
-
background: var(--color-surface-frame);
|
|
1907
|
-
}
|
|
1908
|
-
|
|
1909
|
-
/* COMPACT, THE FOLD CONTROL HAS A ROW OF ITS OWN under the mark, which the
|
|
1910
|
-
head leaves room for, and the column of tiles starts under it. */
|
|
1911
|
-
.crewlet-app-shell--foldable[data-rail='compact'] .crewlet-app-shell__rail-head {
|
|
1912
|
-
margin-bottom: var(--size-control-sm);
|
|
1994
|
+
.crewlet-app-shell[data-rail='compact'] .crewlet-app-shell__rail-inner > .crewlet-app-shell__rail-status {
|
|
1995
|
+
justify-content: center;
|
|
1996
|
+
min-width: 0;
|
|
1997
|
+
min-height: var(--size-control-sm);
|
|
1998
|
+
margin: 0;
|
|
1913
1999
|
}
|
|
1914
2000
|
|
|
1915
2001
|
.crewlet-app-shell[data-rail='compact'] .crewlet-app-shell__rail-body {
|
|
@@ -1919,7 +2005,7 @@
|
|
|
1919
2005
|
|
|
1920
2006
|
/*
|
|
1921
2007
|
* The compact foot: what the full foot holds, centred in the column, a step
|
|
1922
|
-
* apart:
|
|
2008
|
+
* apart: a Settings tile, the reader's face.
|
|
1923
2009
|
*/
|
|
1924
2010
|
.crewlet-app-shell[data-rail='compact'] .crewlet-app-shell__rail-foot {
|
|
1925
2011
|
align-items: center;
|
|
@@ -1931,15 +2017,93 @@
|
|
|
1931
2017
|
align-self: stretch;
|
|
1932
2018
|
}
|
|
1933
2019
|
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
2020
|
+
/*
|
|
2021
|
+
* THE COMPACT FACE IS CENTRED ON THE TILES' LINE. It gives up the full row's
|
|
2022
|
+
* badge column and the step after it (above): kept, the step stood the face
|
|
2023
|
+
* 4px left of the column's centre, in a box 8px wider than the face, so the
|
|
2024
|
+
* face sat off the line every tile above it is centred on.
|
|
2025
|
+
*/
|
|
2026
|
+
.crewlet-app-shell__rail-foot .crewlet-account-row--compact .crewlet-account-row__avatar {
|
|
2027
|
+
width: auto;
|
|
2028
|
+
margin-inline-end: 0;
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
/*
|
|
2032
|
+
* THE RAIL'S MOTION (railMotion.ts). The rail's width eases between the two
|
|
2033
|
+
* shapes on the slow step with the emphasized curve, the motion a
|
|
2034
|
+
* `DockColumn` opens and closes by, so a column of the frame and a column of
|
|
2035
|
+
* a screen move as one. What the rail holds keeps the width of the shape
|
|
2036
|
+
* drawn, so the moving edge clips the words rather than squeezing them.
|
|
2037
|
+
*
|
|
2038
|
+
* FOLDING, the full rail stays drawn, inert, while the edge narrows to the
|
|
2039
|
+
* compact column, and its words fade out on the base step; the compact column
|
|
2040
|
+
* is drawn when the rail's motion has ended, and fades in on the fast step.
|
|
2041
|
+
* UNFOLDING, the full rail is drawn at once and fades in while the edge
|
|
2042
|
+
* uncovers it. The brand's mark and the fold control are in the same place in
|
|
2043
|
+
* both shapes, so neither fades.
|
|
2044
|
+
*
|
|
2045
|
+
* THE WORDS LEAVE BY A TRANSITION and arrive by keyframes. A fold takes their
|
|
2046
|
+
* opacity to nothing; a fold pressed again mid way (`reverse`) declares
|
|
2047
|
+
* nothing of its own, so the same transition takes the opacity back from
|
|
2048
|
+
* wherever it had reached. Faded out by keyframes instead, a reversal could
|
|
2049
|
+
* only start an entrance from nothing, and the words blinked out and back.
|
|
2050
|
+
* The transition is declared only while the rail moves, so nothing else that
|
|
2051
|
+
* sets these parts' opacity is eased.
|
|
2052
|
+
*/
|
|
2053
|
+
.crewlet-app-shell[data-rail-motion='fold'] > .crewlet-app-shell__rail {
|
|
2054
|
+
width: var(--size-shell-rail-compact);
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
/* Two names for one entrance, so an unfold pressed while the compact column
|
|
2058
|
+
is still arriving starts the full rail's entrance afresh. */
|
|
2059
|
+
@keyframes crewlet-app-shell-rail-unfold {
|
|
2060
|
+
from {
|
|
2061
|
+
opacity: 0;
|
|
2062
|
+
}
|
|
2063
|
+
}
|
|
2064
|
+
|
|
2065
|
+
@keyframes crewlet-app-shell-rail-settle {
|
|
2066
|
+
from {
|
|
2067
|
+
opacity: 0;
|
|
2068
|
+
}
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-body,
|
|
2072
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-foot,
|
|
2073
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-status,
|
|
2074
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-head .crewlet-brand__name,
|
|
2075
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-head .crewlet-brand__context {
|
|
2076
|
+
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
.crewlet-app-shell[data-rail-motion='fold'] .crewlet-app-shell__rail-body,
|
|
2080
|
+
.crewlet-app-shell[data-rail-motion='fold'] .crewlet-app-shell__rail-foot,
|
|
2081
|
+
.crewlet-app-shell[data-rail-motion='fold'] .crewlet-app-shell__rail-status,
|
|
2082
|
+
.crewlet-app-shell[data-rail-motion='fold'] .crewlet-app-shell__rail-head .crewlet-brand__name,
|
|
2083
|
+
.crewlet-app-shell[data-rail-motion='fold'] .crewlet-app-shell__rail-head .crewlet-brand__context {
|
|
2084
|
+
opacity: 0;
|
|
2085
|
+
}
|
|
2086
|
+
|
|
2087
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-body,
|
|
2088
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-foot,
|
|
2089
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-status,
|
|
2090
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-head .crewlet-brand__name,
|
|
2091
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-head .crewlet-brand__context {
|
|
2092
|
+
animation: crewlet-app-shell-rail-unfold var(--motion-duration-slow) var(--motion-easing-out);
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-body,
|
|
2096
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-foot,
|
|
2097
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-status {
|
|
2098
|
+
animation: crewlet-app-shell-rail-settle var(--motion-duration-fast) var(--motion-easing-out);
|
|
1938
2099
|
}
|
|
1939
2100
|
|
|
1940
2101
|
@media (width < 1024px) {
|
|
1941
2102
|
.crewlet-app-shell {
|
|
1942
2103
|
--crewlet-app-shell-beside: 0px;
|
|
2104
|
+
/* 16px: the content's 12px stood every page's first line 4px left of
|
|
2105
|
+
the bar's title and the controls over it. */
|
|
2106
|
+
--crewlet-app-shell-inset: var(--spacing-4);
|
|
1943
2107
|
grid-template-columns: minmax(0, 1fr);
|
|
1944
2108
|
}
|
|
1945
2109
|
|
|
@@ -1947,7 +2111,7 @@
|
|
|
1947
2111
|
step is still a column; the rail is a drawer here and takes no track. */
|
|
1948
2112
|
.crewlet-app-shell[data-aside='column'],
|
|
1949
2113
|
.crewlet-app-shell--no-rail[data-aside='column'] {
|
|
1950
|
-
grid-template-columns: minmax(
|
|
2114
|
+
grid-template-columns: minmax(var(--crewlet-app-shell-sheet-floor), 1fr) var(--crewlet-app-shell-aside-track);
|
|
1951
2115
|
}
|
|
1952
2116
|
|
|
1953
2117
|
.crewlet-app-shell--no-rail {
|
|
@@ -2012,22 +2176,18 @@
|
|
|
2012
2176
|
transition: transform var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
2013
2177
|
}
|
|
2014
2178
|
|
|
2015
|
-
|
|
2016
|
-
|
|
2179
|
+
/* The drawer never changes shape, and on a window narrower than the rail
|
|
2180
|
+
it is the window's width: its content fills it rather than being cut. */
|
|
2181
|
+
.crewlet-app-shell__rail-inner {
|
|
2182
|
+
width: auto;
|
|
2017
2183
|
}
|
|
2018
2184
|
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
content take it together. */
|
|
2022
|
-
.crewlet-app-shell__topbar {
|
|
2023
|
-
padding: 0 calc(var(--spacing-4) + var(--crewlet-app-shell-gutter, 0px)) 0 var(--spacing-4);
|
|
2185
|
+
.crewlet-app-shell__toggle {
|
|
2186
|
+
display: inline-flex;
|
|
2024
2187
|
}
|
|
2025
2188
|
|
|
2026
2189
|
.crewlet-app-shell__content {
|
|
2027
2190
|
--crewlet-app-shell-content-end: var(--spacing-9);
|
|
2028
|
-
|
|
2029
|
-
padding: var(--spacing-4) var(--spacing-4);
|
|
2030
|
-
padding-bottom: var(--crewlet-app-shell-content-end);
|
|
2031
2191
|
}
|
|
2032
2192
|
}
|
|
2033
2193
|
|
|
@@ -2046,6 +2206,27 @@
|
|
|
2046
2206
|
.crewlet-app-shell__aside[data-shape='sheet'] {
|
|
2047
2207
|
animation: none;
|
|
2048
2208
|
}
|
|
2209
|
+
|
|
2210
|
+
/* Under reduced motion the shell draws the new shape at once
|
|
2211
|
+
(`usePresence`), so no phase starts; these hold even if one did. */
|
|
2212
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-body,
|
|
2213
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-foot,
|
|
2214
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-status,
|
|
2215
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-head .crewlet-brand__name,
|
|
2216
|
+
.crewlet-app-shell[data-rail-motion] .crewlet-app-shell__rail-head .crewlet-brand__context {
|
|
2217
|
+
transition: none;
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-body,
|
|
2221
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-foot,
|
|
2222
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-status,
|
|
2223
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-head .crewlet-brand__name,
|
|
2224
|
+
.crewlet-app-shell[data-rail-motion='unfold'] .crewlet-app-shell__rail-head .crewlet-brand__context,
|
|
2225
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-body,
|
|
2226
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-foot,
|
|
2227
|
+
.crewlet-app-shell[data-rail-motion='folded'] .crewlet-app-shell__rail-status {
|
|
2228
|
+
animation: none;
|
|
2229
|
+
}
|
|
2049
2230
|
}
|
|
2050
2231
|
|
|
2051
2232
|
/* ── the account row ───────────────────────────────────────────────────── */
|
|
@@ -4344,7 +4525,7 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
4344
4525
|
}
|
|
4345
4526
|
|
|
4346
4527
|
|
|
4347
|
-
/* ArtifactKinds-
|
|
4528
|
+
/* ArtifactKinds-27TE3KJL.css */
|
|
4348
4529
|
/*
|
|
4349
4530
|
* A kind's colours, set once per kind on `--crewlet-kind-*` by its class
|
|
4350
4531
|
* (`crewlet-kind--<kind>`): the hue, its Fill and Line steps, the ink a
|
|
@@ -4356,13 +4537,13 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
4356
4537
|
* its own, imported by each surface that tints, because the glyph's module
|
|
4357
4538
|
* carries no stylesheet (a frame that draws one glyph takes nothing else).
|
|
4358
4539
|
*/
|
|
4359
|
-
.crewlet-kind--doc { --crewlet-kind-hue: var(--color-artifact-kind-doc); --crewlet-kind-fill: var(--color-artifact-kind-doc-fill); --crewlet-kind-line: var(--color-artifact-kind-doc-line); --crewlet-kind-ink: var(--color-artifact-kind-doc-ink); --crewlet-kind-ground: var(--color-artifact-kind-doc-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-doc-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-doc-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-doc-glow); }
|
|
4360
|
-
.crewlet-kind--slides { --crewlet-kind-hue: var(--color-artifact-kind-slides); --crewlet-kind-fill: var(--color-artifact-kind-slides-fill); --crewlet-kind-line: var(--color-artifact-kind-slides-line); --crewlet-kind-ink: var(--color-artifact-kind-slides-ink); --crewlet-kind-ground: var(--color-artifact-kind-slides-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-slides-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-slides-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-slides-glow); }
|
|
4361
|
-
.crewlet-kind--design { --crewlet-kind-hue: var(--color-artifact-kind-design); --crewlet-kind-fill: var(--color-artifact-kind-design-fill); --crewlet-kind-line: var(--color-artifact-kind-design-line); --crewlet-kind-ink: var(--color-artifact-kind-design-ink); --crewlet-kind-ground: var(--color-artifact-kind-design-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-design-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-design-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-design-glow); }
|
|
4362
|
-
.crewlet-kind--dashboard { --crewlet-kind-hue: var(--color-artifact-kind-dashboard); --crewlet-kind-fill: var(--color-artifact-kind-dashboard-fill); --crewlet-kind-line: var(--color-artifact-kind-dashboard-line); --crewlet-kind-ink: var(--color-artifact-kind-dashboard-ink); --crewlet-kind-ground: var(--color-artifact-kind-dashboard-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-dashboard-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-dashboard-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-dashboard-glow); }
|
|
4363
|
-
.crewlet-kind--html { --crewlet-kind-hue: var(--color-artifact-kind-html); --crewlet-kind-fill: var(--color-artifact-kind-html-fill); --crewlet-kind-line: var(--color-artifact-kind-html-line); --crewlet-kind-ink: var(--color-artifact-kind-html-ink); --crewlet-kind-ground: var(--color-artifact-kind-html-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-html-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-html-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-html-glow); }
|
|
4364
|
-
.crewlet-kind--brand { --crewlet-kind-hue: var(--color-artifact-kind-brand); --crewlet-kind-fill: var(--color-artifact-kind-brand-fill); --crewlet-kind-line: var(--color-artifact-kind-brand-line); --crewlet-kind-ink: var(--color-artifact-kind-brand-ink); --crewlet-kind-ground: var(--color-artifact-kind-brand-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-brand-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-brand-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-brand-glow); }
|
|
4365
|
-
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); --crewlet-kind-ground: var(--color-artifact-kind-sheet-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-sheet-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-sheet-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-sheet-glow); }
|
|
4540
|
+
.crewlet-kind--doc { --crewlet-kind-hue: var(--color-artifact-kind-doc); --crewlet-kind-fill: var(--color-artifact-kind-doc-fill); --crewlet-kind-line: var(--color-artifact-kind-doc-line); --crewlet-kind-ink: var(--color-artifact-kind-doc-ink); --crewlet-kind-ground: var(--color-artifact-kind-doc-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-doc-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-doc-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-doc-glow); --crewlet-kind-edge: var(--color-artifact-kind-doc-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-doc-edge-strong); }
|
|
4541
|
+
.crewlet-kind--slides { --crewlet-kind-hue: var(--color-artifact-kind-slides); --crewlet-kind-fill: var(--color-artifact-kind-slides-fill); --crewlet-kind-line: var(--color-artifact-kind-slides-line); --crewlet-kind-ink: var(--color-artifact-kind-slides-ink); --crewlet-kind-ground: var(--color-artifact-kind-slides-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-slides-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-slides-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-slides-glow); --crewlet-kind-edge: var(--color-artifact-kind-slides-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-slides-edge-strong); }
|
|
4542
|
+
.crewlet-kind--design { --crewlet-kind-hue: var(--color-artifact-kind-design); --crewlet-kind-fill: var(--color-artifact-kind-design-fill); --crewlet-kind-line: var(--color-artifact-kind-design-line); --crewlet-kind-ink: var(--color-artifact-kind-design-ink); --crewlet-kind-ground: var(--color-artifact-kind-design-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-design-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-design-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-design-glow); --crewlet-kind-edge: var(--color-artifact-kind-design-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-design-edge-strong); }
|
|
4543
|
+
.crewlet-kind--dashboard { --crewlet-kind-hue: var(--color-artifact-kind-dashboard); --crewlet-kind-fill: var(--color-artifact-kind-dashboard-fill); --crewlet-kind-line: var(--color-artifact-kind-dashboard-line); --crewlet-kind-ink: var(--color-artifact-kind-dashboard-ink); --crewlet-kind-ground: var(--color-artifact-kind-dashboard-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-dashboard-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-dashboard-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-dashboard-glow); --crewlet-kind-edge: var(--color-artifact-kind-dashboard-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-dashboard-edge-strong); }
|
|
4544
|
+
.crewlet-kind--html { --crewlet-kind-hue: var(--color-artifact-kind-html); --crewlet-kind-fill: var(--color-artifact-kind-html-fill); --crewlet-kind-line: var(--color-artifact-kind-html-line); --crewlet-kind-ink: var(--color-artifact-kind-html-ink); --crewlet-kind-ground: var(--color-artifact-kind-html-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-html-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-html-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-html-glow); --crewlet-kind-edge: var(--color-artifact-kind-html-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-html-edge-strong); }
|
|
4545
|
+
.crewlet-kind--brand { --crewlet-kind-hue: var(--color-artifact-kind-brand); --crewlet-kind-fill: var(--color-artifact-kind-brand-fill); --crewlet-kind-line: var(--color-artifact-kind-brand-line); --crewlet-kind-ink: var(--color-artifact-kind-brand-ink); --crewlet-kind-ground: var(--color-artifact-kind-brand-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-brand-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-brand-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-brand-glow); --crewlet-kind-edge: var(--color-artifact-kind-brand-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-brand-edge-strong); }
|
|
4546
|
+
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); --crewlet-kind-ground: var(--color-artifact-kind-sheet-ground); --crewlet-kind-ground-strong: var(--color-artifact-kind-sheet-ground-strong); --crewlet-kind-ground-end: var(--color-artifact-kind-sheet-ground-end); --crewlet-kind-glow: var(--color-artifact-kind-sheet-glow); --crewlet-kind-edge: var(--color-artifact-kind-sheet-edge); --crewlet-kind-edge-strong: var(--color-artifact-kind-sheet-edge-strong); }
|
|
4366
4547
|
|
|
4367
4548
|
|
|
4368
4549
|
/* ArtifactMakeRow-6UX2LTF7.css */
|
|
@@ -8557,7 +8738,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8557
8738
|
}
|
|
8558
8739
|
|
|
8559
8740
|
|
|
8560
|
-
/* CatalogTile-
|
|
8741
|
+
/* CatalogTile-TMOSGSV3.css */
|
|
8561
8742
|
/*
|
|
8562
8743
|
* CatalogTile: mark, name and state, one sentence, and a foot with a quiet
|
|
8563
8744
|
* fact and one action.
|
|
@@ -8639,9 +8820,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8639
8820
|
overflow-wrap: anywhere;
|
|
8640
8821
|
}
|
|
8641
8822
|
|
|
8642
|
-
/*
|
|
8643
|
-
|
|
8644
|
-
and on a 16px page "Connected" stood
|
|
8823
|
+
/* THE STATE, the tone's dot and its word, at the caption step the fact
|
|
8824
|
+
beside it takes, so a compact tile's line reads name, state, fact at one
|
|
8825
|
+
height. It inherited the page's size, and on a 16px page "Connected" stood
|
|
8826
|
+
taller than the name before it. */
|
|
8645
8827
|
.crewlet-catalog-tile__status {
|
|
8646
8828
|
display: inline-flex;
|
|
8647
8829
|
font-size: var(--font-size-xs);
|
|
@@ -18911,7 +19093,7 @@ svg.crewlet-datetime__chevron {
|
|
|
18911
19093
|
}
|
|
18912
19094
|
|
|
18913
19095
|
|
|
18914
|
-
/* DirectoryList-
|
|
19096
|
+
/* DirectoryList-IXQIMNFS.css */
|
|
18915
19097
|
/*
|
|
18916
19098
|
* DirectoryList: named groups of links, each line a mark, a label and a state,
|
|
18917
19099
|
* and one foot that holds the bottom (DirectoryList.tsx).
|
|
@@ -18931,7 +19113,12 @@ svg.crewlet-datetime__chevron {
|
|
|
18931
19113
|
font-family: var(--font-family-sans);
|
|
18932
19114
|
}
|
|
18933
19115
|
|
|
18934
|
-
/* The groups take the room and scroll on their own, so the foot stays put.
|
|
19116
|
+
/* The groups take the room and scroll on their own, so the foot stays put.
|
|
19117
|
+
|
|
19118
|
+
THEIR INSET IS INSIDE THE SCROLLER. The gutter is reserved whether or not
|
|
19119
|
+
they scroll, and the lines end a step before it: a line's state pill stood
|
|
19120
|
+
against the scrollbar, and moved by its width when the list grew long
|
|
19121
|
+
enough to scroll. */
|
|
18935
19122
|
.crewlet-directory__groups {
|
|
18936
19123
|
display: flex;
|
|
18937
19124
|
flex: 1 1 auto;
|
|
@@ -18940,7 +19127,9 @@ svg.crewlet-datetime__chevron {
|
|
|
18940
19127
|
under it rather than a band between two runs of them. */
|
|
18941
19128
|
gap: var(--spacing-3);
|
|
18942
19129
|
min-height: 0;
|
|
19130
|
+
padding-right: var(--spacing-2);
|
|
18943
19131
|
overflow-y: auto;
|
|
19132
|
+
scrollbar-gutter: stable;
|
|
18944
19133
|
}
|
|
18945
19134
|
|
|
18946
19135
|
.crewlet-directory__group {
|
|
@@ -19563,6 +19752,70 @@ svg.crewlet-datetime__chevron {
|
|
|
19563
19752
|
}
|
|
19564
19753
|
|
|
19565
19754
|
|
|
19755
|
+
/* DockColumn-SMJCXHS4.css */
|
|
19756
|
+
/*
|
|
19757
|
+
* A column docked beside the content (DockColumn.tsx).
|
|
19758
|
+
*
|
|
19759
|
+
* THE COLUMN EASES ITS WIDTH between none and its panel's, on the slow step
|
|
19760
|
+
* with the emphasized curve: the motion the application rail folds by,
|
|
19761
|
+
* so a column of the frame and a column of a screen open and close as one
|
|
19762
|
+
* movement. The host gives it an `auto` track, so its width is the track.
|
|
19763
|
+
* Clipped rather than hidden, so it is never a scroll container a focus or a
|
|
19764
|
+
* scrollIntoView could scroll.
|
|
19765
|
+
*
|
|
19766
|
+
* THE PANEL KEEPS ITS WIDTH and is held to the column's edge that faces the
|
|
19767
|
+
* content: before the content (`start`) it is held to the column's end, so
|
|
19768
|
+
* the moving edge uncovers it from the start edge, and after the content
|
|
19769
|
+
* (`end`) the other way round.
|
|
19770
|
+
*
|
|
19771
|
+
* Tokens only. The width is the component's own variable, set from the
|
|
19772
|
+
* `width` prop, so the column and the panel read one value.
|
|
19773
|
+
*/
|
|
19774
|
+
|
|
19775
|
+
.crewlet-dock-column {
|
|
19776
|
+
display: flex;
|
|
19777
|
+
justify-content: flex-end;
|
|
19778
|
+
width: 0;
|
|
19779
|
+
min-width: 0;
|
|
19780
|
+
min-height: 0;
|
|
19781
|
+
overflow: clip;
|
|
19782
|
+
transition: width var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
19783
|
+
}
|
|
19784
|
+
|
|
19785
|
+
.crewlet-dock-column[data-side='end'] {
|
|
19786
|
+
justify-content: flex-start;
|
|
19787
|
+
}
|
|
19788
|
+
|
|
19789
|
+
.crewlet-dock-column[data-open] {
|
|
19790
|
+
width: var(--crewlet-dock-column-width);
|
|
19791
|
+
}
|
|
19792
|
+
|
|
19793
|
+
.crewlet-dock-column__panel {
|
|
19794
|
+
display: flex;
|
|
19795
|
+
flex: none;
|
|
19796
|
+
flex-direction: column;
|
|
19797
|
+
box-sizing: border-box;
|
|
19798
|
+
width: var(--crewlet-dock-column-width);
|
|
19799
|
+
min-height: 0;
|
|
19800
|
+
background: var(--crewlet-dock-column-ground, transparent);
|
|
19801
|
+
}
|
|
19802
|
+
|
|
19803
|
+
/* The hairline on the panel's edge that faces the content. */
|
|
19804
|
+
.crewlet-dock-column--divider[data-side='start'] > .crewlet-dock-column__panel {
|
|
19805
|
+
border-inline-end: 1px solid var(--color-border-default);
|
|
19806
|
+
}
|
|
19807
|
+
|
|
19808
|
+
.crewlet-dock-column--divider[data-side='end'] > .crewlet-dock-column__panel {
|
|
19809
|
+
border-inline-start: 1px solid var(--color-border-default);
|
|
19810
|
+
}
|
|
19811
|
+
|
|
19812
|
+
@media (prefers-reduced-motion: reduce) {
|
|
19813
|
+
.crewlet-dock-column {
|
|
19814
|
+
transition: none;
|
|
19815
|
+
}
|
|
19816
|
+
}
|
|
19817
|
+
|
|
19818
|
+
|
|
19566
19819
|
/* Document-M6JYGLWV.css */
|
|
19567
19820
|
/*
|
|
19568
19821
|
* Rendered markdown, set as a document (Document.tsx).
|
|
@@ -22111,7 +22364,7 @@ a.crewlet-icon-btn {
|
|
|
22111
22364
|
}
|
|
22112
22365
|
|
|
22113
22366
|
|
|
22114
|
-
/* InboxList-
|
|
22367
|
+
/* InboxList-X5Q5WWAI.css */
|
|
22115
22368
|
/*
|
|
22116
22369
|
* The inbox's column: groups of rows, each row a control with the task it is
|
|
22117
22370
|
* about under it, and the quiet toggles at the end.
|
|
@@ -22140,6 +22393,9 @@ a.crewlet-icon-btn {
|
|
|
22140
22393
|
|
|
22141
22394
|
/* The heading's own line box is the label's, so the label sits where it is drawn. */
|
|
22142
22395
|
.crewlet-inbox-list__label {
|
|
22396
|
+
/* The arrival's wash stands behind the label's words, inside it. */
|
|
22397
|
+
position: relative;
|
|
22398
|
+
isolation: isolate;
|
|
22143
22399
|
margin: 0;
|
|
22144
22400
|
padding: var(--spacing-3) var(--spacing-2) var(--spacing-1);
|
|
22145
22401
|
font: inherit;
|
|
@@ -22147,6 +22403,32 @@ a.crewlet-icon-btn {
|
|
|
22147
22403
|
line-height: var(--font-line-height-snug);
|
|
22148
22404
|
}
|
|
22149
22405
|
|
|
22406
|
+
/*
|
|
22407
|
+
* A ROW ARRIVED: a wash of the accent that fades back to the ground, over the
|
|
22408
|
+
* row itself, or over a group's label and count where the row landed in a
|
|
22409
|
+
* closed group. The row's keyframes name no last step, so the wash returns
|
|
22410
|
+
* to whatever the row draws of its own (hover, selected).
|
|
22411
|
+
*/
|
|
22412
|
+
.crewlet-inbox-list__arrival {
|
|
22413
|
+
position: absolute;
|
|
22414
|
+
inset: 0;
|
|
22415
|
+
z-index: -1;
|
|
22416
|
+
border-radius: var(--radius-xs);
|
|
22417
|
+
pointer-events: none;
|
|
22418
|
+
animation: crewlet-inbox-arrive calc(var(--motion-duration-moderate) * 8) var(--motion-easing-out) both;
|
|
22419
|
+
}
|
|
22420
|
+
|
|
22421
|
+
.crewlet-inbox-row--arrived {
|
|
22422
|
+
animation: crewlet-inbox-arrive calc(var(--motion-duration-moderate) * 8) var(--motion-easing-out);
|
|
22423
|
+
}
|
|
22424
|
+
|
|
22425
|
+
@keyframes crewlet-inbox-arrive {
|
|
22426
|
+
0%,
|
|
22427
|
+
40% {
|
|
22428
|
+
background: var(--color-brand-accent-soft-strong);
|
|
22429
|
+
}
|
|
22430
|
+
}
|
|
22431
|
+
|
|
22150
22432
|
/* The count after a label, in the quiet ink and the label's own register. */
|
|
22151
22433
|
.crewlet-inbox-list__count {
|
|
22152
22434
|
margin-inline-start: var(--spacing-1);
|
|
@@ -22221,12 +22503,38 @@ a.crewlet-icon-btn {
|
|
|
22221
22503
|
* a selected row takes no hover on top of it: both are a background on the
|
|
22222
22504
|
* same element, and a composite of the two is a colour nothing has measured.
|
|
22223
22505
|
*/
|
|
22506
|
+
/* ONE TRACK, so a leaving row can close its height (below). */
|
|
22224
22507
|
.crewlet-inbox-row {
|
|
22508
|
+
display: grid;
|
|
22509
|
+
grid-template-rows: 1fr;
|
|
22225
22510
|
min-width: 0;
|
|
22226
22511
|
border-radius: var(--radius-md);
|
|
22227
22512
|
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
22228
22513
|
}
|
|
22229
22514
|
|
|
22515
|
+
.crewlet-inbox-row__body {
|
|
22516
|
+
min-width: 0;
|
|
22517
|
+
min-height: 0;
|
|
22518
|
+
}
|
|
22519
|
+
|
|
22520
|
+
/*
|
|
22521
|
+
* A ROW LEAVING closes its one track to nothing and fades, on the slow step
|
|
22522
|
+
* with the emphasized curve, the motion a column opens and shuts by, so the
|
|
22523
|
+
* rows under it slide up into its place. The shell's presence waits on the
|
|
22524
|
+
* track's transition (`INBOX_ROW_LEAVE`), and the row is inert all the while.
|
|
22525
|
+
*/
|
|
22526
|
+
.crewlet-inbox-row--leaving {
|
|
22527
|
+
grid-template-rows: 0fr;
|
|
22528
|
+
opacity: 0;
|
|
22529
|
+
transition:
|
|
22530
|
+
grid-template-rows var(--motion-duration-slow) var(--motion-easing-emphasized),
|
|
22531
|
+
opacity var(--motion-duration-moderate) var(--motion-easing-out);
|
|
22532
|
+
}
|
|
22533
|
+
|
|
22534
|
+
.crewlet-inbox-row--leaving .crewlet-inbox-row__body {
|
|
22535
|
+
overflow: hidden;
|
|
22536
|
+
}
|
|
22537
|
+
|
|
22230
22538
|
.crewlet-inbox-row:hover {
|
|
22231
22539
|
background: var(--color-surface-hover);
|
|
22232
22540
|
}
|
|
@@ -22463,7 +22771,7 @@ a.crewlet-icon-btn {
|
|
|
22463
22771
|
}
|
|
22464
22772
|
|
|
22465
22773
|
/* A row with no leading slot: the words start at the control's own pad, and so does the task. */
|
|
22466
|
-
.crewlet-inbox-row:not(:has(.crewlet-inbox-row__leading))
|
|
22774
|
+
.crewlet-inbox-row:not(:has(.crewlet-inbox-row__leading)) .crewlet-inbox-row__aside {
|
|
22467
22775
|
padding-inline-start: var(--spacing-2);
|
|
22468
22776
|
}
|
|
22469
22777
|
|
|
@@ -22499,10 +22807,16 @@ a.crewlet-icon-btn {
|
|
|
22499
22807
|
}
|
|
22500
22808
|
|
|
22501
22809
|
@media (prefers-reduced-motion: reduce) {
|
|
22502
|
-
.crewlet-inbox-row
|
|
22810
|
+
.crewlet-inbox-row,
|
|
22811
|
+
.crewlet-inbox-row--leaving {
|
|
22503
22812
|
transition: none;
|
|
22504
22813
|
}
|
|
22505
22814
|
|
|
22815
|
+
.crewlet-inbox-row--arrived,
|
|
22816
|
+
.crewlet-inbox-list__arrival {
|
|
22817
|
+
animation: none;
|
|
22818
|
+
}
|
|
22819
|
+
|
|
22506
22820
|
.crewlet-inbox-list__toggle,
|
|
22507
22821
|
.crewlet-inbox-list__chevron {
|
|
22508
22822
|
transition: none;
|
|
@@ -24725,7 +25039,7 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
|
|
|
24725
25039
|
}
|
|
24726
25040
|
|
|
24727
25041
|
|
|
24728
|
-
/* ListDetail-
|
|
25042
|
+
/* ListDetail-JGESKTR7.css */
|
|
24729
25043
|
/*
|
|
24730
25044
|
* ListDetail: a list beside the detail of what is chosen in it, each scrolling
|
|
24731
25045
|
* on its own in the height it is given, one pane where it is narrow
|
|
@@ -24738,6 +25052,17 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
|
|
|
24738
25052
|
* drew the detail 130px wide beside a 17rem list. The phone rule below is the
|
|
24739
25053
|
* one decision that stays the window's: on a phone the page scrolls as a
|
|
24740
25054
|
* whole rather than each pane on its own.
|
|
25055
|
+
*
|
|
25056
|
+
* ON A SCREEN THAT FILLS THE WINDOW, THE PANE THAT SCROLLS IS ITS OUTERMOST
|
|
25057
|
+
* BOX, and its inset is padding inside it. Standing directly in the fill
|
|
25058
|
+
* column, the ListDetail reaches past the column's end pad to the sheet's
|
|
25059
|
+
* edge (below), so the scrollbar is the sheet's last pixel; the detail then
|
|
25060
|
+
* reserves its scrollbar's gutter whether or not it scrolls, and keeps the
|
|
25061
|
+
* screen's side inset between its content and that gutter, so a trailing
|
|
25062
|
+
* control (a header's Disconnect, a tile's Open) never touches the scrollbar,
|
|
25063
|
+
* does not move when the detail grows long enough to scroll, and ends under
|
|
25064
|
+
* the bar's last control. Anywhere else (a scrolling or a flush screen, or
|
|
25065
|
+
* outside a shell) it is as wide as its box, with nothing reserved.
|
|
24741
25066
|
*/
|
|
24742
25067
|
|
|
24743
25068
|
/* THE HAIRLINE STANDS MIDWAY between the two panes: the list's inset before it
|
|
@@ -24745,6 +25070,9 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
|
|
|
24745
25070
|
the list than to the detail it divides it from; the two still add to 64. */
|
|
24746
25071
|
.crewlet-list-detail {
|
|
24747
25072
|
--crewlet-list-detail-gutter: var(--spacing-7);
|
|
25073
|
+
/* The inset at a scrolling pane's end: the screen's own side inset in a
|
|
25074
|
+
shell, so the page's two edges match. */
|
|
25075
|
+
--crewlet-list-detail-end: var(--crewlet-app-shell-inset, var(--spacing-5));
|
|
24748
25076
|
|
|
24749
25077
|
container: crewlet-list-detail / inline-size;
|
|
24750
25078
|
display: flex;
|
|
@@ -24755,6 +25083,21 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
|
|
|
24755
25083
|
min-height: 0;
|
|
24756
25084
|
}
|
|
24757
25085
|
|
|
25086
|
+
/* STANDING IN A FILL SCREEN'S COLUMN, IT TAKES THE COLUMN'S END PAD BACK: the
|
|
25087
|
+
inset and the scrollbar's width, which the shell publishes for exactly
|
|
25088
|
+
this (`--crewlet-app-shell-bleed-end`, AppShell.css). The detail keeps the
|
|
25089
|
+
same inset inside itself, and reserves its gutter, there and only there. */
|
|
25090
|
+
:where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content) > .crewlet-list-detail {
|
|
25091
|
+
margin-right: calc(var(--crewlet-app-shell-bleed-end, 0px) * -1);
|
|
25092
|
+
}
|
|
25093
|
+
|
|
25094
|
+
:where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content)
|
|
25095
|
+
> .crewlet-list-detail
|
|
25096
|
+
.crewlet-list-detail__detail {
|
|
25097
|
+
padding-right: var(--crewlet-list-detail-end);
|
|
25098
|
+
scrollbar-gutter: stable;
|
|
25099
|
+
}
|
|
25100
|
+
|
|
24758
25101
|
.crewlet-list-detail__panes {
|
|
24759
25102
|
display: grid;
|
|
24760
25103
|
flex: 1 1 auto;
|
|
@@ -24796,6 +25139,15 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
|
|
|
24796
25139
|
overflow-y: auto;
|
|
24797
25140
|
}
|
|
24798
25141
|
|
|
25142
|
+
/* The list is the pane that scrolls now, and takes the detail's end where
|
|
25143
|
+
the ListDetail reaches the sheet. */
|
|
25144
|
+
:where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content)
|
|
25145
|
+
> .crewlet-list-detail
|
|
25146
|
+
.crewlet-list-detail__list {
|
|
25147
|
+
padding-right: var(--crewlet-list-detail-end);
|
|
25148
|
+
scrollbar-gutter: stable;
|
|
25149
|
+
}
|
|
25150
|
+
|
|
24799
25151
|
.crewlet-list-detail--showing-list .crewlet-list-detail__detail,
|
|
24800
25152
|
.crewlet-list-detail--showing-detail .crewlet-list-detail__list {
|
|
24801
25153
|
display: none;
|
|
@@ -30925,7 +31277,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
30925
31277
|
}
|
|
30926
31278
|
|
|
30927
31279
|
|
|
30928
|
-
/* ReadingPane-
|
|
31280
|
+
/* ReadingPane-VFTRDPC5.css */
|
|
30929
31281
|
/*
|
|
30930
31282
|
* One item read in full, in one column.
|
|
30931
31283
|
*
|
|
@@ -30960,6 +31312,25 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
30960
31312
|
}
|
|
30961
31313
|
}
|
|
30962
31314
|
|
|
31315
|
+
/* A NEW ITEM PLAYS IN (`contentKey`): a short fade and rise, so the reader
|
|
31316
|
+
sees the pane move on rather than its words change under them. */
|
|
31317
|
+
.crewlet-reading-pane__column--entering {
|
|
31318
|
+
animation: crewlet-reading-pane-enter var(--motion-duration-moderate) var(--motion-easing-out);
|
|
31319
|
+
}
|
|
31320
|
+
|
|
31321
|
+
@keyframes crewlet-reading-pane-enter {
|
|
31322
|
+
from {
|
|
31323
|
+
opacity: 0;
|
|
31324
|
+
transform: translateY(var(--spacing-2));
|
|
31325
|
+
}
|
|
31326
|
+
}
|
|
31327
|
+
|
|
31328
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31329
|
+
.crewlet-reading-pane__column--entering {
|
|
31330
|
+
animation: none;
|
|
31331
|
+
}
|
|
31332
|
+
}
|
|
31333
|
+
|
|
30963
31334
|
/* ---- The byline -------------------------------------------------------- */
|
|
30964
31335
|
|
|
30965
31336
|
.crewlet-reading-pane__byline {
|
|
@@ -35989,7 +36360,7 @@ svg.crewlet-select__chevron {
|
|
|
35989
36360
|
}
|
|
35990
36361
|
|
|
35991
36362
|
|
|
35992
|
-
/* SidebarNav-
|
|
36363
|
+
/* SidebarNav-IKBKGXW4.css */
|
|
35993
36364
|
/*
|
|
35994
36365
|
* The rail's navigation.
|
|
35995
36366
|
*
|
|
@@ -36407,6 +36778,26 @@ svg.crewlet-select__chevron {
|
|
|
36407
36778
|
line-height: 1;
|
|
36408
36779
|
}
|
|
36409
36780
|
|
|
36781
|
+
/*
|
|
36782
|
+
* A QUIET BADGE keeps the pill, its size and its place at the row's end, and
|
|
36783
|
+
* takes the quiet count's grey: a neutral wash (`--color-fill-soft`, the
|
|
36784
|
+
* ground of a quiet label at rest) carrying the secondary ink, for work that
|
|
36785
|
+
* is the reader's own and waiting, but not calling. The secondary ink rather
|
|
36786
|
+
* than the count's tertiary, because on a wash over a hovered row the
|
|
36787
|
+
* tertiary measured 4.41:1 in light; it is the ink the compact rail's quiet
|
|
36788
|
+
* figure takes, so the two shapes draw the same grey. On the reader's own row
|
|
36789
|
+
* its ink lifts to the row's, as the count's does; the suite measures the
|
|
36790
|
+
* pair on every ground a row can have.
|
|
36791
|
+
*/
|
|
36792
|
+
.crewlet-nav-item__badge--quiet {
|
|
36793
|
+
background: var(--color-fill-soft);
|
|
36794
|
+
color: var(--color-text-secondary);
|
|
36795
|
+
}
|
|
36796
|
+
|
|
36797
|
+
.crewlet-nav-item__row[aria-current='page'] .crewlet-nav-item__badge--quiet {
|
|
36798
|
+
color: inherit;
|
|
36799
|
+
}
|
|
36800
|
+
|
|
36410
36801
|
/* Beside a count the badge is the second figure, not a second push to the
|
|
36411
36802
|
end: two auto margins would split the room between them and float the
|
|
36412
36803
|
count into the middle of the row. */
|