@crewlethq/ui 0.75.3 → 0.76.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 +15 -1
- package/dist/AgentHandoffPanel/index.js +4 -4
- package/dist/AppShell/index.js +3 -3
- package/dist/ArrangeList/index.js +4 -4
- package/dist/ArtifactBar/index.js +6 -6
- package/dist/ArtifactCard/index.js +4 -4
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/AttachmentChip/index.js +3 -3
- package/dist/AvatarPicker/index.js +7 -7
- package/dist/BriefCard/index.js +4 -4
- package/dist/Canvas/index.js +2 -2
- package/dist/CanvasBoard/index.js +4 -4
- package/dist/CanvasToolbar/index.js +3 -3
- package/dist/ChangeList/index.js +3 -3
- package/dist/Checkbox/index.js +3 -3
- package/dist/ChoiceButtons/ChoiceButtons.d.ts +10 -3
- package/dist/ChoiceButtons/index.js +1 -1
- package/dist/{ChoiceButtons-3MJQAHHA.css → ChoiceButtons-T3GG6VLG.css} +44 -48
- package/dist/ChoiceCards/ChoiceCards.d.ts +80 -0
- package/dist/ChoiceCards/index.d.ts +3 -0
- package/dist/ChoiceCards/index.js +3 -0
- package/dist/ChoiceCards-HAGJMK6Q.css +318 -0
- package/dist/ChoiceList/ChoiceList.d.ts +10 -1
- package/dist/ChoiceList/index.js +1 -1
- package/dist/{ChoiceList-Q772QLFX.css → ChoiceList-JN4PPNFW.css} +22 -1
- package/dist/ColorField/index.js +3 -3
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +3 -3
- package/dist/CommentThread/index.js +5 -5
- package/dist/Composer/index.js +3 -3
- package/dist/ConfirmField/index.js +3 -3
- package/dist/ContrastBadge/index.js +3 -3
- package/dist/ContrastHelp/index.js +5 -5
- package/dist/DataGrid/index.js +4 -4
- package/dist/DataTable/index.js +5 -5
- package/dist/DataView/index.js +8 -8
- package/dist/DatasetSource/index.js +3 -3
- package/dist/DateTimePicker/index.js +2 -2
- package/dist/DeepWorkCard/index.js +5 -5
- package/dist/DocTabsEditor/index.js +4 -4
- package/dist/EditingStatus/index.js +2 -2
- package/dist/{Editor-OLFAUSUA.js → Editor-BXOWAV46.js} +3 -3
- package/dist/EntityList/index.js +4 -4
- package/dist/HuePicker/index.js +6 -6
- package/dist/InlineEditor/index.js +3 -3
- package/dist/Input/index.js +2 -2
- package/dist/{Input-GEFFMKBS.css → Input-WSMB7JG2.css} +6 -1
- package/dist/LinkInterstitial/index.js +1 -1
- package/dist/ListInput/index.js +3 -3
- package/dist/LogoSlot/index.js +4 -4
- package/dist/MarkdownEditor/index.js +6 -6
- package/dist/Menu/index.js +2 -2
- package/dist/MergeConflicts/index.js +6 -6
- package/dist/Modal/index.js +1 -1
- package/dist/OpenInAppCard/index.js +5 -5
- package/dist/OrgTable/index.js +1 -1
- package/dist/PresenterView/index.js +1 -1
- package/dist/PricingCard/index.js +3 -3
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/ProposalCard/index.js +8 -8
- package/dist/RefusalCard/index.js +4 -4
- package/dist/ResultTableCard/index.js +4 -4
- package/dist/ReviewList/index.js +3 -3
- package/dist/RichEditor/index.js +1 -1
- package/dist/RunChip/index.js +3 -3
- package/dist/SegmentedControl/index.js +5 -5
- package/dist/SettingsTable/index.js +2 -2
- package/dist/SetupWizard/SetupWizard.d.ts +25 -7
- package/dist/SetupWizard/index.js +3 -3
- package/dist/{SetupWizard-WDOFFNIM.css → SetupWizard-2SUMQEWU.css} +126 -4
- package/dist/ShareDialog/index.js +2 -2
- package/dist/SheetColumnEditor/index.js +9 -9
- package/dist/SheetGrid/index.js +5 -5
- package/dist/SidePanel/index.js +1 -1
- package/dist/SlideFilmstrip/index.js +3 -3
- package/dist/StatusCard/index.js +3 -3
- package/dist/StatusDot/StatusDot.d.ts +7 -0
- package/dist/StatusDot/index.js +1 -1
- package/dist/{StatusDot-7OMCQCZF.css → StatusDot-FJND3CZY.css} +9 -2
- package/dist/Stepper/index.js +2 -2
- package/dist/{Stepper-32INSYF7.css → Stepper-YQBNYCIS.css} +31 -8
- package/dist/Switcher/index.js +3 -3
- package/dist/TableCells/index.js +3 -3
- package/dist/Tabs/index.js +4 -4
- package/dist/Tag/index.js +2 -2
- package/dist/TagsInput/index.js +4 -4
- package/dist/ThemeGallery/index.js +3 -3
- package/dist/ThemeSwitcher/index.js +6 -6
- package/dist/TimeRangePicker/index.js +7 -7
- package/dist/TimeWindowPicker/index.js +3 -3
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/TreeGrid/index.js +1 -1
- package/dist/ValueField/index.js +4 -4
- package/dist/VersionCompare/index.js +6 -6
- package/dist/{chunk-3N36CYTU.js → chunk-2PIH6JHJ.js} +1 -1
- package/dist/{chunk-HDF4OGVD.js → chunk-2STOSJT3.js} +3 -3
- package/dist/{chunk-P64MIA7C.js → chunk-3JXX5S3Z.js} +2 -2
- package/dist/{chunk-UHW7EXWQ.js → chunk-45M73G5A.js} +1 -1
- package/dist/{chunk-5JPID3YI.js → chunk-57AKYFML.js} +1 -1
- package/dist/{chunk-4KSCGXLJ.js → chunk-5BOFC5OP.js} +2 -2
- package/dist/{chunk-SAUIIBNA.js → chunk-5CEQ3HLH.js} +1 -1
- package/dist/{chunk-VLGGLLKH.js → chunk-624X3RVA.js} +1 -1
- package/dist/{chunk-LWFOX3PB.js → chunk-63GBSOLU.js} +1 -1
- package/dist/{chunk-IQQSMK4E.js → chunk-6EWNMSS4.js} +1 -1
- package/dist/{chunk-7IW3P6FH.js → chunk-6G6WHTC7.js} +1 -1
- package/dist/{chunk-JXJNX7QQ.js → chunk-6LXS3X7A.js} +1 -1
- package/dist/{chunk-NQABJAUY.js → chunk-6RW2MUTY.js} +15 -8
- package/dist/{chunk-ZD52GKKS.js → chunk-6THG44LI.js} +2 -2
- package/dist/{chunk-KWLH45YC.js → chunk-7PJFUQMY.js} +1 -1
- package/dist/{chunk-5M64E3HV.js → chunk-ADGNISEI.js} +2 -2
- package/dist/{chunk-WQRSZMN4.js → chunk-BBD7PTBG.js} +1 -1
- package/dist/{chunk-PYJLHHYF.js → chunk-BKXUZCZX.js} +1 -1
- package/dist/{chunk-6RTYHTT7.js → chunk-CFTBESST.js} +1 -1
- package/dist/{chunk-WIATRXEJ.js → chunk-CYQBDZ6M.js} +1 -1
- package/dist/{chunk-ZKIEOWR6.js → chunk-D7G2QGET.js} +1 -1
- package/dist/{chunk-K2RJO72E.js → chunk-DSMQTED5.js} +3 -3
- package/dist/{chunk-OXEWUAND.js → chunk-E35HYQMK.js} +1 -1
- package/dist/{chunk-DCQ2VTBB.js → chunk-FB3TCNQP.js} +2 -2
- package/dist/{chunk-ODAZIKZF.js → chunk-FQI62PIZ.js} +2 -2
- package/dist/{chunk-IU5J6BY5.js → chunk-GHQG4VZA.js} +3 -3
- package/dist/{chunk-PIAGTZY3.js → chunk-GPFYITOF.js} +1 -1
- package/dist/{chunk-R6K62EXV.js → chunk-H22SR76M.js} +1 -1
- package/dist/{chunk-IO374IX6.js → chunk-HQOEAUDJ.js} +1 -1
- package/dist/{chunk-HKSQ7QHF.js → chunk-HWPP22XG.js} +4 -4
- package/dist/{chunk-ILF6KVNK.js → chunk-HZDI2CCS.js} +2 -2
- package/dist/{chunk-ZSRRCXUD.js → chunk-I3G5FJ54.js} +1 -1
- package/dist/{chunk-5NFYTQK2.js → chunk-IPBSCJIZ.js} +3 -3
- package/dist/{chunk-GAT75MN4.js → chunk-IQMWMT4V.js} +2 -2
- package/dist/{chunk-GT2OG2XM.js → chunk-JMTBK55P.js} +2 -2
- package/dist/{chunk-VDIKDCNE.js → chunk-JQEXAH7G.js} +1 -1
- package/dist/{chunk-SQ7GYC4K.js → chunk-KL6A7JGH.js} +1 -1
- package/dist/{chunk-TQCSQRKQ.js → chunk-LCZULGMB.js} +1 -1
- package/dist/{chunk-EAR2F5OA.js → chunk-LMQG3VPG.js} +1 -1
- package/dist/chunk-MKFEVHSR.js +83 -0
- package/dist/{chunk-W7OJKHVR.js → chunk-MP7DGKB6.js} +1 -1
- package/dist/{chunk-DO4J4TBZ.js → chunk-NKBKQEKS.js} +1 -1
- package/dist/{chunk-USO73ZJM.js → chunk-OCGIQGYJ.js} +2 -2
- package/dist/{chunk-5U2CYMFU.js → chunk-OOLMTUCO.js} +1 -1
- package/dist/{chunk-YUHKRRWO.js → chunk-OWHETZIU.js} +1 -1
- package/dist/{chunk-4OX2WVXO.js → chunk-PMBJMNBX.js} +1 -1
- package/dist/{chunk-OXB45TG2.js → chunk-RIAPCEB5.js} +2 -2
- package/dist/{chunk-HJBHP66O.js → chunk-RJWO2PC5.js} +2 -2
- package/dist/{chunk-NTQPJJAN.js → chunk-RTMNULTL.js} +1 -1
- package/dist/{chunk-C3SCONKY.js → chunk-RVSNBUIU.js} +4 -2
- package/dist/{chunk-SRDZVY5M.js → chunk-SK5SLGZH.js} +1 -1
- package/dist/{chunk-CMTLQOJY.js → chunk-T24HBEU6.js} +1 -1
- package/dist/{chunk-EEVATVP5.js → chunk-TJIBTHWJ.js} +2 -2
- package/dist/{chunk-GAUBP247.js → chunk-TKUAGWNR.js} +1 -1
- package/dist/{chunk-HMOGLAXY.js → chunk-TPCBPGSB.js} +1 -1
- package/dist/{chunk-CFXDWGQI.js → chunk-TPIMOGOZ.js} +1 -1
- package/dist/{chunk-HDLUG3MA.js → chunk-UY3FWQWG.js} +2 -2
- package/dist/{chunk-RQHN4J5P.js → chunk-UYF2B2TH.js} +1 -1
- package/dist/{chunk-I5OIKDX2.js → chunk-VERJCAJ4.js} +1 -1
- package/dist/{chunk-PKVWCKS2.js → chunk-VG3SIJ3M.js} +1 -1
- package/dist/{chunk-BAHLBMCH.js → chunk-WK4FQPYW.js} +2 -2
- package/dist/{chunk-4RKTZSEW.js → chunk-WL4TC4YZ.js} +1 -1
- package/dist/{chunk-SBHAKX2T.js → chunk-X5FKORDM.js} +72 -9
- package/dist/{chunk-4DL2BQJE.js → chunk-YL7AR6PR.js} +1 -1
- package/dist/{chunk-TF74KS36.js → chunk-YQDRJZ5J.js} +1 -1
- package/dist/{chunk-7OFVR7X4.js → chunk-ZKLEAK7M.js} +1 -1
- package/dist/{chunk-OUUHIA3B.js → chunk-ZMIVQGAB.js} +4 -4
- package/dist/{chunk-352FPJ2Q.js → chunk-ZW5SRQ5M.js} +1 -1
- package/dist/generated/index.d.ts +1 -0
- package/dist/generated/index.js +94 -93
- package/dist/index.js +94 -93
- package/dist/styles.css +565 -70
- package/package.json +3 -3
- package/dist/{chunk-SWLVR54P.js → chunk-HPI5J6AR.js} +1 -1
- package/dist/{chunk-EMCVX5FY.js → chunk-OBPINJNO.js} +1 -1
- package/dist/{chunk-KNAHKQD4.js → chunk-OQG4P5KU.js} +1 -1
- /package/dist/{chunk-TWM6G2I2.js → chunk-PCBPDMNU.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -10103,7 +10103,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10103
10103
|
}
|
|
10104
10104
|
|
|
10105
10105
|
|
|
10106
|
-
/* ChoiceButtons-
|
|
10106
|
+
/* ChoiceButtons-T3GG6VLG.css */
|
|
10107
10107
|
/*
|
|
10108
10108
|
* One answer, sent with one press: a column of buttons as tall as a touch
|
|
10109
10109
|
* target, the recommended one first and filled with the accent.
|
|
@@ -10111,6 +10111,11 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10111
10111
|
* The plain option is the secondary button's recipe (the card's own ground
|
|
10112
10112
|
* inside the strong hairline), and the recommended one the primary's, so the
|
|
10113
10113
|
* pair reads as the screen's one primary action and its alternatives.
|
|
10114
|
+
*
|
|
10115
|
+
* AS TOGGLES (`chosen` given, so every option carries `aria-pressed`) the
|
|
10116
|
+
* accent is the chosen option's alone: the recommended one is drawn plain with
|
|
10117
|
+
* its mark kept, so an answer that went against the recommendation never shows
|
|
10118
|
+
* the option NOT chosen as the loudest one on the screen.
|
|
10114
10119
|
*/
|
|
10115
10120
|
|
|
10116
10121
|
.crewlet-choice-buttons {
|
|
@@ -10126,7 +10131,6 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10126
10131
|
|
|
10127
10132
|
display: flex;
|
|
10128
10133
|
align-items: center;
|
|
10129
|
-
justify-content: space-between;
|
|
10130
10134
|
gap: var(--spacing-3);
|
|
10131
10135
|
min-width: 0;
|
|
10132
10136
|
min-height: var(--size-control-lg);
|
|
@@ -10171,13 +10175,21 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10171
10175
|
}
|
|
10172
10176
|
|
|
10173
10177
|
/*
|
|
10174
|
-
* THE OPTION APPLIED
|
|
10175
|
-
*
|
|
10176
|
-
*
|
|
10178
|
+
* THE OPTION APPLIED stands on the soft selected fill inside an edge in the
|
|
10179
|
+
* accent's ink, with a check mark in the same ink, held under the pointer and
|
|
10180
|
+
* the press so neither makes it look unchosen.
|
|
10181
|
+
*
|
|
10182
|
+
* The edge is the accent's INK, not the selected edge the package's other
|
|
10183
|
+
* chosen options draw. That edge is a tint, as low as 1.65:1 against this fill
|
|
10184
|
+
* (dark, on the raised rung), and here the edge is what tells a pressed toggle
|
|
10185
|
+
* from the others, which WCAG 1.4.11 holds to 3:1. The ink clears 4.71:1 at
|
|
10186
|
+
* its tightest (light, on the frame), and the check mark makes the state more
|
|
10187
|
+
* than a colour.
|
|
10177
10188
|
*/
|
|
10178
10189
|
.crewlet-choice-buttons__option.is-chosen,
|
|
10179
|
-
.crewlet-choice-buttons__option.is-chosen:hover
|
|
10180
|
-
|
|
10190
|
+
.crewlet-choice-buttons__option.is-chosen:hover,
|
|
10191
|
+
.crewlet-choice-buttons__option.is-chosen:active {
|
|
10192
|
+
border-color: var(--color-brand-accent-ink);
|
|
10181
10193
|
background: var(--color-surface-selected);
|
|
10182
10194
|
}
|
|
10183
10195
|
|
|
@@ -10199,7 +10211,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10199
10211
|
cursor: progress;
|
|
10200
10212
|
}
|
|
10201
10213
|
|
|
10202
|
-
.crewlet-choice-buttons__option--recommended {
|
|
10214
|
+
.crewlet-choice-buttons__option--recommended:not([aria-pressed]) {
|
|
10203
10215
|
background: var(--color-brand-accent);
|
|
10204
10216
|
border-color: transparent;
|
|
10205
10217
|
color: var(--color-text-on-accent);
|
|
@@ -10212,12 +10224,12 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10212
10224
|
--crewlet-inline-ref-mark-ink: currentColor;
|
|
10213
10225
|
}
|
|
10214
10226
|
|
|
10215
|
-
.crewlet-choice-buttons__option--recommended:hover:not([aria-disabled='true']) {
|
|
10227
|
+
.crewlet-choice-buttons__option--recommended:not([aria-pressed]):hover:not([aria-disabled='true']) {
|
|
10216
10228
|
background: var(--color-brand-accent-hover);
|
|
10217
10229
|
border-color: transparent;
|
|
10218
10230
|
}
|
|
10219
10231
|
|
|
10220
|
-
.crewlet-choice-buttons__option--recommended:active:not([aria-disabled='true']) {
|
|
10232
|
+
.crewlet-choice-buttons__option--recommended:not([aria-pressed]):active:not([aria-disabled='true']) {
|
|
10221
10233
|
background: var(--color-brand-accent-active);
|
|
10222
10234
|
}
|
|
10223
10235
|
|
|
@@ -10226,33 +10238,18 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10226
10238
|
* nearly the fill's own colour, so its ring stands off it as a primary
|
|
10227
10239
|
* button's does.
|
|
10228
10240
|
*/
|
|
10229
|
-
.crewlet-choice-buttons__option--recommended:focus-visible {
|
|
10241
|
+
.crewlet-choice-buttons__option--recommended:not([aria-pressed]):focus-visible {
|
|
10230
10242
|
outline-offset: 2px;
|
|
10231
10243
|
}
|
|
10232
10244
|
|
|
10233
10245
|
/*
|
|
10234
|
-
*
|
|
10235
|
-
*
|
|
10236
|
-
*
|
|
10237
|
-
* the accent fill for the soft one and left the accent's own ink behind, white
|
|
10238
|
-
* on a pale tint, under 1.5:1 in the light theme. Held under the pointer and
|
|
10239
|
-
* the press too, which otherwise bring the accent back.
|
|
10246
|
+
* The words take the room the option has to spare, so the recommended mark and
|
|
10247
|
+
* the check mark after them sit together at the far end, and a picture before
|
|
10248
|
+
* them keeps its place at the start.
|
|
10240
10249
|
*/
|
|
10241
|
-
.crewlet-choice-buttons__option--recommended.is-chosen,
|
|
10242
|
-
.crewlet-choice-buttons__option--recommended.is-chosen:hover:not([aria-disabled='true']),
|
|
10243
|
-
.crewlet-choice-buttons__option--recommended.is-chosen:active:not([aria-disabled='true']) {
|
|
10244
|
-
border-color: var(--color-border-selected);
|
|
10245
|
-
background: var(--color-surface-selected);
|
|
10246
|
-
color: var(--color-text-primary);
|
|
10247
|
-
}
|
|
10248
|
-
|
|
10249
|
-
/* Off the accent, the ring is drawn over the selected edge again. */
|
|
10250
|
-
.crewlet-choice-buttons__option--recommended.is-chosen:focus-visible {
|
|
10251
|
-
outline-offset: var(--size-focus-ring-inset-offset);
|
|
10252
|
-
}
|
|
10253
|
-
|
|
10254
10250
|
.crewlet-choice-buttons__text {
|
|
10255
10251
|
display: grid;
|
|
10252
|
+
flex: 1 1 auto;
|
|
10256
10253
|
gap: 2px;
|
|
10257
10254
|
min-width: 0;
|
|
10258
10255
|
overflow-wrap: anywhere;
|
|
@@ -10268,15 +10265,10 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10268
10265
|
* On the accent fill the detail takes the label's own ink. The tertiary step
|
|
10269
10266
|
* is measured on the surfaces, not on the accent, where it does not clear.
|
|
10270
10267
|
*/
|
|
10271
|
-
.crewlet-choice-buttons__option--recommended .crewlet-choice-buttons__detail {
|
|
10268
|
+
.crewlet-choice-buttons__option--recommended:not([aria-pressed]) .crewlet-choice-buttons__detail {
|
|
10272
10269
|
color: var(--color-text-on-accent);
|
|
10273
10270
|
}
|
|
10274
10271
|
|
|
10275
|
-
/* Chosen, it is off the accent, and the detail takes its tertiary step again. */
|
|
10276
|
-
.crewlet-choice-buttons__option--recommended.is-chosen .crewlet-choice-buttons__detail {
|
|
10277
|
-
color: var(--color-text-tertiary);
|
|
10278
|
-
}
|
|
10279
|
-
|
|
10280
10272
|
/*
|
|
10281
10273
|
* The mark, in the micro-label register. Full ink rather than a faded one:
|
|
10282
10274
|
* eleven pixels of white on the accent clears 4.5:1 only at full strength.
|
|
@@ -10289,8 +10281,12 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10289
10281
|
text-transform: uppercase;
|
|
10290
10282
|
}
|
|
10291
10283
|
|
|
10292
|
-
/*
|
|
10293
|
-
|
|
10284
|
+
/*
|
|
10285
|
+
* The picture before the words and the check mark at the far end, each
|
|
10286
|
+
* centred on the label's line.
|
|
10287
|
+
*/
|
|
10288
|
+
.crewlet-choice-buttons__media,
|
|
10289
|
+
.crewlet-choice-buttons__check {
|
|
10294
10290
|
display: inline-flex;
|
|
10295
10291
|
flex: none;
|
|
10296
10292
|
align-items: center;
|
|
@@ -10299,22 +10295,22 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10299
10295
|
|
|
10300
10296
|
/*
|
|
10301
10297
|
* With a detail under it the label's line is the FIRST line, not the
|
|
10302
|
-
* option's middle, so the picture
|
|
10303
|
-
* Centred on the label and its detail together, a
|
|
10304
|
-
* 7px under the value it shows.
|
|
10298
|
+
* option's middle, so the picture and the check mark stand on a box one line
|
|
10299
|
+
* tall at the top. Centred on the label and its detail together, a
|
|
10300
|
+
* suggestion's swatch sat 7px under the value it shows.
|
|
10305
10301
|
*/
|
|
10306
|
-
.crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__media
|
|
10302
|
+
.crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__media,
|
|
10303
|
+
.crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) .crewlet-choice-buttons__check {
|
|
10307
10304
|
align-self: flex-start;
|
|
10308
10305
|
min-height: calc(var(--crewlet-choice-buttons-leading) * 1em);
|
|
10309
10306
|
}
|
|
10310
10307
|
|
|
10311
|
-
/*
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
margin-inline-start: auto;
|
|
10308
|
+
/*
|
|
10309
|
+
* The chosen option's check mark, at the label's size and in the edge's ink,
|
|
10310
|
+
* which clears the 3:1 a mark has to on the selected fill in every theme.
|
|
10311
|
+
*/
|
|
10312
|
+
.crewlet-choice-buttons__check {
|
|
10313
|
+
color: var(--color-brand-accent-ink);
|
|
10318
10314
|
}
|
|
10319
10315
|
|
|
10320
10316
|
/*
|
|
@@ -10357,7 +10353,328 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10357
10353
|
}
|
|
10358
10354
|
|
|
10359
10355
|
|
|
10360
|
-
/*
|
|
10356
|
+
/* ChoiceCards-HAGJMK6Q.css */
|
|
10357
|
+
/*
|
|
10358
|
+
* Choices a person compares, as cards in a grid that wraps. The chosen card
|
|
10359
|
+
* takes the selected fill and the strong boundary, as a chosen ChoiceList row
|
|
10360
|
+
* does; the radio stays the mark, drawn in the card's corner; and no card is
|
|
10361
|
+
* ringed in the accent except by the focus ring itself.
|
|
10362
|
+
*
|
|
10363
|
+
* ONE LINE A ROW, THE SAME ROWS IN EVERY CARD: the picture, the name and its
|
|
10364
|
+
* tag on the first; the description on the second; then each fact on a line
|
|
10365
|
+
* of its own, its name and its value; and a reason line where any card has
|
|
10366
|
+
* one. Every card spans the same rows of the group's grid and lays its lines
|
|
10367
|
+
* on them as a subgrid, so cards side by side share each row: a description
|
|
10368
|
+
* that wraps in one card moves the facts of all of them, and Runs stays level
|
|
10369
|
+
* with Runs. Facts run together as one line of meta wrapped differently in
|
|
10370
|
+
* each card, and three cards read as three different shapes.
|
|
10371
|
+
*
|
|
10372
|
+
* A card is at least 20rem (24rem at `lg`), the width a fact's name and a
|
|
10373
|
+
* short value keep to one line in: a form's column holds one to a row, and a
|
|
10374
|
+
* wider surface two or three, aligned.
|
|
10375
|
+
*/
|
|
10376
|
+
.crewlet-choice-cards {
|
|
10377
|
+
--crewlet-choice-cards-min: 20rem;
|
|
10378
|
+
--crewlet-choice-cards-radio: 16px;
|
|
10379
|
+
/* How many rows a card spans, set from the options: the name, the description, the most facts, a reason. */
|
|
10380
|
+
--crewlet-choice-cards-rows: 3;
|
|
10381
|
+
display: grid;
|
|
10382
|
+
grid-template-columns: repeat(
|
|
10383
|
+
auto-fit,
|
|
10384
|
+
minmax(min(100%, var(--crewlet-choice-cards-min)), 1fr)
|
|
10385
|
+
);
|
|
10386
|
+
grid-auto-rows: auto;
|
|
10387
|
+
column-gap: var(--spacing-3);
|
|
10388
|
+
row-gap: 0;
|
|
10389
|
+
}
|
|
10390
|
+
|
|
10391
|
+
.crewlet-choice-cards--lg {
|
|
10392
|
+
--crewlet-choice-cards-min: 24rem;
|
|
10393
|
+
}
|
|
10394
|
+
|
|
10395
|
+
/*
|
|
10396
|
+
* THE CARD is a column of its lines. The space under a card is its margin,
|
|
10397
|
+
* the gap between one row of cards and the next; the lines inside a card keep
|
|
10398
|
+
* their own, smaller gap.
|
|
10399
|
+
*
|
|
10400
|
+
* Its first line is as tall as the largest picture a card set draws (a
|
|
10401
|
+
* product's mark), so the radio and every name sit on one line whatever
|
|
10402
|
+
* picture each card has.
|
|
10403
|
+
*/
|
|
10404
|
+
.crewlet-choice-cards__card {
|
|
10405
|
+
--crewlet-choice-cards-title: var(--size-control-sm);
|
|
10406
|
+
|
|
10407
|
+
position: relative;
|
|
10408
|
+
display: flex;
|
|
10409
|
+
flex-direction: column;
|
|
10410
|
+
gap: var(--spacing-1);
|
|
10411
|
+
min-width: 0;
|
|
10412
|
+
margin-block-end: var(--spacing-3);
|
|
10413
|
+
padding: var(--spacing-3);
|
|
10414
|
+
border: 1px solid var(--color-border-default);
|
|
10415
|
+
border-radius: var(--radius-md);
|
|
10416
|
+
background: var(--color-surface-elevated);
|
|
10417
|
+
cursor: pointer;
|
|
10418
|
+
transition:
|
|
10419
|
+
background-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
10420
|
+
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
10421
|
+
}
|
|
10422
|
+
|
|
10423
|
+
.crewlet-choice-cards__card:hover {
|
|
10424
|
+
background: var(--color-surface-hover);
|
|
10425
|
+
}
|
|
10426
|
+
|
|
10427
|
+
/*
|
|
10428
|
+
* THE CHOSEN CARD wears the soft selected tint laid OVER the raised surface,
|
|
10429
|
+
* inside an edge in the accent's ink, as a chosen ChoiceButtons option does.
|
|
10430
|
+
* The tint is translucent: laid on its own it let the page's ground through,
|
|
10431
|
+
* darker than the raised cards beside it in dark, and the chosen card looked
|
|
10432
|
+
* recessed. The edge is the accent's ink rather than the strong border,
|
|
10433
|
+
* because the edge is what tells the chosen card from the others at 3:1.
|
|
10434
|
+
*/
|
|
10435
|
+
.crewlet-choice-cards__card.is-checked {
|
|
10436
|
+
border-color: var(--color-brand-accent-ink);
|
|
10437
|
+
background-color: var(--color-surface-elevated);
|
|
10438
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
10439
|
+
}
|
|
10440
|
+
|
|
10441
|
+
/*
|
|
10442
|
+
* A CARD THAT CANNOT BE CHOSEN stands on the page's own ground and takes no
|
|
10443
|
+
* hover: the subtle surface it took is brighter than the raised one in light,
|
|
10444
|
+
* so the card that could not be chosen read as the most inviting. Its radio is
|
|
10445
|
+
* drawn quiet, as ChoiceList's disabled radio is, and its picture muted; its
|
|
10446
|
+
* words stay at full contrast, and its reason says why.
|
|
10447
|
+
*/
|
|
10448
|
+
.crewlet-choice-cards__card.is-disabled {
|
|
10449
|
+
cursor: not-allowed;
|
|
10450
|
+
background: transparent;
|
|
10451
|
+
}
|
|
10452
|
+
|
|
10453
|
+
.crewlet-choice-cards__card.is-disabled:hover {
|
|
10454
|
+
background: transparent;
|
|
10455
|
+
}
|
|
10456
|
+
|
|
10457
|
+
.crewlet-choice-cards__card.is-disabled .crewlet-choice-cards__radio {
|
|
10458
|
+
border-color: var(--color-border-default);
|
|
10459
|
+
background: var(--color-surface-subtle);
|
|
10460
|
+
}
|
|
10461
|
+
|
|
10462
|
+
.crewlet-choice-cards__card.is-disabled .crewlet-choice-cards__media {
|
|
10463
|
+
color: var(--color-text-tertiary);
|
|
10464
|
+
filter: grayscale(1);
|
|
10465
|
+
}
|
|
10466
|
+
|
|
10467
|
+
/* The ring sits inside the card's own box, over its border, rather than a second line beside it. */
|
|
10468
|
+
.crewlet-choice-cards__card:has(.crewlet-choice-cards__radio:focus-visible) {
|
|
10469
|
+
outline: 2px solid var(--color-focus);
|
|
10470
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
10471
|
+
}
|
|
10472
|
+
|
|
10473
|
+
/* The radio, drawn in the card's top end and centred on the first line: an empty ring, or the accent ring round an accent dot. */
|
|
10474
|
+
.crewlet-choice-cards__radio {
|
|
10475
|
+
appearance: none;
|
|
10476
|
+
position: absolute;
|
|
10477
|
+
inset-block-start: calc(var(--spacing-3) + (var(--crewlet-choice-cards-title) - var(--crewlet-choice-cards-radio)) / 2);
|
|
10478
|
+
inset-inline-end: var(--spacing-3);
|
|
10479
|
+
display: inline-grid;
|
|
10480
|
+
place-content: center;
|
|
10481
|
+
width: var(--crewlet-choice-cards-radio);
|
|
10482
|
+
height: var(--crewlet-choice-cards-radio);
|
|
10483
|
+
margin: 0;
|
|
10484
|
+
border: 1px solid var(--color-border-control);
|
|
10485
|
+
border-radius: var(--radius-circle);
|
|
10486
|
+
background: var(--color-surface-elevated);
|
|
10487
|
+
}
|
|
10488
|
+
|
|
10489
|
+
.crewlet-choice-cards__radio:checked {
|
|
10490
|
+
border-color: var(--color-brand-accent);
|
|
10491
|
+
}
|
|
10492
|
+
|
|
10493
|
+
.crewlet-choice-cards__radio:checked::after {
|
|
10494
|
+
content: "";
|
|
10495
|
+
width: 8px;
|
|
10496
|
+
height: 8px;
|
|
10497
|
+
border-radius: var(--radius-circle);
|
|
10498
|
+
background: var(--color-brand-accent);
|
|
10499
|
+
}
|
|
10500
|
+
|
|
10501
|
+
/*
|
|
10502
|
+
* THE CARD DRAWS THE RING (above), so the radio's own is transparent rather
|
|
10503
|
+
* than off: invisible beside the card's, and still a ring where forced-colors
|
|
10504
|
+
* mode repaints every outline in the system's colour.
|
|
10505
|
+
*/
|
|
10506
|
+
.crewlet-choice-cards__radio:focus-visible {
|
|
10507
|
+
outline: 2px solid transparent;
|
|
10508
|
+
}
|
|
10509
|
+
|
|
10510
|
+
/* The first line: the picture, the name and its tag, stopping short of the radio. */
|
|
10511
|
+
.crewlet-choice-cards__title {
|
|
10512
|
+
display: flex;
|
|
10513
|
+
align-items: center;
|
|
10514
|
+
gap: var(--spacing-2);
|
|
10515
|
+
grid-row: 1;
|
|
10516
|
+
min-width: 0;
|
|
10517
|
+
min-height: var(--crewlet-choice-cards-title);
|
|
10518
|
+
padding-inline-end: calc(var(--spacing-2) + var(--crewlet-choice-cards-radio));
|
|
10519
|
+
}
|
|
10520
|
+
|
|
10521
|
+
.crewlet-choice-cards__media {
|
|
10522
|
+
display: inline-flex;
|
|
10523
|
+
flex: none;
|
|
10524
|
+
color: var(--color-text-secondary);
|
|
10525
|
+
}
|
|
10526
|
+
|
|
10527
|
+
.crewlet-choice-cards__tag {
|
|
10528
|
+
padding: 0 var(--spacing-2);
|
|
10529
|
+
border: 1px solid var(--color-border-default);
|
|
10530
|
+
border-radius: var(--radius-pill);
|
|
10531
|
+
color: var(--color-text-secondary);
|
|
10532
|
+
font-size: var(--font-size-xs);
|
|
10533
|
+
white-space: nowrap;
|
|
10534
|
+
}
|
|
10535
|
+
|
|
10536
|
+
/* On the chosen card's tint the default edge all but vanishes in light, so the tag takes the strong one. */
|
|
10537
|
+
.crewlet-choice-cards__card.is-checked .crewlet-choice-cards__tag {
|
|
10538
|
+
border-color: var(--color-border-strong);
|
|
10539
|
+
}
|
|
10540
|
+
|
|
10541
|
+
.crewlet-choice-cards__label {
|
|
10542
|
+
min-width: 0;
|
|
10543
|
+
color: var(--color-text-primary);
|
|
10544
|
+
font-weight: var(--font-weight-medium);
|
|
10545
|
+
}
|
|
10546
|
+
|
|
10547
|
+
/*
|
|
10548
|
+
* The second row is the description's in every card once any card has one: a
|
|
10549
|
+
* card without one keeps an empty cell there, so its facts stay level with
|
|
10550
|
+
* the facts beside them.
|
|
10551
|
+
*/
|
|
10552
|
+
.crewlet-choice-cards__description {
|
|
10553
|
+
grid-row: 2;
|
|
10554
|
+
color: var(--color-text-secondary);
|
|
10555
|
+
font-size: var(--font-size-sm);
|
|
10556
|
+
}
|
|
10557
|
+
|
|
10558
|
+
/* The facts give each of their lines to the card's grid, one row a fact. */
|
|
10559
|
+
.crewlet-choice-cards__facts {
|
|
10560
|
+
display: contents;
|
|
10561
|
+
}
|
|
10562
|
+
|
|
10563
|
+
/*
|
|
10564
|
+
* A fact: its name in the quiet ink, then its value, on one line while there
|
|
10565
|
+
* is room. Its two parts share one size and line height and align to the top,
|
|
10566
|
+
* so a fact with a dot is no taller than one without: aligned on a baseline,
|
|
10567
|
+
* the dot (a box with no text) gave the line a baseline of its own and the
|
|
10568
|
+
* Needs line stood a pixel taller than Runs.
|
|
10569
|
+
*/
|
|
10570
|
+
.crewlet-choice-cards__fact {
|
|
10571
|
+
display: flex;
|
|
10572
|
+
align-items: flex-start;
|
|
10573
|
+
gap: var(--spacing-2);
|
|
10574
|
+
min-width: 0;
|
|
10575
|
+
font-size: var(--font-size-xs);
|
|
10576
|
+
}
|
|
10577
|
+
|
|
10578
|
+
.crewlet-choice-cards__fact-label {
|
|
10579
|
+
flex: none;
|
|
10580
|
+
color: var(--color-text-tertiary);
|
|
10581
|
+
}
|
|
10582
|
+
|
|
10583
|
+
.crewlet-choice-cards__fact-value {
|
|
10584
|
+
min-width: 0;
|
|
10585
|
+
color: var(--color-text-secondary);
|
|
10586
|
+
}
|
|
10587
|
+
|
|
10588
|
+
/*
|
|
10589
|
+
* A FACT WRAPS RATHER THAN CLIPS. A StatusDot is one line and its word gives
|
|
10590
|
+
* way with an ellipsis, which is right in a table cell and wrong here: a
|
|
10591
|
+
* fact is read to choose between the cards, and a narrow card cut "Docker
|
|
10592
|
+
* 24.0.7 found" to "Docker 24.0..." with nothing to reveal the rest. The word
|
|
10593
|
+
* wraps under itself, and the dot stays on the first line's centre, where it
|
|
10594
|
+
* sat while the fact was one line.
|
|
10595
|
+
*/
|
|
10596
|
+
.crewlet-choice-cards__fact-value > .crewlet-status {
|
|
10597
|
+
display: flex;
|
|
10598
|
+
align-items: flex-start;
|
|
10599
|
+
}
|
|
10600
|
+
|
|
10601
|
+
.crewlet-choice-cards__fact-value > .crewlet-status > .crewlet-status-dot {
|
|
10602
|
+
margin-block-start: calc((1lh - var(--crewlet-status-dot-size)) / 2);
|
|
10603
|
+
}
|
|
10604
|
+
|
|
10605
|
+
.crewlet-choice-cards__fact-value > .crewlet-status > .crewlet-status__label {
|
|
10606
|
+
overflow: visible;
|
|
10607
|
+
white-space: normal;
|
|
10608
|
+
overflow-wrap: anywhere;
|
|
10609
|
+
}
|
|
10610
|
+
|
|
10611
|
+
/* A reason given on a fact's line (`disabledReasonAt`) takes that line's value, in the same ink. */
|
|
10612
|
+
.crewlet-choice-cards__fact.is-reason .crewlet-choice-cards__fact-value {
|
|
10613
|
+
color: var(--color-feedback-warning-ink);
|
|
10614
|
+
}
|
|
10615
|
+
|
|
10616
|
+
/* The reason a disabled card cannot be chosen: the card's last row, in the warning ink. */
|
|
10617
|
+
.crewlet-choice-cards__reason {
|
|
10618
|
+
grid-row: -2;
|
|
10619
|
+
color: var(--color-feedback-warning-ink);
|
|
10620
|
+
font-size: var(--font-size-xs);
|
|
10621
|
+
}
|
|
10622
|
+
|
|
10623
|
+
|
|
10624
|
+
/*
|
|
10625
|
+
* WHERE SUBGRID IS SUPPORTED, every card spans the same rows of the group and
|
|
10626
|
+
* takes them from it, so a row is as tall as its tallest line across the cards
|
|
10627
|
+
* beside it and their facts stand level. Elsewhere each card stays the plain
|
|
10628
|
+
* column above: its lines still read in order, only not level with the next
|
|
10629
|
+
* card's.
|
|
10630
|
+
*/
|
|
10631
|
+
@supports (grid-template-rows: subgrid) {
|
|
10632
|
+
.crewlet-choice-cards__card {
|
|
10633
|
+
display: grid;
|
|
10634
|
+
grid-row: span var(--crewlet-choice-cards-rows);
|
|
10635
|
+
grid-template-rows: subgrid;
|
|
10636
|
+
grid-template-columns: minmax(0, 1fr);
|
|
10637
|
+
row-gap: var(--spacing-1);
|
|
10638
|
+
align-content: start;
|
|
10639
|
+
}
|
|
10640
|
+
}
|
|
10641
|
+
|
|
10642
|
+
/*
|
|
10643
|
+
* UNDER FORCED COLOURS the system repaints every colour above, so the drawn
|
|
10644
|
+
* radio's dot and the tint vanish together: the radio becomes the platform's
|
|
10645
|
+
* own, which marks itself; the chosen card's edge takes the system's
|
|
10646
|
+
* selection colour, twice as wide; and a card that cannot be chosen takes the
|
|
10647
|
+
* system's disabled ink, edge and words, rather than reading as one that can.
|
|
10648
|
+
*/
|
|
10649
|
+
@media (forced-colors: active) {
|
|
10650
|
+
.crewlet-choice-cards__radio {
|
|
10651
|
+
appearance: auto;
|
|
10652
|
+
}
|
|
10653
|
+
|
|
10654
|
+
.crewlet-choice-cards__card.is-checked {
|
|
10655
|
+
border-width: 2px;
|
|
10656
|
+
border-color: Highlight;
|
|
10657
|
+
}
|
|
10658
|
+
|
|
10659
|
+
.crewlet-choice-cards__card.is-disabled {
|
|
10660
|
+
border-color: GrayText;
|
|
10661
|
+
color: GrayText;
|
|
10662
|
+
}
|
|
10663
|
+
|
|
10664
|
+
.crewlet-choice-cards__card.is-disabled :is(.crewlet-choice-cards__label, .crewlet-choice-cards__description, .crewlet-choice-cards__fact-label, .crewlet-choice-cards__fact-value) {
|
|
10665
|
+
color: GrayText;
|
|
10666
|
+
}
|
|
10667
|
+
}
|
|
10668
|
+
|
|
10669
|
+
/* The border's ease into its hover and checked inks is held for a reader who asked for no motion. */
|
|
10670
|
+
@media (prefers-reduced-motion: reduce) {
|
|
10671
|
+
.crewlet-choice-cards__card {
|
|
10672
|
+
transition: none;
|
|
10673
|
+
}
|
|
10674
|
+
}
|
|
10675
|
+
|
|
10676
|
+
|
|
10677
|
+
/* ChoiceList-JN4PPNFW.css */
|
|
10361
10678
|
/*
|
|
10362
10679
|
* A short list of answers in one bordered box: a radio, the label with a line
|
|
10363
10680
|
* of detail under it, and a tag at the row's end. The selected row takes the
|
|
@@ -10461,10 +10778,22 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10461
10778
|
background: var(--color-surface-selected);
|
|
10462
10779
|
}
|
|
10463
10780
|
|
|
10464
|
-
.crewlet-choice-list.is-disabled .crewlet-choice-list__row
|
|
10781
|
+
.crewlet-choice-list.is-disabled .crewlet-choice-list__row,
|
|
10782
|
+
.crewlet-choice-list__row.is-disabled {
|
|
10465
10783
|
cursor: not-allowed;
|
|
10466
10784
|
}
|
|
10467
10785
|
|
|
10786
|
+
/* A choice that cannot be made takes no hover: the ground would offer it. */
|
|
10787
|
+
.crewlet-choice-list__row.is-disabled:hover {
|
|
10788
|
+
background: none;
|
|
10789
|
+
}
|
|
10790
|
+
|
|
10791
|
+
/* Its ring is drawn on the quiet boundary and ground; its words stay at full contrast. */
|
|
10792
|
+
.crewlet-choice-list__row.is-disabled .crewlet-choice-list__radio {
|
|
10793
|
+
border-color: var(--color-border-default);
|
|
10794
|
+
background: var(--color-surface-subtle);
|
|
10795
|
+
}
|
|
10796
|
+
|
|
10468
10797
|
/*
|
|
10469
10798
|
* THE RADIO IS DRAWN, not the platform's. In a dark palette the platform's
|
|
10470
10799
|
* own radio fills an unchosen answer with a grey disc, which beside the one
|
|
@@ -10523,6 +10852,15 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10523
10852
|
overflow-wrap: anywhere;
|
|
10524
10853
|
}
|
|
10525
10854
|
|
|
10855
|
+
/* Why a disabled choice cannot be made, after its detail on the same line, in the warning ink. */
|
|
10856
|
+
.crewlet-choice-list__reason {
|
|
10857
|
+
color: var(--color-feedback-warning-ink);
|
|
10858
|
+
}
|
|
10859
|
+
|
|
10860
|
+
.crewlet-choice-list__detail > .crewlet-choice-list__reason:not(:first-child) {
|
|
10861
|
+
margin-inline-start: var(--spacing-2);
|
|
10862
|
+
}
|
|
10863
|
+
|
|
10526
10864
|
/* A tag says something ABOUT an answer ("Suggested"), so it is set in the
|
|
10527
10865
|
tertiary ink: in the accent ink it was a second accent mark on the chosen
|
|
10528
10866
|
row, beside the radio and the fill that already say which one is chosen. */
|
|
@@ -20568,7 +20906,7 @@ a.crewlet-icon-btn {
|
|
|
20568
20906
|
}
|
|
20569
20907
|
|
|
20570
20908
|
|
|
20571
|
-
/* Input-
|
|
20909
|
+
/* Input-WSMB7JG2.css */
|
|
20572
20910
|
/*
|
|
20573
20911
|
* The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
|
|
20574
20912
|
* ReadOnlyField.
|
|
@@ -21117,13 +21455,18 @@ a.crewlet-icon-btn {
|
|
|
21117
21455
|
}
|
|
21118
21456
|
|
|
21119
21457
|
/* Raised over the field it overhangs, so the ring a focused action draws two
|
|
21120
|
-
pixels out from its edge is not painted over by the box under it.
|
|
21458
|
+
pixels out from its edge is not painted over by the box under it. The
|
|
21459
|
+
action is a control, not part of the label, so it keeps its own case and
|
|
21460
|
+
spacing: inside the label's capitals a link read "CLAUDE CODE'S MODEL
|
|
21461
|
+
NAMES", and a button's word was set in capitals no other button has. */
|
|
21121
21462
|
.crewlet-label__action {
|
|
21122
21463
|
position: relative;
|
|
21123
21464
|
z-index: var(--z-index-raised);
|
|
21124
21465
|
display: inline-flex;
|
|
21125
21466
|
align-items: center;
|
|
21126
21467
|
block-size: 1lh;
|
|
21468
|
+
letter-spacing: var(--font-letter-spacing-normal);
|
|
21469
|
+
text-transform: none;
|
|
21127
21470
|
}
|
|
21128
21471
|
|
|
21129
21472
|
/* ── FormField ───────────────────────────────────────────────────────── */
|
|
@@ -31088,7 +31431,7 @@ svg.crewlet-select__chevron {
|
|
|
31088
31431
|
}
|
|
31089
31432
|
|
|
31090
31433
|
|
|
31091
|
-
/* SetupWizard-
|
|
31434
|
+
/* SetupWizard-2SUMQEWU.css */
|
|
31092
31435
|
/*
|
|
31093
31436
|
* SetupWizard: a setup walked step by step on a page of its own
|
|
31094
31437
|
* (SetupWizard.tsx).
|
|
@@ -31120,9 +31463,20 @@ svg.crewlet-select__chevron {
|
|
|
31120
31463
|
|
|
31121
31464
|
container-type: inline-size;
|
|
31122
31465
|
min-width: 0;
|
|
31466
|
+
/*
|
|
31467
|
+
* IT FILLS ITS SCREEN, so the footer rests at the bottom of the view on
|
|
31468
|
+
* every step: sized to its content, a short step lifted the footer and its
|
|
31469
|
+
* Continue hundreds of pixels up the page, and the next step dropped them
|
|
31470
|
+
* again, so the button a person pressed moved on every press. Stretched,
|
|
31471
|
+
* the content row takes the slack and the footer stays where it was.
|
|
31472
|
+
*/
|
|
31473
|
+
flex: 1 0 auto;
|
|
31474
|
+
display: flex;
|
|
31475
|
+
flex-direction: column;
|
|
31123
31476
|
}
|
|
31124
31477
|
|
|
31125
31478
|
.crewlet-setup-wizard__frame {
|
|
31479
|
+
flex: 1 0 auto;
|
|
31126
31480
|
display: grid;
|
|
31127
31481
|
grid-template-columns: var(--crewlet-setup-wizard-rail) minmax(0, var(--crewlet-setup-wizard-column));
|
|
31128
31482
|
grid-template-areas:
|
|
@@ -31269,6 +31623,25 @@ svg.crewlet-select__chevron {
|
|
|
31269
31623
|
margin-inline-start: auto;
|
|
31270
31624
|
}
|
|
31271
31625
|
|
|
31626
|
+
/*
|
|
31627
|
+
* THE STEP'S PRIMARY ACTION (`primaryAction`) KEEPS ONE WIDTH on every step.
|
|
31628
|
+
* Sized to its word, "Continue" grew into "Create model" or "Save changes" on
|
|
31629
|
+
* the last step, and every button before it in the row moved 30px to make
|
|
31630
|
+
* room: the Back a person had just pressed was no longer under the pointer.
|
|
31631
|
+
* 8rem holds the longest of those words at the kit's medium button; a longer
|
|
31632
|
+
* one still grows rather than clips. The box carries the width and the button
|
|
31633
|
+
* fills it, so the rule names the primary action rather than whichever
|
|
31634
|
+
* element happens to come last.
|
|
31635
|
+
*/
|
|
31636
|
+
.crewlet-setup-wizard__primary {
|
|
31637
|
+
display: flex;
|
|
31638
|
+
min-inline-size: 8rem;
|
|
31639
|
+
}
|
|
31640
|
+
|
|
31641
|
+
.crewlet-setup-wizard__primary > * {
|
|
31642
|
+
flex: 1 1 auto;
|
|
31643
|
+
}
|
|
31644
|
+
|
|
31272
31645
|
/*
|
|
31273
31646
|
* A GHOST AT THE ROW'S START is pulled out by its padding and edge, as a card
|
|
31274
31647
|
* foot's is (StatusCard.css), so "Exit" starts on the line the title and the
|
|
@@ -31332,7 +31705,14 @@ svg.crewlet-select__chevron {
|
|
|
31332
31705
|
'content'
|
|
31333
31706
|
'aside'
|
|
31334
31707
|
'foot';
|
|
31335
|
-
|
|
31708
|
+
/*
|
|
31709
|
+
* THE CONTENT'S ROW TAKES THE SLACK here too. Every row auto shared a
|
|
31710
|
+
* short step's spare height among all four, the footer's with them, so the
|
|
31711
|
+
* footer stood 20px above the view's bottom on a step shorter than the
|
|
31712
|
+
* view and on it on every step that scrolls: Continue moved under the
|
|
31713
|
+
* thumb between presses.
|
|
31714
|
+
*/
|
|
31715
|
+
grid-template-rows: auto auto 1fr auto auto;
|
|
31336
31716
|
row-gap: var(--spacing-5);
|
|
31337
31717
|
}
|
|
31338
31718
|
|
|
@@ -31342,6 +31722,7 @@ svg.crewlet-select__chevron {
|
|
|
31342
31722
|
'rail'
|
|
31343
31723
|
'content'
|
|
31344
31724
|
'foot';
|
|
31725
|
+
grid-template-rows: auto auto 1fr auto;
|
|
31345
31726
|
}
|
|
31346
31727
|
|
|
31347
31728
|
.crewlet-setup-wizard__rail {
|
|
@@ -31351,6 +31732,89 @@ svg.crewlet-select__chevron {
|
|
|
31351
31732
|
gap: var(--spacing-2);
|
|
31352
31733
|
}
|
|
31353
31734
|
|
|
31735
|
+
/*
|
|
31736
|
+
* THE ROW OF STEPS SCROLLS RATHER THAN WRAPS: eight steps wrapped into three
|
|
31737
|
+
* rows of pills between the position line and the step. The row is as wide
|
|
31738
|
+
* as its steps, inside a scroller of the wizard's own that brings the
|
|
31739
|
+
* current step into view (SetupWizard.tsx), with room above and under the
|
|
31740
|
+
* pills for the 24px band a pill that can be picked is pressed through,
|
|
31741
|
+
* which the scroller would otherwise clip.
|
|
31742
|
+
*
|
|
31743
|
+
* THE SCROLLER SAYS IT SCROLLS: with its bar hidden, an edge that hides
|
|
31744
|
+
* steps fades out, at whichever side has steps beyond it, so a row cut at
|
|
31745
|
+
* the screen's edge reads as more to come rather than as the last step.
|
|
31746
|
+
*/
|
|
31747
|
+
.crewlet-setup-wizard__steps {
|
|
31748
|
+
--crewlet-setup-wizard-fade: var(--spacing-6);
|
|
31749
|
+
--crewlet-setup-wizard-fade-left: 0px;
|
|
31750
|
+
--crewlet-setup-wizard-fade-right: 0px;
|
|
31751
|
+
|
|
31752
|
+
min-width: 0;
|
|
31753
|
+
overflow-x: auto;
|
|
31754
|
+
overscroll-behavior-x: contain;
|
|
31755
|
+
scrollbar-width: none;
|
|
31756
|
+
-webkit-mask-image: linear-gradient(
|
|
31757
|
+
to right,
|
|
31758
|
+
transparent,
|
|
31759
|
+
#000 var(--crewlet-setup-wizard-fade-left),
|
|
31760
|
+
#000 calc(100% - var(--crewlet-setup-wizard-fade-right)),
|
|
31761
|
+
transparent
|
|
31762
|
+
);
|
|
31763
|
+
mask-image: linear-gradient(
|
|
31764
|
+
to right,
|
|
31765
|
+
transparent,
|
|
31766
|
+
#000 var(--crewlet-setup-wizard-fade-left),
|
|
31767
|
+
#000 calc(100% - var(--crewlet-setup-wizard-fade-right)),
|
|
31768
|
+
transparent
|
|
31769
|
+
);
|
|
31770
|
+
}
|
|
31771
|
+
|
|
31772
|
+
.crewlet-setup-wizard__steps::-webkit-scrollbar {
|
|
31773
|
+
display: none;
|
|
31774
|
+
}
|
|
31775
|
+
|
|
31776
|
+
.crewlet-setup-wizard__steps[data-fade-left] {
|
|
31777
|
+
--crewlet-setup-wizard-fade-left: var(--crewlet-setup-wizard-fade);
|
|
31778
|
+
}
|
|
31779
|
+
|
|
31780
|
+
.crewlet-setup-wizard__steps[data-fade-right] {
|
|
31781
|
+
--crewlet-setup-wizard-fade-right: var(--crewlet-setup-wizard-fade);
|
|
31782
|
+
}
|
|
31783
|
+
|
|
31784
|
+
/* A row that overflows takes the keyboard, so it can be scrolled without a pointer; it draws no edge, so the ring sits inside it. */
|
|
31785
|
+
.crewlet-setup-wizard__steps:focus-visible {
|
|
31786
|
+
outline: 2px solid var(--color-focus);
|
|
31787
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
31788
|
+
}
|
|
31789
|
+
|
|
31790
|
+
.crewlet-setup-wizard__steps .crewlet-stepper {
|
|
31791
|
+
flex-wrap: nowrap;
|
|
31792
|
+
inline-size: max-content;
|
|
31793
|
+
max-inline-size: none;
|
|
31794
|
+
padding-block: calc((var(--size-target-min) - var(--crewlet-stepper-pill-height)) / 2);
|
|
31795
|
+
}
|
|
31796
|
+
|
|
31797
|
+
.crewlet-setup-wizard__steps .crewlet-stepper__step {
|
|
31798
|
+
flex: none;
|
|
31799
|
+
}
|
|
31800
|
+
|
|
31801
|
+
/* How far along, as a thin bar under the position line, in the accent. */
|
|
31802
|
+
.crewlet-setup-wizard__progress {
|
|
31803
|
+
display: block;
|
|
31804
|
+
block-size: 2px;
|
|
31805
|
+
overflow: hidden;
|
|
31806
|
+
border-radius: var(--radius-pill);
|
|
31807
|
+
background: var(--color-border-default);
|
|
31808
|
+
}
|
|
31809
|
+
|
|
31810
|
+
.crewlet-setup-wizard__progress::before {
|
|
31811
|
+
content: '';
|
|
31812
|
+
display: block;
|
|
31813
|
+
block-size: 100%;
|
|
31814
|
+
inline-size: calc(var(--crewlet-setup-wizard-progress, 0) * 100%);
|
|
31815
|
+
background: var(--color-brand-accent);
|
|
31816
|
+
}
|
|
31817
|
+
|
|
31354
31818
|
/*
|
|
31355
31819
|
* THE FOLDED PREVIEW HANGS IN THE GUTTER, as a change list's disclosure
|
|
31356
31820
|
* does: the trigger's padding and the panel's inset stand outside the
|
|
@@ -31381,18 +31845,19 @@ svg.crewlet-select__chevron {
|
|
|
31381
31845
|
display: contents;
|
|
31382
31846
|
}
|
|
31383
31847
|
|
|
31384
|
-
.crewlet-setup-wizard__footer-end > :first-child {
|
|
31848
|
+
.crewlet-setup-wizard__footer-end > :first-child:not(.crewlet-setup-wizard__primary) {
|
|
31385
31849
|
margin-inline-start: auto;
|
|
31386
31850
|
}
|
|
31387
31851
|
|
|
31388
|
-
|
|
31852
|
+
/* The primary action, named, takes the second row; the actions given in `footer` share the first, whatever their count. */
|
|
31853
|
+
.crewlet-setup-wizard__primary {
|
|
31389
31854
|
flex: 1 1 100%;
|
|
31390
31855
|
}
|
|
31391
31856
|
|
|
31392
31857
|
/* The first row's last action ends it, at the row's end: a ghost there is
|
|
31393
31858
|
pulled out as "Exit" is at its start, so the two words stand level with
|
|
31394
31859
|
the primary's edges under them. */
|
|
31395
|
-
.crewlet-setup-wizard__footer-end > .crewlet-btn--ghost.crewlet-btn--medium:
|
|
31860
|
+
.crewlet-setup-wizard__footer-end > .crewlet-btn--ghost.crewlet-btn--medium:has(+ .crewlet-setup-wizard__primary) {
|
|
31396
31861
|
margin-inline-end: calc(-1 * (var(--spacing-3) + 1px));
|
|
31397
31862
|
}
|
|
31398
31863
|
}
|
|
@@ -35372,7 +35837,7 @@ svg.crewlet-select__chevron {
|
|
|
35372
35837
|
}
|
|
35373
35838
|
|
|
35374
35839
|
|
|
35375
|
-
/* StatusDot-
|
|
35840
|
+
/* StatusDot-FJND3CZY.css */
|
|
35376
35841
|
/*
|
|
35377
35842
|
* The status dot: a 7px mark in its tone's fill, beside the word it belongs
|
|
35378
35843
|
* to. See the component doc for why it is hidden from assistive technology.
|
|
@@ -35391,10 +35856,17 @@ svg.crewlet-select__chevron {
|
|
|
35391
35856
|
* reader notice it" difference to. Every soft step does, by 4.48 at the least.
|
|
35392
35857
|
*/
|
|
35393
35858
|
|
|
35859
|
+
/*
|
|
35860
|
+
* The size is a property of the dot rather than two bare numbers so that a
|
|
35861
|
+
* layout placing the dot against a line it does not share a box with (a
|
|
35862
|
+
* ChoiceCards fact that wraps) centres it on that line by the same measure.
|
|
35863
|
+
*/
|
|
35394
35864
|
.crewlet-status-dot {
|
|
35865
|
+
--crewlet-status-dot-size: 7px;
|
|
35866
|
+
|
|
35395
35867
|
display: inline-block;
|
|
35396
|
-
width:
|
|
35397
|
-
height:
|
|
35868
|
+
width: var(--crewlet-status-dot-size);
|
|
35869
|
+
height: var(--crewlet-status-dot-size);
|
|
35398
35870
|
border-radius: var(--radius-circle);
|
|
35399
35871
|
/*
|
|
35400
35872
|
* The quiet state is still a mark, so it takes the tertiary step rather than
|
|
@@ -35683,7 +36155,7 @@ svg.crewlet-select__chevron {
|
|
|
35683
36155
|
}
|
|
35684
36156
|
|
|
35685
36157
|
|
|
35686
|
-
/* Stepper-
|
|
36158
|
+
/* Stepper-YQBNYCIS.css */
|
|
35687
36159
|
/*
|
|
35688
36160
|
* The stepper: where a sequence has got to (Stepper.tsx).
|
|
35689
36161
|
*
|
|
@@ -35707,6 +36179,11 @@ svg.crewlet-select__chevron {
|
|
|
35707
36179
|
a half), named because the gap and the rule both measure by it (see THE
|
|
35708
36180
|
RULE BETWEEN TWO STEPS). */
|
|
35709
36181
|
--crewlet-stepper-rule-clearance: calc(var(--spacing-1) * 1.5);
|
|
36182
|
+
/* The design's 20px pill (and a column's mark), following the density with
|
|
36183
|
+
every other step height in the kit. Declared once, and read where a layout
|
|
36184
|
+
sizes around a pill: SetupWizard's row of steps clears the target band
|
|
36185
|
+
above and under it by this height. Read it; do not set it. */
|
|
36186
|
+
--crewlet-stepper-pill-height: calc(20px * var(--density, 1));
|
|
35710
36187
|
|
|
35711
36188
|
display: flex;
|
|
35712
36189
|
flex-wrap: wrap;
|
|
@@ -35759,9 +36236,9 @@ svg.crewlet-select__chevron {
|
|
|
35759
36236
|
gap: calc(var(--spacing-1) * 1.25);
|
|
35760
36237
|
box-sizing: border-box;
|
|
35761
36238
|
/* The design's 20px pill, which follows the density with every other step
|
|
35762
|
-
height in the kit.
|
|
35763
|
-
|
|
35764
|
-
height:
|
|
36239
|
+
height in the kit. A pill that only labels takes no press; one a reader
|
|
36240
|
+
can pick clears the 24px target floor through the band below. */
|
|
36241
|
+
height: var(--crewlet-stepper-pill-height);
|
|
35765
36242
|
max-width: 100%;
|
|
35766
36243
|
padding: 0 var(--spacing-2);
|
|
35767
36244
|
border: 1px solid var(--color-border-default);
|
|
@@ -35897,12 +36374,30 @@ svg.crewlet-select__chevron {
|
|
|
35897
36374
|
}
|
|
35898
36375
|
|
|
35899
36376
|
.crewlet-stepper__chip.crewlet-stepper__target {
|
|
36377
|
+
position: relative;
|
|
35900
36378
|
font-family: var(--font-family-sans);
|
|
35901
36379
|
font-size: var(--font-size-2xs);
|
|
35902
36380
|
font-weight: var(--font-weight-medium);
|
|
35903
36381
|
line-height: 1;
|
|
35904
36382
|
}
|
|
35905
36383
|
|
|
36384
|
+
/*
|
|
36385
|
+
* A PICKABLE PILL IS PRESSED THROUGH THE TARGET FLOOR, not its own 20px: an
|
|
36386
|
+
* invisible band of --size-target-min, centred on the pill, reaches above and
|
|
36387
|
+
* under it, so a phone's row of steps takes a thumb without the pill growing
|
|
36388
|
+
* past the design's height. The band is sized and centred rather than inset
|
|
36389
|
+
* from the pill: an inset counts from inside the pill's hairline, which left
|
|
36390
|
+
* it 22px.
|
|
36391
|
+
*/
|
|
36392
|
+
.crewlet-stepper__chip.crewlet-stepper__target::after {
|
|
36393
|
+
content: '';
|
|
36394
|
+
position: absolute;
|
|
36395
|
+
inset-inline: 0;
|
|
36396
|
+
top: 50%;
|
|
36397
|
+
height: var(--size-target-min);
|
|
36398
|
+
translate: 0 -50%;
|
|
36399
|
+
}
|
|
36400
|
+
|
|
35906
36401
|
.crewlet-stepper__target:hover {
|
|
35907
36402
|
background: var(--color-surface-hover);
|
|
35908
36403
|
}
|
|
@@ -35943,9 +36438,9 @@ svg.crewlet-select__chevron {
|
|
|
35943
36438
|
.crewlet-stepper--vertical .crewlet-stepper__step:not(:last-child)::after {
|
|
35944
36439
|
content: '';
|
|
35945
36440
|
position: absolute;
|
|
35946
|
-
top: calc(var(--spacing-2) +
|
|
36441
|
+
top: calc(var(--spacing-2) + var(--crewlet-stepper-pill-height) + 4px);
|
|
35947
36442
|
bottom: calc(4px - var(--spacing-2));
|
|
35948
|
-
left: calc(var(--spacing-2) +
|
|
36443
|
+
left: calc(var(--spacing-2) + var(--crewlet-stepper-pill-height) / 2);
|
|
35949
36444
|
width: 1px;
|
|
35950
36445
|
background: var(--color-border-strong);
|
|
35951
36446
|
pointer-events: none;
|
|
@@ -35971,8 +36466,8 @@ svg.crewlet-select__chevron {
|
|
|
35971
36466
|
align-items: center;
|
|
35972
36467
|
justify-content: center;
|
|
35973
36468
|
box-sizing: border-box;
|
|
35974
|
-
width:
|
|
35975
|
-
height:
|
|
36469
|
+
width: var(--crewlet-stepper-pill-height);
|
|
36470
|
+
height: var(--crewlet-stepper-pill-height);
|
|
35976
36471
|
border: 1px solid var(--color-border-default);
|
|
35977
36472
|
border-radius: var(--radius-pill);
|
|
35978
36473
|
font-size: var(--font-size-2xs);
|
|
@@ -35989,7 +36484,7 @@ svg.crewlet-select__chevron {
|
|
|
35989
36484
|
}
|
|
35990
36485
|
|
|
35991
36486
|
.crewlet-stepper__title {
|
|
35992
|
-
line-height:
|
|
36487
|
+
line-height: var(--crewlet-stepper-pill-height);
|
|
35993
36488
|
overflow-wrap: anywhere;
|
|
35994
36489
|
}
|
|
35995
36490
|
|