@crewlethq/ui 0.55.0 → 0.57.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 +97 -4
- package/dist/Accordion/index.js +2 -2
- package/dist/AgentHandoffPanel/index.js +14 -9
- package/dist/AppShell/AppShell.d.ts +84 -1
- package/dist/AppShell/ResizeHandle.d.ts +74 -0
- package/dist/AppShell/index.d.ts +7 -2
- package/dist/AppShell/index.js +6 -4
- package/dist/AppShell/regions.d.ts +36 -0
- package/dist/AppShell/storedWidth.d.ts +47 -0
- package/dist/{AppShell-5LPXYUV3.css → AppShell-ZVCJRGXH.css} +172 -1
- package/dist/ArrangeFrame/index.js +2 -2
- package/dist/ArrangeList/index.js +5 -5
- package/dist/ArtifactBar/ArtifactBar.d.ts +13 -2
- package/dist/ArtifactBar/index.js +9 -8
- package/dist/{ArtifactBar-UMZCTARR.css → ArtifactBar-LEBMR35Y.css} +19 -1
- package/dist/ArtifactCard/index.js +6 -6
- package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +7 -1
- package/dist/ArtifactNameCell/index.js +1 -1
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +11 -17
- package/dist/ArtifactPanel/index.d.ts +3 -0
- package/dist/ArtifactPanel/index.js +8 -2
- package/dist/ArtifactPanel-TN4FFK2F.css +43 -0
- package/dist/AvatarPicker/index.js +9 -8
- package/dist/Button/index.js +2 -1
- package/dist/{Button-UWKBTKYD.css → Button-VXJ7M5XF.css} +9 -32
- package/dist/Canvas/index.js +5 -4
- package/dist/CanvasBoard/index.js +7 -6
- package/dist/CanvasToolbar/index.js +6 -5
- package/dist/ChangeList/ChangeList.d.ts +114 -0
- package/dist/ChangeList/index.d.ts +3 -0
- package/dist/ChangeList/index.js +10 -0
- package/dist/ChangeList-CB2DLR5S.css +151 -0
- package/dist/ChatThread/ChatThread.d.ts +53 -0
- package/dist/ChatThread/index.d.ts +3 -0
- package/dist/ChatThread/index.js +6 -0
- package/dist/ChatThread-52KMDXHB.css +58 -0
- package/dist/Checkbox/index.js +4 -4
- package/dist/CodeBlock/index.js +5 -4
- package/dist/ColorField/index.js +4 -4
- package/dist/ColorSwatch/index.js +5 -4
- package/dist/Combobox/index.js +5 -5
- package/dist/CommandPalette/index.js +9 -8
- package/dist/CommentThread/index.js +9 -7
- package/dist/Composer/Composer.d.ts +39 -2
- package/dist/Composer/index.js +5 -4
- package/dist/Composer-JSGTOW3F.css +192 -0
- package/dist/ConfirmField/index.js +4 -4
- package/dist/ConflictNote/index.js +3 -2
- package/dist/ContrastHelp/index.js +2 -2
- package/dist/Copyable/index.js +4 -3
- package/dist/DataGrid/driving.d.ts +48 -0
- package/dist/DataGrid/index.d.ts +2 -0
- package/dist/DataGrid/index.js +8 -7
- package/dist/DataTable/index.js +10 -9
- package/dist/DataView/index.js +14 -13
- package/dist/DatasetSource/index.js +2 -2
- package/dist/DateTimePicker/index.js +4 -3
- package/dist/DiffList/DiffList.d.ts +12 -3
- package/dist/DiffList/index.d.ts +1 -1
- package/dist/DiffList/index.js +1 -1
- package/dist/{DiffList-3EX64AAE.css → DiffList-GE6YBRLJ.css} +53 -0
- package/dist/Disclosure/anatomy.d.ts +14 -1
- package/dist/Disclosure/index.js +2 -2
- package/dist/{Disclosure-P4FH3C35.css → Disclosure-FVMA4RW2.css} +36 -0
- package/dist/DocTabsEditor/index.js +8 -7
- package/dist/DownloadButton/DownloadButton.d.ts +21 -4
- package/dist/DownloadButton/index.d.ts +1 -1
- package/dist/DownloadButton/index.js +4 -3
- package/dist/EditingStatus/index.js +2 -2
- package/dist/{Editor-GNKMX3VF.js → Editor-S4HARQ7V.js} +8 -7
- package/dist/EntityList/EntityList.d.ts +37 -0
- package/dist/EntityList/index.d.ts +3 -0
- package/dist/EntityList/index.js +10 -0
- package/dist/EntityList-XIICECVC.css +55 -0
- package/dist/ErrorBoundary/index.js +3 -2
- package/dist/FileDrop/index.js +3 -2
- package/dist/FollowBanner/index.js +3 -2
- package/dist/HuePicker/index.js +8 -7
- package/dist/IconButton/IconButton.d.ts +6 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-K24JQHLF.css → IconButton-6WA7UEBJ.css} +44 -21
- package/dist/IconTile/IconTile.d.ts +8 -2
- package/dist/IconTile/index.js +1 -1
- package/dist/{IconTile-4GNWTLAW.css → IconTile-G52XZVR4.css} +3 -0
- package/dist/InlineEditor/index.js +6 -5
- package/dist/Input/index.js +3 -3
- package/dist/LinkInterstitial/index.js +6 -5
- package/dist/ListInput/index.js +7 -6
- package/dist/LogoSlot/index.js +4 -3
- package/dist/MarkdownEditor/index.js +8 -7
- package/dist/Menu/index.js +4 -3
- package/dist/MergeConflicts/index.js +8 -7
- package/dist/MessageBubble/MessageBubble.d.ts +34 -0
- package/dist/MessageBubble/index.d.ts +3 -0
- package/dist/MessageBubble/index.js +2 -0
- package/dist/MessageBubble-GKO6X3QG.css +71 -0
- package/dist/Modal/index.js +5 -4
- package/dist/OpenInAppCard/OpenInAppCard.d.ts +44 -0
- package/dist/OpenInAppCard/index.d.ts +3 -0
- package/dist/OpenInAppCard/index.js +15 -0
- package/dist/OpenInAppCard-CKHCK7DO.css +24 -0
- package/dist/OrgTable/index.js +3 -3
- package/dist/PeekRail/PeekHost.d.ts +90 -0
- package/dist/PeekRail/PeekRail.d.ts +83 -0
- package/dist/PeekRail/activation.d.ts +30 -0
- package/dist/PeekRail/index.d.ts +8 -0
- package/dist/PeekRail/index.js +8 -0
- package/dist/PeekRail-4L5YUQMW.css +95 -0
- package/dist/PeopleRail/index.js +4 -3
- package/dist/PinTile/index.js +2 -2
- package/dist/PresenterView/index.js +5 -4
- package/dist/PrincipalPicker/index.js +6 -6
- package/dist/ProposalCard/ProposalCard.d.ts +183 -0
- package/dist/ProposalCard/index.d.ts +3 -0
- package/dist/ProposalCard/index.js +17 -0
- package/dist/ProposalCard-23575F4C.css +29 -0
- package/dist/ReceiptStrip/ReceiptStrip.d.ts +78 -0
- package/dist/ReceiptStrip/index.d.ts +3 -0
- package/dist/ReceiptStrip/index.js +5 -0
- package/dist/ReceiptStrip-IIRKRTBG.css +93 -0
- package/dist/RefusalCard/RefusalCard.d.ts +34 -0
- package/dist/RefusalCard/index.d.ts +3 -0
- package/dist/RefusalCard/index.js +10 -0
- package/dist/RefusalCard-UM67F5HB.css +8 -0
- package/dist/RelativeTime/clock.d.ts +0 -6
- package/dist/RelativeTime/index.js +1 -1
- package/dist/ResizeHandle-2UNSZ4ZQ.css +59 -0
- package/dist/ResultTableCard/ResultTableCard.d.ts +64 -0
- package/dist/ResultTableCard/index.d.ts +3 -0
- package/dist/ResultTableCard/index.js +16 -0
- package/dist/ResultTableCard-HZRUDNTX.css +40 -0
- package/dist/ReviewList/index.js +2 -2
- package/dist/RichEditor/index.js +3 -2
- package/dist/RunChip/RunChip.d.ts +53 -0
- package/dist/RunChip/index.d.ts +3 -0
- package/dist/RunChip/index.js +10 -0
- package/dist/RunChip-I2S4VZ3R.css +43 -0
- package/dist/SandboxedFrame/index.js +3 -2
- package/dist/SegmentedControl/index.js +7 -6
- package/dist/SelectionBar/index.js +4 -3
- package/dist/SendButton/SendButton.d.ts +38 -0
- package/dist/SendButton/index.d.ts +2 -0
- package/dist/SendButton/index.js +4 -0
- package/dist/SetupWizard/index.js +6 -5
- package/dist/ShareDialog/index.js +8 -7
- package/dist/SheetColumnEditor/index.js +13 -12
- package/dist/SheetGrid/index.js +7 -6
- package/dist/SidePanel/SidePanel.d.ts +137 -0
- package/dist/SidePanel/SidePanelBase.d.ts +59 -0
- package/dist/SidePanel/index.d.ts +5 -0
- package/dist/SidePanel/index.js +11 -0
- package/dist/SidePanel-ERBUIELD.css +235 -0
- package/dist/SlideCompare/index.js +3 -2
- package/dist/SlideFilmstrip/index.js +7 -6
- package/dist/SlideNav/index.js +2 -2
- package/dist/Spinner/Spinner.d.ts +35 -0
- package/dist/Spinner/index.d.ts +3 -0
- package/dist/Spinner/index.js +2 -0
- package/dist/Spinner-XZ2TVYE5.css +46 -0
- package/dist/StatusCard/StatusCard.d.ts +59 -0
- package/dist/StatusCard/index.d.ts +3 -0
- package/dist/StatusCard/index.js +9 -0
- package/dist/StatusCard-6RPEE6UU.css +62 -0
- package/dist/StepList-A4YVU4JI.css +119 -0
- package/dist/Stepper/StepList.d.ts +72 -0
- package/dist/Stepper/index.d.ts +3 -0
- package/dist/Stepper/index.js +2 -1
- package/dist/SuggestionRow/SuggestionRow.d.ts +45 -0
- package/dist/SuggestionRow/index.d.ts +3 -0
- package/dist/SuggestionRow/index.js +3 -0
- package/dist/SuggestionRow-OKBGNHSS.css +102 -0
- package/dist/Switcher/index.js +9 -8
- package/dist/Table/Table.d.ts +23 -2
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/{Table-TGCS4C3F.css → Table-RUYMMWXT.css} +49 -0
- package/dist/TableCells/index.js +2 -2
- package/dist/Tabs/index.js +6 -5
- package/dist/TagsInput/index.js +4 -4
- package/dist/ThemeGallery/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +8 -7
- package/dist/ThemeToggle/index.js +2 -2
- package/dist/TimeRangePicker/TimeRangePicker.d.ts +121 -0
- package/dist/TimeRangePicker/index.d.ts +2 -0
- package/dist/TimeRangePicker/index.js +23 -0
- package/dist/TimeWindowPicker/index.js +8 -7
- package/dist/Toaster/Toaster.d.ts +27 -3
- package/dist/Toaster/index.d.ts +2 -2
- package/dist/Toaster/index.js +1 -1
- package/dist/{Toaster-C6BQ7L6I.css → Toaster-MX7TBMC3.css} +32 -11
- package/dist/TreeCanvas/index.js +6 -5
- package/dist/TreeGrid/index.js +2 -2
- package/dist/VersionCompare/index.js +9 -8
- package/dist/VersionTimeline/index.js +4 -3
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{chunk-KHKZPZHO.js → chunk-272Y3YMV.js} +3 -3
- package/dist/{chunk-LACA4JGC.js → chunk-2BQYODY3.js} +1 -1
- package/dist/{chunk-CCPOLCZL.js → chunk-2TTFDRR3.js} +2 -2
- package/dist/{chunk-4BJK7FE5.js → chunk-3EYSYEXP.js} +1 -1
- package/dist/chunk-3LI4TRUR.js +22 -0
- package/dist/{chunk-ATCHK6LC.js → chunk-3NQS6KYG.js} +1 -1
- package/dist/{chunk-V2N3BMOT.js → chunk-45KMH3E3.js} +11 -4
- package/dist/{chunk-ZMBPEHYH.js → chunk-4CBGIRVU.js} +1 -1
- package/dist/{chunk-DFW5PDU5.js → chunk-4OINEWR4.js} +1 -1
- package/dist/{chunk-5XKI4ITH.js → chunk-56P72ZBE.js} +4 -4
- package/dist/{chunk-J24Q4HTD.js → chunk-5NT6OIPP.js} +13 -3
- package/dist/{chunk-O2KT7HBD.js → chunk-5OMV75GE.js} +3 -3
- package/dist/{chunk-6RMZH7P7.js → chunk-672GLRBU.js} +2 -2
- package/dist/{chunk-MFXN46NN.js → chunk-67F2AM4R.js} +3 -3
- package/dist/{chunk-NQCY44B3.js → chunk-67MW366X.js} +2 -2
- package/dist/{chunk-URV6MGWT.js → chunk-6KLK7E76.js} +2 -2
- package/dist/{chunk-ZFM5L7M4.js → chunk-6NJW5KSX.js} +2 -2
- package/dist/{chunk-A4GFEMVI.js → chunk-6T6V5565.js} +1 -1
- package/dist/{chunk-THDGBD6Y.js → chunk-AKFHMLEX.js} +1 -1
- package/dist/{chunk-CNGHOTHV.js → chunk-AWSFK2IK.js} +2 -2
- package/dist/{chunk-HQJ24WPM.js → chunk-AZ5BKSGV.js} +1 -1
- package/dist/chunk-BLPT6GHV.js +31 -0
- package/dist/chunk-C3FX7ZSU.js +30 -0
- package/dist/{chunk-LDGQIDIZ.js → chunk-CGT4R7LW.js} +64 -2
- package/dist/chunk-CIYHSTIF.js +182 -0
- package/dist/chunk-CZNG3V6L.js +55 -0
- package/dist/{chunk-DM4JG4M5.js → chunk-D5OSP3KI.js} +3 -3
- package/dist/{chunk-BTHQFWMG.js → chunk-DOPPU6TZ.js} +4 -4
- package/dist/{chunk-AC22RZKC.js → chunk-DRT4L4WC.js} +17 -5
- package/dist/chunk-EA23JG6R.js +9 -0
- package/dist/{chunk-WHL3XZCK.js → chunk-EBG3V4MK.js} +6 -6
- package/dist/{chunk-5JDHMDMQ.js → chunk-EDNZHW4K.js} +57 -7
- package/dist/{chunk-E6HXFFWO.js → chunk-EGL24VY5.js} +2 -2
- package/dist/{chunk-7SHAFLEX.js → chunk-ES4HR34Y.js} +2 -2
- package/dist/chunk-EVWTLFKI.js +102 -0
- package/dist/chunk-FA44M2YT.js +25 -0
- package/dist/{chunk-LKBZV5IT.js → chunk-FLTMDSC3.js} +1 -1
- package/dist/{chunk-XANKR3EP.js → chunk-FXQLNETQ.js} +2 -2
- package/dist/{chunk-G22NPQG4.js → chunk-GCASX3FD.js} +4 -4
- package/dist/{chunk-OGXHZHRX.js → chunk-GG4QZWMQ.js} +2 -2
- package/dist/{chunk-XP7EXNKF.js → chunk-GPW4M4OI.js} +2 -2
- package/dist/chunk-GZMEWWXW.js +78 -0
- package/dist/{chunk-OG6CL3EB.js → chunk-HD4QJ2SI.js} +3 -2
- package/dist/{chunk-SYY26XBX.js → chunk-HGCDJOEF.js} +2 -2
- package/dist/chunk-HGYHWWA5.js +54 -0
- package/dist/{chunk-ZS63CFDO.js → chunk-HL4CPLEK.js} +7 -7
- package/dist/{chunk-BEHFTRMZ.js → chunk-HNK43Z3P.js} +23 -5
- package/dist/{chunk-UO7JZVCO.js → chunk-HVEDVKXL.js} +1 -1
- package/dist/{chunk-FS4IH7VB.js → chunk-I7VG6RQE.js} +2 -2
- package/dist/{chunk-3RCHEFIL.js → chunk-ICJRP6QW.js} +2 -2
- package/dist/{chunk-YRIZAIU6.js → chunk-IDQBSMMZ.js} +2 -2
- package/dist/chunk-JILNCBBS.js +27 -0
- package/dist/{chunk-W5GM452Z.js → chunk-JJ3NOBJ6.js} +5 -5
- package/dist/chunk-JLRXCKTS.js +97 -0
- package/dist/{chunk-OJCVVCAZ.js → chunk-JMMS2PQU.js} +1 -1
- package/dist/{chunk-IVAR7NRW.js → chunk-JS2TRHBF.js} +3 -3
- package/dist/{chunk-3CZ7XAVY.js → chunk-KS7YIJ4S.js} +10 -6
- package/dist/{chunk-MU5KH3JF.js → chunk-LQ6AGUDL.js} +2 -2
- package/dist/chunk-LXYSWQNE.js +214 -0
- package/dist/chunk-LZXY6IMO.js +68 -0
- package/dist/{chunk-EKLEYNGR.js → chunk-MYX4XABB.js} +3 -3
- package/dist/{chunk-PM3JVNRY.js → chunk-N3ISZVLK.js} +1 -1
- package/dist/chunk-NEHSV55H.js +119 -0
- package/dist/{chunk-LLHO4FJK.js → chunk-NHJQXDHA.js} +1 -1
- package/dist/{chunk-F6CKQX5D.js → chunk-NK3D66PB.js} +2 -2
- package/dist/{chunk-RHPBTE3F.js → chunk-NQGZRMUG.js} +1 -1
- package/dist/chunk-NVZCANJ5.js +3 -0
- package/dist/{chunk-RRO7UEYU.js → chunk-OHBXOEP3.js} +1 -1
- package/dist/{chunk-USVUSO3S.js → chunk-OHG7762N.js} +1 -1
- package/dist/{chunk-OBUQVGEG.js → chunk-OJ2QULVH.js} +1 -1
- package/dist/{chunk-ITTECHM4.js → chunk-OOZ5AGPS.js} +5 -5
- package/dist/{chunk-BZXY2L2D.js → chunk-OYAXKHVW.js} +1 -1
- package/dist/{chunk-WQQ5T5SA.js → chunk-OZIBNFLO.js} +1 -1
- package/dist/{chunk-DFK5EQTU.js → chunk-PDTEPN4D.js} +1 -1
- package/dist/chunk-PIYJNCN7.js +124 -0
- package/dist/{chunk-ZVV2VERB.js → chunk-Q6R6EUQ4.js} +3 -3
- package/dist/chunk-QYEOGGVS.js +161 -0
- package/dist/{chunk-NWGGH2LN.js → chunk-QZ4B72FP.js} +3 -3
- package/dist/chunk-RV2FGESF.js +98 -0
- package/dist/{chunk-TQ3C3Q7V.js → chunk-S5C64PTT.js} +1 -1
- package/dist/chunk-SDSBVVLL.js +45 -0
- package/dist/{chunk-ZNOXQACX.js → chunk-T4D7RZNI.js} +2 -2
- package/dist/{chunk-TDVPYBNL.js → chunk-TA72CURM.js} +1 -1
- package/dist/{chunk-WXOYHVWG.js → chunk-TD3UHDFY.js} +4 -4
- package/dist/{chunk-H7FUQCQY.js → chunk-TDQZ4LB5.js} +8 -6
- package/dist/chunk-TFGCNBWP.js +64 -0
- package/dist/{chunk-TMM32U7D.js → chunk-TKS7FTTO.js} +2 -2
- package/dist/{chunk-NKHS2RQ2.js → chunk-U5PJSGHG.js} +1 -1
- package/dist/{chunk-7CGPPAYR.js → chunk-UV4LOQ3E.js} +1 -1
- package/dist/{chunk-ON2E46DX.js → chunk-VRNUKH2W.js} +1 -1
- package/dist/{chunk-XX2VQE55.js → chunk-WBRC3MNE.js} +1 -1
- package/dist/{chunk-NTZQN7OR.js → chunk-WBTCOFMZ.js} +2 -2
- package/dist/chunk-WDIVALLP.js +51 -0
- package/dist/{chunk-QMIWMLFI.js → chunk-WOW5SCEK.js} +1 -1
- package/dist/chunk-XODESBSR.js +250 -0
- package/dist/{chunk-EJWPYEG4.js → chunk-XRZGGB6I.js} +1 -1
- package/dist/{chunk-34C7NYIQ.js → chunk-Y73BQL74.js} +1 -1
- package/dist/{chunk-KIRQZG3G.js → chunk-YCGZK2E4.js} +1 -1
- package/dist/{chunk-5TK3C6RG.js → chunk-YCZ2FBKA.js} +1 -1
- package/dist/{chunk-TV2QW6GX.js → chunk-YEURM24I.js} +3 -3
- package/dist/{chunk-34ANLQW2.js → chunk-YGC7BFX2.js} +211 -9
- package/dist/{chunk-IW55G7XG.js → chunk-YNRKVY7X.js} +11 -1
- package/dist/{chunk-LFHCXZO5.js → chunk-Z3GDMNMU.js} +3 -3
- package/dist/{chunk-LQPU5O3B.js → chunk-Z7PJF6F3.js} +3 -3
- package/dist/{chunk-HDHL773Z.js → chunk-ZH4MJM73.js} +1 -1
- package/dist/generated/index.d.ts +17 -0
- package/dist/generated/index.js +140 -121
- package/dist/index.js +140 -121
- package/dist/styles.css +1887 -218
- package/dist/utils/index.js +1 -1
- package/dist/utils/useDownload.d.ts +6 -0
- package/package.json +3 -3
- package/dist/ArtifactPanel-KKUUIPEU.css +0 -159
- package/dist/Composer-TXULCPPV.css +0 -99
- package/dist/chunk-4E5MWUUJ.js +0 -48
- package/dist/chunk-FZVJDJFN.js +0 -54
- package/dist/chunk-IXJHTFXG.js +0 -17
- package/dist/chunk-NBDN5JZV.js +0 -123
- package/dist/{chunk-UTESMBPL.js → chunk-ESUZ27TS.js} +1 -1
- /package/dist/{chunk-55MPFB2U.js → chunk-EWTPXRRM.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
}
|
|
703
703
|
|
|
704
704
|
|
|
705
|
-
/* AppShell-
|
|
705
|
+
/* AppShell-ZVCJRGXH.css */
|
|
706
706
|
/*
|
|
707
707
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
708
708
|
* floats beside it.
|
|
@@ -731,6 +731,25 @@
|
|
|
731
731
|
.crewlet-app-shell {
|
|
732
732
|
--crewlet-app-shell-rail: var(--size-shell-rail);
|
|
733
733
|
--crewlet-app-shell-topbar: var(--size-shell-topbar);
|
|
734
|
+
/* What stands on the frame to the sheet's left: the rail's column, or
|
|
735
|
+
nothing where there is no rail or the rail is a drawer. The aside's cap
|
|
736
|
+
below subtracts it, so it is one name for both. */
|
|
737
|
+
--crewlet-app-shell-beside: var(--crewlet-app-shell-rail);
|
|
738
|
+
/* THE ASIDE'S TRACK, while it is a column: the panel's width and the inset
|
|
739
|
+
it is held off the window's edge by, capped so the sheet keeps the
|
|
740
|
+
host's floor (`--crewlet-app-shell-aside-reserve`, the page's sheet with
|
|
741
|
+
its own inset and hairlines). The host publishes both widths on this
|
|
742
|
+
element; with no reserve the panel takes the width it was given. */
|
|
743
|
+
--crewlet-app-shell-aside-track: calc(
|
|
744
|
+
min(
|
|
745
|
+
var(--crewlet-app-shell-aside),
|
|
746
|
+
max(
|
|
747
|
+
0px,
|
|
748
|
+
100% - var(--crewlet-app-shell-beside) - var(--crewlet-app-shell-aside-reserve, 0px) - var(--size-shell-inset)
|
|
749
|
+
)
|
|
750
|
+
) +
|
|
751
|
+
var(--size-shell-inset)
|
|
752
|
+
);
|
|
734
753
|
/* Where the drawer's veil sits while it is open. The shell replaces it with
|
|
735
754
|
the surface's own place in the layer band; this default only has to clear
|
|
736
755
|
the page chrome for the moment before that lands. */
|
|
@@ -761,10 +780,22 @@
|
|
|
761
780
|
* beaten the narrow block's one.
|
|
762
781
|
*/
|
|
763
782
|
.crewlet-app-shell--no-rail {
|
|
783
|
+
--crewlet-app-shell-beside: 0px;
|
|
764
784
|
grid-template-columns: minmax(0, 1fr);
|
|
765
785
|
padding-left: var(--size-shell-inset);
|
|
766
786
|
}
|
|
767
787
|
|
|
788
|
+
/* THE ASIDE AS A COLUMN: a third track, mirroring the rail. The page's sheet
|
|
789
|
+
keeps its column and is only narrower, so nothing under the bar moves but
|
|
790
|
+
its end edge. */
|
|
791
|
+
.crewlet-app-shell[data-aside='column'] {
|
|
792
|
+
grid-template-columns: var(--crewlet-app-shell-rail) minmax(0, 1fr) var(--crewlet-app-shell-aside-track);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
.crewlet-app-shell--no-rail[data-aside='column'] {
|
|
796
|
+
grid-template-columns: minmax(0, 1fr) var(--crewlet-app-shell-aside-track);
|
|
797
|
+
}
|
|
798
|
+
|
|
768
799
|
/* The skip link, drawn only while it holds focus, over everything. */
|
|
769
800
|
.crewlet-app-shell__skip {
|
|
770
801
|
position: fixed;
|
|
@@ -1295,8 +1326,22 @@
|
|
|
1295
1326
|
* and a short one does not shift every element sideways by the scrollbar's
|
|
1296
1327
|
* width, which reads as the page jumping on each move.
|
|
1297
1328
|
*/
|
|
1298
|
-
|
|
1329
|
+
/*
|
|
1330
|
+
* THE BODY: the row under the bar that the scroller and a peek column share.
|
|
1331
|
+
* It takes the sheet's remaining height, and the scroller takes the row's
|
|
1332
|
+
* remaining width, so a sheet with no peek draws exactly as it did before the
|
|
1333
|
+
* row existed.
|
|
1334
|
+
*/
|
|
1335
|
+
.crewlet-app-shell__body {
|
|
1336
|
+
display: flex;
|
|
1299
1337
|
flex: 1 1 auto;
|
|
1338
|
+
min-width: 0;
|
|
1339
|
+
min-height: 0;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
.crewlet-app-shell__main {
|
|
1343
|
+
flex: 1 1 0%;
|
|
1344
|
+
min-width: 0;
|
|
1300
1345
|
min-height: 0;
|
|
1301
1346
|
overflow-y: auto;
|
|
1302
1347
|
overflow-x: hidden;
|
|
@@ -1395,11 +1440,131 @@
|
|
|
1395
1440
|
background: var(--color-surface-scrim);
|
|
1396
1441
|
}
|
|
1397
1442
|
|
|
1443
|
+
/*
|
|
1444
|
+
* THE ASIDE: a second sheet on the frame, to the right of the page's, the
|
|
1445
|
+
* same ground, hairline and corner, held off the window's top, right and
|
|
1446
|
+
* bottom by the inset. The seam between the two sheets is the page sheet's
|
|
1447
|
+
* own end inset, and the grip stands in it (`ResizeHandle`, outside the
|
|
1448
|
+
* sheet that clips). The sheet clips what it holds to its corner, so the
|
|
1449
|
+
* panel inside runs square to its edges.
|
|
1450
|
+
*/
|
|
1451
|
+
.crewlet-app-shell__aside {
|
|
1452
|
+
position: relative;
|
|
1453
|
+
display: flex;
|
|
1454
|
+
flex-direction: column;
|
|
1455
|
+
grid-column: -2 / -1;
|
|
1456
|
+
grid-row: 1;
|
|
1457
|
+
min-width: 0;
|
|
1458
|
+
min-height: 0;
|
|
1459
|
+
margin: var(--size-shell-inset) var(--size-shell-inset) var(--size-shell-inset) 0;
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
/* The grip stands in the seam and over the sheet's hairline, which is the
|
|
1463
|
+
edge it moves. */
|
|
1464
|
+
.crewlet-app-shell__aside > .crewlet-resize-handle--left {
|
|
1465
|
+
left: calc((var(--crewlet-resize-handle-width) + 1px) * -1);
|
|
1466
|
+
width: calc(var(--crewlet-resize-handle-width) + 1px);
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
.crewlet-app-shell__aside-sheet {
|
|
1470
|
+
display: flex;
|
|
1471
|
+
flex: 1 1 auto;
|
|
1472
|
+
flex-direction: column;
|
|
1473
|
+
min-width: 0;
|
|
1474
|
+
min-height: 0;
|
|
1475
|
+
border: 1px solid var(--color-border-default);
|
|
1476
|
+
border-radius: var(--radius-sheet);
|
|
1477
|
+
background: var(--color-surface-background);
|
|
1478
|
+
overflow: hidden;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
/* A dialog takes focus on itself only as the stack's last resort, so its
|
|
1482
|
+
own ring would draw round the whole panel; its content draws the focus.
|
|
1483
|
+
Transparent rather than none, so forced colours still draw one. */
|
|
1484
|
+
.crewlet-app-shell__aside:focus {
|
|
1485
|
+
outline: 2px solid transparent;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
/*
|
|
1489
|
+
* THE OVERLAY: over the page's end edge, lifted off it, behind a veil. It
|
|
1490
|
+
* keeps the column's corner and inset, so the panel is the same sheet in
|
|
1491
|
+
* both shapes and only its ground changes, and it never takes the whole
|
|
1492
|
+
* window: a strip of the page stays in view to say what it is over.
|
|
1493
|
+
*/
|
|
1494
|
+
.crewlet-app-shell__aside[data-shape='overlay'] {
|
|
1495
|
+
position: fixed;
|
|
1496
|
+
top: 0;
|
|
1497
|
+
right: 0;
|
|
1498
|
+
bottom: 0;
|
|
1499
|
+
z-index: var(--z-index-overlay);
|
|
1500
|
+
width: min(var(--crewlet-app-shell-aside), calc(100vw - var(--spacing-10) - var(--size-shell-inset) * 2));
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
.crewlet-app-shell__aside[data-shape='overlay'] > .crewlet-app-shell__aside-sheet {
|
|
1504
|
+
box-shadow: var(--shadow-xl);
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
/* THE SHEET: the whole window on a phone, its inset, corner and hairline
|
|
1508
|
+
collapsed to nothing, as the page's sheet is under the shell step. */
|
|
1509
|
+
.crewlet-app-shell__aside[data-shape='sheet'] {
|
|
1510
|
+
position: fixed;
|
|
1511
|
+
inset: 0;
|
|
1512
|
+
z-index: var(--z-index-overlay);
|
|
1513
|
+
margin: 0;
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
.crewlet-app-shell__aside[data-shape='sheet'] > .crewlet-app-shell__aside-sheet {
|
|
1517
|
+
border-width: 0;
|
|
1518
|
+
border-radius: 0;
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
/* What a modal aside sits on: the dialog's ground, the application faded
|
|
1522
|
+
back into its own frame, rather than the rail drawer's darker scrim. */
|
|
1523
|
+
.crewlet-app-shell__aside-veil {
|
|
1524
|
+
background: var(--color-surface-veil);
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
/*
|
|
1528
|
+
* AN ENTRANCE, never an exit: the panel arrives from the edge it stands on,
|
|
1529
|
+
* and leaves at once when it is closed, so a close is never a wait. The page
|
|
1530
|
+
* beside a column reflows at once, because a grid track that appears has no
|
|
1531
|
+
* width to start from.
|
|
1532
|
+
*/
|
|
1533
|
+
@keyframes crewlet-app-shell-aside-in {
|
|
1534
|
+
from {
|
|
1535
|
+
opacity: 0;
|
|
1536
|
+
transform: translateX(var(--spacing-4));
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
@keyframes crewlet-app-shell-aside-slide {
|
|
1541
|
+
from {
|
|
1542
|
+
transform: translateX(calc(100% + var(--size-shell-inset)));
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
.crewlet-app-shell__aside[data-shape='column'] > .crewlet-app-shell__aside-sheet {
|
|
1547
|
+
animation: crewlet-app-shell-aside-in var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
.crewlet-app-shell__aside[data-shape='overlay'],
|
|
1551
|
+
.crewlet-app-shell__aside[data-shape='sheet'] {
|
|
1552
|
+
animation: crewlet-app-shell-aside-slide var(--motion-duration-slow) var(--motion-easing-emphasized);
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1398
1555
|
@media (width < 1024px) {
|
|
1399
1556
|
.crewlet-app-shell {
|
|
1557
|
+
--crewlet-app-shell-beside: 0px;
|
|
1400
1558
|
grid-template-columns: minmax(0, 1fr);
|
|
1401
1559
|
}
|
|
1402
1560
|
|
|
1561
|
+
/* The host decides the aside's shape, so a column it asks for under the
|
|
1562
|
+
step is still a column; the rail is a drawer here and takes no track. */
|
|
1563
|
+
.crewlet-app-shell[data-aside='column'],
|
|
1564
|
+
.crewlet-app-shell--no-rail[data-aside='column'] {
|
|
1565
|
+
grid-template-columns: minmax(0, 1fr) var(--crewlet-app-shell-aside-track);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1403
1568
|
.crewlet-app-shell--no-rail {
|
|
1404
1569
|
padding-left: 0;
|
|
1405
1570
|
}
|
|
@@ -1490,6 +1655,12 @@
|
|
|
1490
1655
|
.crewlet-app-shell__rail-status-mark--action {
|
|
1491
1656
|
transition: none;
|
|
1492
1657
|
}
|
|
1658
|
+
|
|
1659
|
+
.crewlet-app-shell__aside[data-shape='column'] > .crewlet-app-shell__aside-sheet,
|
|
1660
|
+
.crewlet-app-shell__aside[data-shape='overlay'],
|
|
1661
|
+
.crewlet-app-shell__aside[data-shape='sheet'] {
|
|
1662
|
+
animation: none;
|
|
1663
|
+
}
|
|
1493
1664
|
}
|
|
1494
1665
|
|
|
1495
1666
|
/* ── the account row ───────────────────────────────────────────────────── */
|
|
@@ -2490,7 +2661,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2490
2661
|
}
|
|
2491
2662
|
|
|
2492
2663
|
|
|
2493
|
-
/* ArtifactBar-
|
|
2664
|
+
/* ArtifactBar-LEBMR35Y.css */
|
|
2494
2665
|
/*
|
|
2495
2666
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2496
2667
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2503,7 +2674,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2503
2674
|
* width the presence stack goes (the People control still counts who is
|
|
2504
2675
|
* here), then the labelled tools' words, and under a phone's two panes the
|
|
2505
2676
|
* views, the unlabelled tools and the kind's glyph fold away, the first two
|
|
2506
|
-
* into More.
|
|
2677
|
+
* into More. The host's own control at the end (`end`) never folds.
|
|
2507
2678
|
*/
|
|
2508
2679
|
|
|
2509
2680
|
.crewlet-artifact-bar {
|
|
@@ -2764,6 +2935,19 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2764
2935
|
display: none;
|
|
2765
2936
|
}
|
|
2766
2937
|
|
|
2938
|
+
/* THE HOST'S OWN CONTROL ENDS THE ROW (`end`), such as the Ask button every
|
|
2939
|
+
page bar ends with: a step further from the bar's own tools than they
|
|
2940
|
+
stand from each other, so it reads as the frame's rather than the
|
|
2941
|
+
artifact's. It never folds and never wraps; the title gives way to it. */
|
|
2942
|
+
.crewlet-artifact-bar__trail {
|
|
2943
|
+
display: inline-flex;
|
|
2944
|
+
flex: none;
|
|
2945
|
+
align-items: center;
|
|
2946
|
+
gap: var(--spacing-1);
|
|
2947
|
+
margin-inline-start: var(--spacing-1);
|
|
2948
|
+
white-space: nowrap;
|
|
2949
|
+
}
|
|
2950
|
+
|
|
2767
2951
|
/* A rule between two groups of tools: the kind's, then every artifact's. */
|
|
2768
2952
|
.crewlet-artifact-bar__rule {
|
|
2769
2953
|
width: 1px;
|
|
@@ -2850,6 +3034,11 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2850
3034
|
flex: none;
|
|
2851
3035
|
}
|
|
2852
3036
|
|
|
3037
|
+
/* The phone's row is tight, and so is the host's control beside More. */
|
|
3038
|
+
.crewlet-artifact-bar__end > .crewlet-artifact-bar__trail {
|
|
3039
|
+
margin-inline-start: 0;
|
|
3040
|
+
}
|
|
3041
|
+
|
|
2853
3042
|
.crewlet-artifact-bar__end > .crewlet-artifact-bar__status {
|
|
2854
3043
|
display: block;
|
|
2855
3044
|
flex: 0 1 auto;
|
|
@@ -3971,165 +4160,49 @@ a.crewlet-make-row__item:active {
|
|
|
3971
4160
|
}
|
|
3972
4161
|
|
|
3973
4162
|
|
|
3974
|
-
/* ArtifactPanel-
|
|
4163
|
+
/* ArtifactPanel-TN4FFK2F.css */
|
|
3975
4164
|
/*
|
|
3976
|
-
* The
|
|
3977
|
-
*
|
|
3978
|
-
* artifact
|
|
4165
|
+
* The artifact's presets of the side panel and its frame (`ArtifactPanel`,
|
|
4166
|
+
* `ArtifactWorkspace`). SidePanel.css draws them; what is here is only what
|
|
4167
|
+
* the artifact sets differently, and the names it has always published.
|
|
3979
4168
|
*
|
|
3980
|
-
*
|
|
3981
|
-
*
|
|
4169
|
+
* Every rule names BOTH classes, so it outranks the side panel's own rule of
|
|
4170
|
+
* one class whichever of the two stylesheets a bundle puts first.
|
|
3982
4171
|
*/
|
|
3983
4172
|
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
min-width: 0;
|
|
3989
|
-
min-height: 0;
|
|
4173
|
+
/* The workspace answers to its own container name as well as the frame's,
|
|
4174
|
+
so a page's `@container crewlet-artifact-workspace` query keeps matching. */
|
|
4175
|
+
.crewlet-side-panel-frame.crewlet-artifact-workspace {
|
|
4176
|
+
container-name: crewlet-side-panel-frame crewlet-artifact-workspace;
|
|
3990
4177
|
}
|
|
3991
4178
|
|
|
3992
|
-
.crewlet-artifact-
|
|
3993
|
-
flex: 1 1 auto;
|
|
3994
|
-
min-width: 0;
|
|
3995
|
-
min-height: 0;
|
|
3996
|
-
overflow: auto;
|
|
3997
|
-
}
|
|
3998
|
-
|
|
3999
|
-
/* EXPANDED, the panel is the workspace; the body stays mounted behind it. */
|
|
4000
|
-
.crewlet-artifact-workspace[data-panel='expanded'] > .crewlet-artifact-workspace__body {
|
|
4001
|
-
display: none;
|
|
4002
|
-
}
|
|
4003
|
-
|
|
4004
|
-
.crewlet-artifact-panel {
|
|
4179
|
+
.crewlet-side-panel.crewlet-artifact-panel {
|
|
4005
4180
|
/* THE TEXT WIDTH, every panel of facts, a list or a form: three widths for
|
|
4006
4181
|
those moved the artifact's edge 80px between Details and History. */
|
|
4007
4182
|
--crewlet-artifact-panel-width: 22.5rem;
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
width: var(--crewlet-artifact-panel-width);
|
|
4012
|
-
min-height: 0;
|
|
4013
|
-
border-left: 1px solid var(--color-border-default);
|
|
4014
|
-
background: var(--color-surface-background);
|
|
4183
|
+
--crewlet-side-panel-width: var(--crewlet-artifact-panel-width);
|
|
4184
|
+
/* The head on the row step, under the artifact's own bar. */
|
|
4185
|
+
--crewlet-side-panel-head-height: var(--size-row-lg);
|
|
4015
4186
|
}
|
|
4016
4187
|
|
|
4017
|
-
.crewlet-artifact-panel--lg {
|
|
4188
|
+
.crewlet-side-panel.crewlet-artifact-panel--lg {
|
|
4018
4189
|
--crewlet-artifact-panel-width: 36rem;
|
|
4019
4190
|
}
|
|
4020
4191
|
|
|
4021
|
-
.
|
|
4022
|
-
|
|
4023
|
-
width: auto;
|
|
4024
|
-
border-left: 0;
|
|
4025
|
-
}
|
|
4026
|
-
|
|
4027
|
-
.crewlet-artifact-panel__head {
|
|
4028
|
-
display: flex;
|
|
4029
|
-
flex: none;
|
|
4030
|
-
align-items: center;
|
|
4031
|
-
gap: var(--spacing-2);
|
|
4032
|
-
height: var(--size-row-lg);
|
|
4033
|
-
padding: 0 var(--spacing-2) 0 var(--spacing-4);
|
|
4034
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
4035
|
-
}
|
|
4036
|
-
|
|
4037
|
-
.crewlet-artifact-panel__icon {
|
|
4038
|
-
display: inline-flex;
|
|
4039
|
-
flex: none;
|
|
4040
|
-
color: var(--color-text-tertiary);
|
|
4041
|
-
}
|
|
4042
|
-
|
|
4043
|
-
.crewlet-artifact-panel__title {
|
|
4044
|
-
flex: 1 1 auto;
|
|
4045
|
-
min-width: 0;
|
|
4046
|
-
margin: 0;
|
|
4047
|
-
overflow: hidden;
|
|
4048
|
-
color: var(--color-text-primary);
|
|
4049
|
-
font-size: var(--font-size-sm);
|
|
4050
|
-
font-weight: var(--font-weight-semibold);
|
|
4051
|
-
line-height: var(--font-line-height-snug);
|
|
4052
|
-
text-overflow: ellipsis;
|
|
4053
|
-
white-space: nowrap;
|
|
4054
|
-
}
|
|
4055
|
-
|
|
4056
|
-
.crewlet-artifact-panel__title:focus-visible {
|
|
4192
|
+
/* The heading rings when the keyboard reaches it, as it always has here. */
|
|
4193
|
+
.crewlet-side-panel__title.crewlet-artifact-panel__title:focus-visible {
|
|
4057
4194
|
outline: 2px solid var(--color-focus);
|
|
4058
4195
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
4059
4196
|
border-radius: var(--radius-sm);
|
|
4060
4197
|
}
|
|
4061
4198
|
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
}
|
|
4068
|
-
|
|
4069
|
-
/* THE BODY'S INSET IS PUBLISHED (--crewlet-artifact-panel-inset) for content
|
|
4070
|
-
that sticks to its scrollport: a sticky edge stops at the padding, so a
|
|
4071
|
-
foot with `bottom: 0` left a band under it that the content scrolled
|
|
4072
|
-
through; such a foot offsets itself by the inset to sit on the edge. */
|
|
4073
|
-
.crewlet-artifact-panel__body {
|
|
4074
|
-
/* THE PANEL'S OWN MEASURE, so what it holds folds to the panel's width
|
|
4075
|
-
rather than the window's; and its sections head at the panel title's
|
|
4076
|
-
step, a level under it and never louder than it. */
|
|
4077
|
-
container: crewlet-artifact-panel / inline-size;
|
|
4078
|
-
--crewlet-section-title-size: var(--font-size-sm);
|
|
4199
|
+
/* THE BODY'S INSET IS PUBLISHED under its own name too
|
|
4200
|
+
(--crewlet-artifact-panel-inset), which a sticky foot offsets itself by,
|
|
4201
|
+
and the body answers to its own container name. */
|
|
4202
|
+
.crewlet-side-panel__body.crewlet-artifact-panel__body {
|
|
4203
|
+
container-name: crewlet-side-panel crewlet-artifact-panel;
|
|
4079
4204
|
--crewlet-artifact-panel-inset: var(--spacing-4);
|
|
4080
|
-
|
|
4081
|
-
/* A COLUMN, so content that should fit the panel rather than scroll it
|
|
4082
|
-
can: a child that sets `min-height: 0` shrinks to the room the body has
|
|
4083
|
-
(a sheet's rows, whose grid then scrolls itself), and every other child
|
|
4084
|
-
keeps its content's height and scrolls the body as before. */
|
|
4085
|
-
display: flex;
|
|
4086
|
-
flex-direction: column;
|
|
4087
|
-
flex: 1 1 auto;
|
|
4088
|
-
min-height: 0;
|
|
4089
|
-
padding: var(--crewlet-artifact-panel-inset);
|
|
4090
|
-
overflow: auto;
|
|
4091
|
-
overscroll-behavior: contain;
|
|
4092
|
-
}
|
|
4093
|
-
|
|
4094
|
-
/* THE FOOT holds the panel's own commit, outside the scrolling body, so it
|
|
4095
|
-
stays in reach at every scroll. Its inset is the body's. */
|
|
4096
|
-
.crewlet-artifact-panel__foot {
|
|
4097
|
-
flex: none;
|
|
4098
|
-
padding: var(--spacing-3) var(--spacing-4);
|
|
4099
|
-
border-top: 1px solid var(--color-border-default);
|
|
4100
|
-
background: var(--color-surface-background);
|
|
4101
|
-
}
|
|
4102
|
-
|
|
4103
|
-
/* NOT ROOM FOR TWO COLUMNS: the panel slides over the artifact's end edge,
|
|
4104
|
-
raised off it, rather than squeezing the artifact under a useful width. */
|
|
4105
|
-
@container crewlet-artifact-workspace (width < 960px) {
|
|
4106
|
-
.crewlet-artifact-panel {
|
|
4107
|
-
position: absolute;
|
|
4108
|
-
inset-block: 0;
|
|
4109
|
-
inset-inline-end: 0;
|
|
4110
|
-
z-index: var(--z-index-overlay);
|
|
4111
|
-
width: min(var(--crewlet-artifact-panel-width), 100%);
|
|
4112
|
-
/* THE DRAWER'S LIFT, the shell's own rail drawer's: the large step falls
|
|
4113
|
-
below a box and left the panel's start edge reading as a cut through
|
|
4114
|
-
the artifact rather than a sheet over it. */
|
|
4115
|
-
box-shadow: var(--shadow-xl);
|
|
4116
|
-
}
|
|
4117
|
-
|
|
4118
|
-
.crewlet-artifact-panel[data-expanded] {
|
|
4119
|
-
inset-inline-start: 0;
|
|
4120
|
-
width: auto;
|
|
4121
|
-
box-shadow: none;
|
|
4122
|
-
}
|
|
4123
|
-
}
|
|
4124
|
-
|
|
4125
|
-
/* A PHONE: the panel is the screen until it is closed. */
|
|
4126
|
-
@container crewlet-artifact-workspace (width < 640px) {
|
|
4127
|
-
.crewlet-artifact-panel {
|
|
4128
|
-
inset-inline-start: 0;
|
|
4129
|
-
width: auto;
|
|
4130
|
-
border-left: 0;
|
|
4131
|
-
box-shadow: none;
|
|
4132
|
-
}
|
|
4205
|
+
--crewlet-side-panel-inset: var(--crewlet-artifact-panel-inset);
|
|
4133
4206
|
}
|
|
4134
4207
|
|
|
4135
4208
|
|
|
@@ -5346,7 +5419,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5346
5419
|
}
|
|
5347
5420
|
|
|
5348
5421
|
|
|
5349
|
-
/* Button-
|
|
5422
|
+
/* Button-VXJ7M5XF.css */
|
|
5350
5423
|
/*
|
|
5351
5424
|
* The button, and the link drawn as one.
|
|
5352
5425
|
*
|
|
@@ -5656,47 +5729,24 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5656
5729
|
}
|
|
5657
5730
|
|
|
5658
5731
|
/*
|
|
5659
|
-
* Pending. The spinner
|
|
5660
|
-
* one neither moves nor changes width
|
|
5661
|
-
* as it was: a button whose text
|
|
5662
|
-
* does.
|
|
5732
|
+
* Pending. The spinner (the package's one ring, `Spinner`) takes the leading
|
|
5733
|
+
* icon's place, so a button that has one neither moves nor changes width
|
|
5734
|
+
* mid-action, and the label stays exactly as it was: a button whose text
|
|
5735
|
+
* becomes "Saving" has stopped saying what it does. The ring's drawing, its
|
|
5736
|
+
* turn and its reduced-motion stop are Spinner.css's.
|
|
5737
|
+
*
|
|
5738
|
+
* A disabled button already reads as unavailable; a loading one should still
|
|
5739
|
+
* read as this button, mid-action.
|
|
5663
5740
|
*/
|
|
5664
|
-
.crewlet-btn__spinner {
|
|
5665
|
-
display: inline-block;
|
|
5666
|
-
width: 1em;
|
|
5667
|
-
height: 1em;
|
|
5668
|
-
border: 2px solid currentColor;
|
|
5669
|
-
border-right-color: transparent;
|
|
5670
|
-
border-radius: var(--radius-circle);
|
|
5671
|
-
opacity: 0.7;
|
|
5672
|
-
animation: crewlet-btn-spin var(--motion-duration-slow) linear infinite;
|
|
5673
|
-
flex: none;
|
|
5674
|
-
}
|
|
5675
|
-
|
|
5676
|
-
@keyframes crewlet-btn-spin {
|
|
5677
|
-
to {
|
|
5678
|
-
transform: rotate(360deg);
|
|
5679
|
-
}
|
|
5680
|
-
}
|
|
5681
|
-
|
|
5682
|
-
/* A disabled button already reads as unavailable; a loading one should still
|
|
5683
|
-
read as this button, mid-action. */
|
|
5684
5741
|
.crewlet-btn--loading {
|
|
5685
5742
|
cursor: progress;
|
|
5686
5743
|
}
|
|
5687
5744
|
|
|
5688
|
-
/*
|
|
5689
|
-
* A spinner that cannot spin should not pretend to, and a colour change that
|
|
5690
|
-
* cannot fade is still a colour change. The ring reads as pending either way.
|
|
5691
|
-
*/
|
|
5745
|
+
/* A colour change that cannot fade is still a colour change. */
|
|
5692
5746
|
@media (prefers-reduced-motion: reduce) {
|
|
5693
5747
|
.crewlet-btn {
|
|
5694
5748
|
transition: none;
|
|
5695
5749
|
}
|
|
5696
|
-
|
|
5697
|
-
.crewlet-btn__spinner {
|
|
5698
|
-
animation: none;
|
|
5699
|
-
}
|
|
5700
5750
|
}
|
|
5701
5751
|
|
|
5702
5752
|
|
|
@@ -7667,6 +7717,160 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7667
7717
|
}
|
|
7668
7718
|
|
|
7669
7719
|
|
|
7720
|
+
/* ChangeList-CB2DLR5S.css */
|
|
7721
|
+
/*
|
|
7722
|
+
* What a change will do, as a before and after on PropertyList's grid: one
|
|
7723
|
+
* label column (as wide as the longest label, never under 92px) and one value
|
|
7724
|
+
* column, rows a spacing step apart with no rules, and the tones of DiffList.
|
|
7725
|
+
*/
|
|
7726
|
+
.crewlet-change-list {
|
|
7727
|
+
display: flex;
|
|
7728
|
+
flex-direction: column;
|
|
7729
|
+
gap: var(--spacing-2);
|
|
7730
|
+
min-width: 0;
|
|
7731
|
+
}
|
|
7732
|
+
|
|
7733
|
+
/* The eyebrow register: a heading a reader passes over to reach the rows. */
|
|
7734
|
+
.crewlet-change-list__heading {
|
|
7735
|
+
font-size: var(--font-size-2xs);
|
|
7736
|
+
font-weight: var(--font-weight-medium);
|
|
7737
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
7738
|
+
text-transform: uppercase;
|
|
7739
|
+
color: var(--color-text-tertiary);
|
|
7740
|
+
}
|
|
7741
|
+
|
|
7742
|
+
.crewlet-change-list__rows {
|
|
7743
|
+
display: grid;
|
|
7744
|
+
grid-template-columns: var(--crewlet-description-list-term, minmax(92px, max-content)) minmax(0, 1fr);
|
|
7745
|
+
gap: var(--spacing-2) var(--spacing-3);
|
|
7746
|
+
align-items: baseline;
|
|
7747
|
+
min-width: 0;
|
|
7748
|
+
margin: 0;
|
|
7749
|
+
font-size: var(--font-size-compact);
|
|
7750
|
+
}
|
|
7751
|
+
|
|
7752
|
+
.crewlet-change-list__row {
|
|
7753
|
+
display: grid;
|
|
7754
|
+
grid-column: 1 / -1;
|
|
7755
|
+
grid-template-columns: subgrid;
|
|
7756
|
+
align-items: baseline;
|
|
7757
|
+
min-width: 0;
|
|
7758
|
+
}
|
|
7759
|
+
|
|
7760
|
+
.crewlet-change-list__label {
|
|
7761
|
+
font-size: var(--font-size-xs);
|
|
7762
|
+
color: var(--color-text-tertiary);
|
|
7763
|
+
}
|
|
7764
|
+
|
|
7765
|
+
.crewlet-change-list__value {
|
|
7766
|
+
min-width: 0;
|
|
7767
|
+
margin: 0;
|
|
7768
|
+
color: var(--color-text-primary);
|
|
7769
|
+
overflow-wrap: anywhere;
|
|
7770
|
+
}
|
|
7771
|
+
|
|
7772
|
+
/* Long text takes the row's whole width under its label. */
|
|
7773
|
+
.crewlet-change-list__row--text > .crewlet-change-list__value {
|
|
7774
|
+
grid-column: 1 / -1;
|
|
7775
|
+
display: flex;
|
|
7776
|
+
flex-direction: column;
|
|
7777
|
+
gap: var(--spacing-1);
|
|
7778
|
+
}
|
|
7779
|
+
|
|
7780
|
+
.crewlet-change-list__fact {
|
|
7781
|
+
font-weight: var(--font-weight-medium);
|
|
7782
|
+
}
|
|
7783
|
+
|
|
7784
|
+
/*
|
|
7785
|
+
* A PAIR WRAPS AS A UNIT: the old value, then the arrow and the new value
|
|
7786
|
+
* together, which drop under the old value on a narrow card rather than
|
|
7787
|
+
* splitting the arrow from what it points at.
|
|
7788
|
+
*/
|
|
7789
|
+
.crewlet-change-list__pair {
|
|
7790
|
+
display: inline-flex;
|
|
7791
|
+
flex-wrap: wrap;
|
|
7792
|
+
align-items: baseline;
|
|
7793
|
+
gap: var(--spacing-1);
|
|
7794
|
+
max-width: 100%;
|
|
7795
|
+
}
|
|
7796
|
+
|
|
7797
|
+
.crewlet-change-list__next {
|
|
7798
|
+
display: inline-flex;
|
|
7799
|
+
align-items: baseline;
|
|
7800
|
+
gap: var(--spacing-1);
|
|
7801
|
+
min-width: 0;
|
|
7802
|
+
}
|
|
7803
|
+
|
|
7804
|
+
.crewlet-change-list__arrow {
|
|
7805
|
+
flex: none;
|
|
7806
|
+
align-self: center;
|
|
7807
|
+
color: var(--color-text-tertiary);
|
|
7808
|
+
}
|
|
7809
|
+
|
|
7810
|
+
/* The old value: struck through in the tertiary ink. */
|
|
7811
|
+
.crewlet-change-list__from {
|
|
7812
|
+
color: var(--color-text-tertiary);
|
|
7813
|
+
text-decoration: line-through;
|
|
7814
|
+
text-decoration-thickness: 1px;
|
|
7815
|
+
}
|
|
7816
|
+
|
|
7817
|
+
/* The new value: the primary ink at medium weight, on the added tint. */
|
|
7818
|
+
.crewlet-change-list__to,
|
|
7819
|
+
.crewlet-change-list__inserted {
|
|
7820
|
+
padding: 0 var(--spacing-1);
|
|
7821
|
+
border-radius: var(--radius-xs);
|
|
7822
|
+
background: var(--color-feedback-success-soft);
|
|
7823
|
+
color: var(--color-text-primary);
|
|
7824
|
+
font-weight: var(--font-weight-medium);
|
|
7825
|
+
text-decoration: none;
|
|
7826
|
+
-webkit-box-decoration-break: clone;
|
|
7827
|
+
box-decoration-break: clone;
|
|
7828
|
+
}
|
|
7829
|
+
|
|
7830
|
+
/* A value taken away: struck through on the removed tint, in its ink. */
|
|
7831
|
+
.crewlet-change-list__removed {
|
|
7832
|
+
padding: 0 var(--spacing-1);
|
|
7833
|
+
border-radius: var(--radius-xs);
|
|
7834
|
+
background: var(--color-feedback-danger-soft);
|
|
7835
|
+
color: var(--color-feedback-danger-ink);
|
|
7836
|
+
text-decoration: line-through;
|
|
7837
|
+
text-decoration-thickness: 1px;
|
|
7838
|
+
}
|
|
7839
|
+
|
|
7840
|
+
/* A word diff: one compact paragraph, removed words struck in the danger ink. */
|
|
7841
|
+
.crewlet-change-list__words {
|
|
7842
|
+
margin: 0;
|
|
7843
|
+
line-height: var(--font-line-height-relaxed);
|
|
7844
|
+
color: var(--color-text-secondary);
|
|
7845
|
+
}
|
|
7846
|
+
|
|
7847
|
+
.crewlet-change-list__deleted {
|
|
7848
|
+
color: var(--color-feedback-danger-ink);
|
|
7849
|
+
text-decoration: line-through;
|
|
7850
|
+
text-decoration-thickness: 1px;
|
|
7851
|
+
}
|
|
7852
|
+
|
|
7853
|
+
/* The disclosure's padding hangs into the gutter, so its chevron sits on the text edge. */
|
|
7854
|
+
.crewlet-change-list__whole {
|
|
7855
|
+
margin-inline-start: calc(var(--spacing-2) * -1);
|
|
7856
|
+
}
|
|
7857
|
+
|
|
7858
|
+
.crewlet-change-list__note {
|
|
7859
|
+
display: block;
|
|
7860
|
+
margin-top: 2px;
|
|
7861
|
+
font-size: var(--font-size-2xs);
|
|
7862
|
+
color: var(--color-text-tertiary);
|
|
7863
|
+
}
|
|
7864
|
+
|
|
7865
|
+
/* Settled: the values step back; the tints stay, so the record is still there. */
|
|
7866
|
+
.crewlet-change-list--settled .crewlet-change-list__fact,
|
|
7867
|
+
.crewlet-change-list--settled .crewlet-change-list__to,
|
|
7868
|
+
.crewlet-change-list--settled .crewlet-change-list__inserted,
|
|
7869
|
+
.crewlet-change-list--settled .crewlet-change-list__value {
|
|
7870
|
+
color: var(--color-text-secondary);
|
|
7871
|
+
}
|
|
7872
|
+
|
|
7873
|
+
|
|
7670
7874
|
/* ChangeMark-3VMTW7MT.css */
|
|
7671
7875
|
/*
|
|
7672
7876
|
* A change mark (ChangeMark.tsx): a notch in the top end corner of whatever
|
|
@@ -8870,6 +9074,67 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
8870
9074
|
}
|
|
8871
9075
|
|
|
8872
9076
|
|
|
9077
|
+
/* ChatThread-52KMDXHB.css */
|
|
9078
|
+
/*
|
|
9079
|
+
* A conversation as it grows: the scroller, the items a spacing step and a
|
|
9080
|
+
* half apart on the panel's 16px inset, and the Jump to latest pill floating
|
|
9081
|
+
* over its foot.
|
|
9082
|
+
*/
|
|
9083
|
+
.crewlet-chat-thread {
|
|
9084
|
+
position: relative;
|
|
9085
|
+
display: flex;
|
|
9086
|
+
flex: 1;
|
|
9087
|
+
flex-direction: column;
|
|
9088
|
+
min-height: 0;
|
|
9089
|
+
}
|
|
9090
|
+
|
|
9091
|
+
/*
|
|
9092
|
+
* THE BROWSER'S SCROLL ANCHORING IS OFF: it pins the content above the
|
|
9093
|
+
* reader's view, which fights a last child that keeps growing as an answer
|
|
9094
|
+
* streams in. ChatThread.tsx anchors to the end itself.
|
|
9095
|
+
*/
|
|
9096
|
+
.crewlet-chat-thread__scroller {
|
|
9097
|
+
flex: 1;
|
|
9098
|
+
min-height: 0;
|
|
9099
|
+
overflow: auto;
|
|
9100
|
+
overflow-anchor: none;
|
|
9101
|
+
overscroll-behavior: contain;
|
|
9102
|
+
}
|
|
9103
|
+
|
|
9104
|
+
/* A ring inside the region, which an edge-to-edge scroller would otherwise clip. */
|
|
9105
|
+
.crewlet-chat-thread__scroller:focus-visible {
|
|
9106
|
+
outline: 2px solid var(--color-focus);
|
|
9107
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
9108
|
+
}
|
|
9109
|
+
|
|
9110
|
+
.crewlet-chat-thread__items {
|
|
9111
|
+
display: flex;
|
|
9112
|
+
flex-direction: column;
|
|
9113
|
+
gap: var(--spacing-3);
|
|
9114
|
+
min-width: 0;
|
|
9115
|
+
padding: var(--spacing-4);
|
|
9116
|
+
}
|
|
9117
|
+
|
|
9118
|
+
.crewlet-chat-thread__items > * {
|
|
9119
|
+
flex: none;
|
|
9120
|
+
}
|
|
9121
|
+
|
|
9122
|
+
/* The pill, centred a step above the thread's foot. */
|
|
9123
|
+
.crewlet-chat-thread__jump {
|
|
9124
|
+
position: absolute;
|
|
9125
|
+
bottom: var(--spacing-3);
|
|
9126
|
+
left: 50%;
|
|
9127
|
+
transform: translateX(-50%);
|
|
9128
|
+
box-shadow: var(--shadow-md);
|
|
9129
|
+
border-radius: var(--radius-pill);
|
|
9130
|
+
}
|
|
9131
|
+
|
|
9132
|
+
.crewlet-chat-thread__fresh {
|
|
9133
|
+
font-variant-numeric: tabular-nums;
|
|
9134
|
+
color: var(--color-text-secondary);
|
|
9135
|
+
}
|
|
9136
|
+
|
|
9137
|
+
|
|
8873
9138
|
/* Checkbox-MB22OW6P.css */
|
|
8874
9139
|
/*
|
|
8875
9140
|
* Checkbox: a box, its label and its consequence as one target.
|
|
@@ -10449,7 +10714,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10449
10714
|
}
|
|
10450
10715
|
|
|
10451
10716
|
|
|
10452
|
-
/* Composer-
|
|
10717
|
+
/* Composer-JSGTOW3F.css */
|
|
10453
10718
|
/*
|
|
10454
10719
|
* A message written in place: the field and its footer strip in one box. The
|
|
10455
10720
|
* BOX takes the focus ring every field in the package draws (see Input.css):
|
|
@@ -10459,17 +10724,34 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10459
10724
|
* border to the accent AND lay a 2px soft halo outside it: two highlights for
|
|
10460
10725
|
* one state, and the loudest edge on a page whose field was focused on load.
|
|
10461
10726
|
*/
|
|
10727
|
+
/*
|
|
10728
|
+
* THE FIELD'S EDGE, as every text field draws it: `--color-border-field`, the
|
|
10729
|
+
* step measured to 3:1 against the ground, stepping up to the control boundary
|
|
10730
|
+
* under the pointer. It drew `--color-border-strong`, which is 1.46:1, so the
|
|
10731
|
+
* box a person types in was the faintest edge on the panel.
|
|
10732
|
+
*/
|
|
10462
10733
|
.crewlet-composer {
|
|
10734
|
+
/* The edge's width, named because the nested send button's corner is
|
|
10735
|
+
derived from it (see .crewlet-composer__trailing). */
|
|
10736
|
+
--crewlet-composer-edge: 1px;
|
|
10737
|
+
|
|
10463
10738
|
display: grid;
|
|
10464
10739
|
overflow: hidden;
|
|
10465
|
-
border:
|
|
10740
|
+
border: var(--crewlet-composer-edge) solid var(--color-border-field);
|
|
10466
10741
|
border-radius: var(--radius-md);
|
|
10467
10742
|
background: var(--color-surface-background);
|
|
10468
10743
|
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
10469
10744
|
}
|
|
10470
10745
|
|
|
10471
|
-
.crewlet-composer:hover {
|
|
10472
|
-
border-color: var(--color-border-
|
|
10746
|
+
.crewlet-composer:not(.is-disabled):hover {
|
|
10747
|
+
border-color: var(--color-border-control);
|
|
10748
|
+
}
|
|
10749
|
+
|
|
10750
|
+
/* The field and, in a chat composer, its send button on one row. */
|
|
10751
|
+
.crewlet-composer__row {
|
|
10752
|
+
display: flex;
|
|
10753
|
+
align-items: flex-end;
|
|
10754
|
+
min-width: 0;
|
|
10473
10755
|
}
|
|
10474
10756
|
|
|
10475
10757
|
/* Keyed on the FIELD, not :focus-within: the footer holds the send action,
|
|
@@ -10485,6 +10767,8 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10485
10767
|
}
|
|
10486
10768
|
|
|
10487
10769
|
.crewlet-composer .crewlet-composer__field {
|
|
10770
|
+
flex: 1;
|
|
10771
|
+
min-width: 0;
|
|
10488
10772
|
min-height: 68px;
|
|
10489
10773
|
max-height: 220px;
|
|
10490
10774
|
padding: var(--spacing-2) var(--spacing-3);
|
|
@@ -10502,6 +10786,80 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
10502
10786
|
outline: none;
|
|
10503
10787
|
}
|
|
10504
10788
|
|
|
10789
|
+
/*
|
|
10790
|
+
* A CHAT COMPOSER: the field and its send button share one row. The field
|
|
10791
|
+
* starts as one line exactly as tall as the button and its inset (so the
|
|
10792
|
+
* line sits centred beside it), grows to six lines and then scrolls, and the
|
|
10793
|
+
* button stays on the last line.
|
|
10794
|
+
*/
|
|
10795
|
+
.crewlet-composer--inline .crewlet-composer__field {
|
|
10796
|
+
--crewlet-composer-line: calc(var(--font-line-height-normal) * var(--font-size-compact));
|
|
10797
|
+
--crewlet-composer-row: calc(var(--size-control-md) + var(--spacing-2));
|
|
10798
|
+
|
|
10799
|
+
min-height: var(--crewlet-composer-row);
|
|
10800
|
+
max-height: 140px;
|
|
10801
|
+
padding-block: max(0px, calc((var(--crewlet-composer-row) - var(--crewlet-composer-line)) / 2));
|
|
10802
|
+
}
|
|
10803
|
+
|
|
10804
|
+
/*
|
|
10805
|
+
* A PLACEHOLDER NEVER GROWS THE FIELD. It is one line of example or one word
|
|
10806
|
+
* of reason ("Offline"); wrapped to a second line it made the composer jump
|
|
10807
|
+
* taller the moment the connection dropped.
|
|
10808
|
+
*/
|
|
10809
|
+
.crewlet-composer--inline .crewlet-composer__field::placeholder {
|
|
10810
|
+
overflow: hidden;
|
|
10811
|
+
text-overflow: ellipsis;
|
|
10812
|
+
white-space: nowrap;
|
|
10813
|
+
}
|
|
10814
|
+
|
|
10815
|
+
/*
|
|
10816
|
+
* THE SEND BUTTON NESTS IN THE BOX'S CORNER: inset by one spacing step, its
|
|
10817
|
+
* radius is the box's less that inset and the box's own edge, so the two
|
|
10818
|
+
* corners run parallel rather than a square sitting in a rounded box.
|
|
10819
|
+
*/
|
|
10820
|
+
.crewlet-composer__trailing {
|
|
10821
|
+
display: flex;
|
|
10822
|
+
flex: none;
|
|
10823
|
+
align-items: center;
|
|
10824
|
+
gap: var(--spacing-1);
|
|
10825
|
+
padding: var(--spacing-1);
|
|
10826
|
+
}
|
|
10827
|
+
|
|
10828
|
+
.crewlet-composer__trailing .crewlet-icon-btn {
|
|
10829
|
+
border-radius: calc(var(--radius-md) - var(--spacing-1) - var(--crewlet-composer-edge));
|
|
10830
|
+
}
|
|
10831
|
+
|
|
10832
|
+
/*
|
|
10833
|
+
* WHAT TRAVELS WITH THE MESSAGE, above the field inside the box's edge: a row
|
|
10834
|
+
* of tags that wraps, on the field's own inset so a tag starts where the text
|
|
10835
|
+
* does.
|
|
10836
|
+
*/
|
|
10837
|
+
.crewlet-composer__attachments {
|
|
10838
|
+
display: flex;
|
|
10839
|
+
flex-wrap: wrap;
|
|
10840
|
+
align-items: center;
|
|
10841
|
+
gap: var(--spacing-1);
|
|
10842
|
+
min-width: 0;
|
|
10843
|
+
padding: var(--spacing-2) var(--spacing-3) 0;
|
|
10844
|
+
}
|
|
10845
|
+
|
|
10846
|
+
/*
|
|
10847
|
+
* DISABLED, AS A FIELD IS: the whole box at the disabled field's 0.6 and the
|
|
10848
|
+
* not-allowed cursor, so it no longer reads as somewhere to type. Faded once:
|
|
10849
|
+
* the field and a disabled send button inside it keep their own opacity at 1,
|
|
10850
|
+
* or the box's fade and theirs would multiply into a control nobody can read.
|
|
10851
|
+
*/
|
|
10852
|
+
.crewlet-composer.is-disabled {
|
|
10853
|
+
opacity: 0.6;
|
|
10854
|
+
cursor: not-allowed;
|
|
10855
|
+
}
|
|
10856
|
+
|
|
10857
|
+
.crewlet-composer.is-disabled .crewlet-composer__field.is-disabled,
|
|
10858
|
+
.crewlet-composer.is-disabled .crewlet-composer__trailing :disabled,
|
|
10859
|
+
.crewlet-composer.is-disabled .crewlet-composer__trailing [aria-disabled='true'] {
|
|
10860
|
+
opacity: 1;
|
|
10861
|
+
}
|
|
10862
|
+
|
|
10505
10863
|
/* Past its cap the field scrolls rather than pushing the page. */
|
|
10506
10864
|
.crewlet-composer .crewlet-composer__field.is-auto-resize {
|
|
10507
10865
|
overflow-y: auto;
|
|
@@ -14614,7 +14972,7 @@ svg.crewlet-datetime__chevron {
|
|
|
14614
14972
|
}
|
|
14615
14973
|
|
|
14616
14974
|
|
|
14617
|
-
/* DiffList-
|
|
14975
|
+
/* DiffList-GE6YBRLJ.css */
|
|
14618
14976
|
/* DiffList: one path per row, with its mark, its word and its tint.
|
|
14619
14977
|
|
|
14620
14978
|
The tint is the soft step of the state the row is in and the text is the
|
|
@@ -14710,6 +15068,59 @@ svg.crewlet-datetime__chevron {
|
|
|
14710
15068
|
color: var(--color-text-tertiary);
|
|
14711
15069
|
}
|
|
14712
15070
|
|
|
15071
|
+
/*
|
|
15072
|
+
* STACKED: each path over its value, both wrapping, so a value is read rather
|
|
15073
|
+
* than cut by the 200px path track. `auto` is the same drawing under 480px of
|
|
15074
|
+
* the list's own width, which a window query cannot know: a list in a 420px
|
|
15075
|
+
* drawer on a wide screen is as narrow as one on a phone.
|
|
15076
|
+
*/
|
|
15077
|
+
.crewlet-diff-list--auto {
|
|
15078
|
+
container: crewlet-diff-list / inline-size;
|
|
15079
|
+
}
|
|
15080
|
+
|
|
15081
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__row {
|
|
15082
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
15083
|
+
row-gap: 0;
|
|
15084
|
+
}
|
|
15085
|
+
|
|
15086
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__value {
|
|
15087
|
+
grid-column: 2;
|
|
15088
|
+
}
|
|
15089
|
+
|
|
15090
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__path,
|
|
15091
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__value,
|
|
15092
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__from,
|
|
15093
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__to {
|
|
15094
|
+
overflow: visible;
|
|
15095
|
+
white-space: normal;
|
|
15096
|
+
overflow-wrap: anywhere;
|
|
15097
|
+
}
|
|
15098
|
+
|
|
15099
|
+
.crewlet-diff-list--stacked .crewlet-diff-list__value {
|
|
15100
|
+
flex-wrap: wrap;
|
|
15101
|
+
}
|
|
15102
|
+
|
|
15103
|
+
@container crewlet-diff-list (width < 480px) {
|
|
15104
|
+
.crewlet-diff-list--auto .crewlet-diff-list__row {
|
|
15105
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
15106
|
+
row-gap: 0;
|
|
15107
|
+
}
|
|
15108
|
+
|
|
15109
|
+
.crewlet-diff-list--auto .crewlet-diff-list__value {
|
|
15110
|
+
grid-column: 2;
|
|
15111
|
+
flex-wrap: wrap;
|
|
15112
|
+
}
|
|
15113
|
+
|
|
15114
|
+
.crewlet-diff-list--auto .crewlet-diff-list__path,
|
|
15115
|
+
.crewlet-diff-list--auto .crewlet-diff-list__value,
|
|
15116
|
+
.crewlet-diff-list--auto .crewlet-diff-list__from,
|
|
15117
|
+
.crewlet-diff-list--auto .crewlet-diff-list__to {
|
|
15118
|
+
overflow: visible;
|
|
15119
|
+
white-space: normal;
|
|
15120
|
+
overflow-wrap: anywhere;
|
|
15121
|
+
}
|
|
15122
|
+
}
|
|
15123
|
+
|
|
14713
15124
|
|
|
14714
15125
|
/* DiffView-RVLIHTKG.css */
|
|
14715
15126
|
/* DiffView: a line diff, monospace and line-numbered on both sides.
|
|
@@ -14957,7 +15368,7 @@ svg.crewlet-datetime__chevron {
|
|
|
14957
15368
|
}
|
|
14958
15369
|
|
|
14959
15370
|
|
|
14960
|
-
/* Disclosure-
|
|
15371
|
+
/* Disclosure-FVMA4RW2.css */
|
|
14961
15372
|
/*
|
|
14962
15373
|
* The disclosure anatomy, declared once for every expander in the package.
|
|
14963
15374
|
*
|
|
@@ -15063,6 +15474,32 @@ svg.crewlet-datetime__chevron {
|
|
|
15063
15474
|
transform: rotate(0deg);
|
|
15064
15475
|
}
|
|
15065
15476
|
|
|
15477
|
+
/*
|
|
15478
|
+
* NOTHING TO OPEN YET: the bar is words rather than a button, and the
|
|
15479
|
+
* chevron keeps its slot unpainted, so the mark after it does not move when
|
|
15480
|
+
* the section gains content and the chevron appears.
|
|
15481
|
+
*/
|
|
15482
|
+
.crewlet-disclosure__chevron--reserved {
|
|
15483
|
+
visibility: hidden;
|
|
15484
|
+
}
|
|
15485
|
+
|
|
15486
|
+
.crewlet-disclosure__trigger--static {
|
|
15487
|
+
cursor: default;
|
|
15488
|
+
}
|
|
15489
|
+
|
|
15490
|
+
/* Words, so nothing answers the pointer. */
|
|
15491
|
+
.crewlet-disclosure__trigger--static:hover {
|
|
15492
|
+
background: none;
|
|
15493
|
+
color: var(--color-text-secondary);
|
|
15494
|
+
}
|
|
15495
|
+
|
|
15496
|
+
/* The section's state mark, between the chevron and the title. */
|
|
15497
|
+
.crewlet-disclosure__icon {
|
|
15498
|
+
display: inline-flex;
|
|
15499
|
+
flex: none;
|
|
15500
|
+
align-items: center;
|
|
15501
|
+
}
|
|
15502
|
+
|
|
15066
15503
|
.crewlet-disclosure__title {
|
|
15067
15504
|
min-width: 0;
|
|
15068
15505
|
overflow: hidden;
|
|
@@ -15123,6 +15560,16 @@ svg.crewlet-datetime__chevron {
|
|
|
15123
15560
|
color: var(--color-text-secondary);
|
|
15124
15561
|
}
|
|
15125
15562
|
|
|
15563
|
+
/*
|
|
15564
|
+
* CLOSED IS HIDDEN. The panel closes with the `hidden` attribute, and the
|
|
15565
|
+
* browser's own `[hidden] { display: none }` is a user agent rule that any
|
|
15566
|
+
* author `display` outranks: the flex above drew every closed panel open,
|
|
15567
|
+
* under a trigger that said it was collapsed.
|
|
15568
|
+
*/
|
|
15569
|
+
.crewlet-disclosure__panel[hidden] {
|
|
15570
|
+
display: none;
|
|
15571
|
+
}
|
|
15572
|
+
|
|
15126
15573
|
/* ---- Sizes and variants ------------------------------------------------ */
|
|
15127
15574
|
|
|
15128
15575
|
/*
|
|
@@ -16158,6 +16605,64 @@ svg.crewlet-datetime__chevron {
|
|
|
16158
16605
|
}
|
|
16159
16606
|
|
|
16160
16607
|
|
|
16608
|
+
/* EntityList-XIICECVC.css */
|
|
16609
|
+
/* One row per person, seat or record, divided by hairlines, on the card's 16px inset. */
|
|
16610
|
+
.crewlet-entity-list__rows {
|
|
16611
|
+
display: flex;
|
|
16612
|
+
flex-direction: column;
|
|
16613
|
+
margin: 0;
|
|
16614
|
+
padding: 0;
|
|
16615
|
+
list-style: none;
|
|
16616
|
+
}
|
|
16617
|
+
|
|
16618
|
+
.crewlet-entity-list__row {
|
|
16619
|
+
display: flex;
|
|
16620
|
+
align-items: center;
|
|
16621
|
+
gap: var(--spacing-3);
|
|
16622
|
+
min-width: 0;
|
|
16623
|
+
min-height: var(--size-row-lg);
|
|
16624
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
16625
|
+
}
|
|
16626
|
+
|
|
16627
|
+
.crewlet-entity-list__row + .crewlet-entity-list__row {
|
|
16628
|
+
border-top: 1px solid var(--color-border-default);
|
|
16629
|
+
}
|
|
16630
|
+
|
|
16631
|
+
.crewlet-entity-list__avatar {
|
|
16632
|
+
display: inline-flex;
|
|
16633
|
+
flex: none;
|
|
16634
|
+
color: var(--color-text-tertiary);
|
|
16635
|
+
}
|
|
16636
|
+
|
|
16637
|
+
.crewlet-entity-list__words {
|
|
16638
|
+
display: flex;
|
|
16639
|
+
flex: 1;
|
|
16640
|
+
flex-direction: column;
|
|
16641
|
+
min-width: 0;
|
|
16642
|
+
}
|
|
16643
|
+
|
|
16644
|
+
.crewlet-entity-list__name {
|
|
16645
|
+
overflow: hidden;
|
|
16646
|
+
font-size: var(--font-size-compact);
|
|
16647
|
+
font-weight: var(--font-weight-medium);
|
|
16648
|
+
color: var(--color-text-primary);
|
|
16649
|
+
text-overflow: ellipsis;
|
|
16650
|
+
white-space: nowrap;
|
|
16651
|
+
}
|
|
16652
|
+
|
|
16653
|
+
.crewlet-entity-list__fact {
|
|
16654
|
+
font-size: var(--font-size-xs);
|
|
16655
|
+
color: var(--color-text-tertiary);
|
|
16656
|
+
}
|
|
16657
|
+
|
|
16658
|
+
/* The row's own link, its ghost padding pulled out to the card's text edge. */
|
|
16659
|
+
.crewlet-entity-list__action {
|
|
16660
|
+
display: inline-flex;
|
|
16661
|
+
flex: none;
|
|
16662
|
+
margin-inline-end: calc(-1 * (var(--spacing-2) + 1px));
|
|
16663
|
+
}
|
|
16664
|
+
|
|
16665
|
+
|
|
16161
16666
|
/* ErrorBoundary-U2PA3LY2.css */
|
|
16162
16667
|
/*
|
|
16163
16668
|
* The default fallback: a quiet block on the inset surface rather than a red
|
|
@@ -17080,7 +17585,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17080
17585
|
}
|
|
17081
17586
|
|
|
17082
17587
|
|
|
17083
|
-
/* IconButton-
|
|
17588
|
+
/* IconButton-6WA7UEBJ.css */
|
|
17084
17589
|
/*
|
|
17085
17590
|
* IconButton: a square icon-only control.
|
|
17086
17591
|
*
|
|
@@ -17177,6 +17682,24 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17177
17682
|
height: var(--font-size-xl);
|
|
17178
17683
|
}
|
|
17179
17684
|
|
|
17685
|
+
/*
|
|
17686
|
+
* primary: the accent square, the primary Button's fill, hover and press with
|
|
17687
|
+
* no room for a label. One per surface, for the control that is the decision
|
|
17688
|
+
* there (a composer's Send); every other icon-only control stays a ghost.
|
|
17689
|
+
*/
|
|
17690
|
+
.crewlet-icon-btn--primary {
|
|
17691
|
+
background: var(--color-brand-accent);
|
|
17692
|
+
color: var(--color-text-on-accent);
|
|
17693
|
+
}
|
|
17694
|
+
|
|
17695
|
+
.crewlet-icon-btn--primary:hover:not(:disabled):not([aria-disabled='true']) {
|
|
17696
|
+
background: var(--color-brand-accent-hover);
|
|
17697
|
+
}
|
|
17698
|
+
|
|
17699
|
+
.crewlet-icon-btn--primary:active:not(:disabled):not([aria-disabled='true']) {
|
|
17700
|
+
background: var(--color-brand-accent-active);
|
|
17701
|
+
}
|
|
17702
|
+
|
|
17180
17703
|
/*
|
|
17181
17704
|
* secondary: the bordered square. The same surface, boundary and states as a
|
|
17182
17705
|
* secondary Button, for an icon-only control that has to read as a control
|
|
@@ -17199,27 +17722,6 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17199
17722
|
background: var(--color-surface-pressed);
|
|
17200
17723
|
}
|
|
17201
17724
|
|
|
17202
|
-
/*
|
|
17203
|
-
* THE PLACE THE READER IS ON (`IconButtonLink current`): the selected
|
|
17204
|
-
* treatment a nav row draws, the lifted ground inside the default hairline,
|
|
17205
|
-
* drawn on the square's own transparent boundary so nothing moves. With an
|
|
17206
|
-
* edge to draw, its ring covers the edge, as the bordered squares' does.
|
|
17207
|
-
*/
|
|
17208
|
-
a.crewlet-icon-btn {
|
|
17209
|
-
text-decoration: none;
|
|
17210
|
-
}
|
|
17211
|
-
|
|
17212
|
-
.crewlet-icon-btn--current,
|
|
17213
|
-
.crewlet-icon-btn--current:hover {
|
|
17214
|
-
background: var(--color-surface-elevated);
|
|
17215
|
-
border-color: var(--color-border-default);
|
|
17216
|
-
color: var(--color-text-primary);
|
|
17217
|
-
}
|
|
17218
|
-
|
|
17219
|
-
.crewlet-icon-btn--current:focus-visible {
|
|
17220
|
-
outline-offset: var(--size-focus-ring-inset-offset);
|
|
17221
|
-
}
|
|
17222
|
-
|
|
17223
17725
|
/* ghost: transparent, neutral ink, a mild tint on hover. */
|
|
17224
17726
|
.crewlet-icon-btn--ghost {
|
|
17225
17727
|
color: var(--color-text-secondary);
|
|
@@ -17264,6 +17766,32 @@ a.crewlet-icon-btn {
|
|
|
17264
17766
|
border-color: var(--color-brand-accent);
|
|
17265
17767
|
}
|
|
17266
17768
|
|
|
17769
|
+
/*
|
|
17770
|
+
* THE PLACE THE READER IS ON (`IconButtonLink current`): the selected
|
|
17771
|
+
* treatment a nav row draws, the lifted ground inside the default hairline,
|
|
17772
|
+
* drawn on the square's own transparent boundary so nothing moves. With an
|
|
17773
|
+
* edge to draw, its ring covers the edge, as the bordered squares' does.
|
|
17774
|
+
*
|
|
17775
|
+
* AFTER EVERY VARIANT, on purpose. The two tie on specificity, so the later
|
|
17776
|
+
* rule wins: written above the variants, a ghost square's secondary ink (and
|
|
17777
|
+
* a ghost-brand's tertiary one) followed it and won, and the place the reader
|
|
17778
|
+
* was on was drawn in the ink of every other square in the row.
|
|
17779
|
+
*/
|
|
17780
|
+
a.crewlet-icon-btn {
|
|
17781
|
+
text-decoration: none;
|
|
17782
|
+
}
|
|
17783
|
+
|
|
17784
|
+
.crewlet-icon-btn--current,
|
|
17785
|
+
.crewlet-icon-btn--current:hover:not(:disabled):not([aria-disabled='true']) {
|
|
17786
|
+
background: var(--color-surface-elevated);
|
|
17787
|
+
border-color: var(--color-border-default);
|
|
17788
|
+
color: var(--color-text-primary);
|
|
17789
|
+
}
|
|
17790
|
+
|
|
17791
|
+
.crewlet-icon-btn--current:focus-visible {
|
|
17792
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
17793
|
+
}
|
|
17794
|
+
|
|
17267
17795
|
/* A toggle that is on, drawn from the state a screen reader is already told. */
|
|
17268
17796
|
.crewlet-icon-btn[aria-pressed='true'] {
|
|
17269
17797
|
background: var(--color-brand-accent-soft);
|
|
@@ -17277,7 +17805,7 @@ a.crewlet-icon-btn {
|
|
|
17277
17805
|
}
|
|
17278
17806
|
|
|
17279
17807
|
|
|
17280
|
-
/* IconTile-
|
|
17808
|
+
/* IconTile-G52XZVR4.css */
|
|
17281
17809
|
/*
|
|
17282
17810
|
* IconTile: a glyph on a tinted square. Each hue pairs its fill and its ink
|
|
17283
17811
|
* from one measured family (`--color-node-*`); left out, the brand accent's
|
|
@@ -17302,6 +17830,9 @@ a.crewlet-icon-btn {
|
|
|
17302
17830
|
.crewlet-icon-tile--sm { --crewlet-icon-tile-size: var(--size-row-sm); }
|
|
17303
17831
|
.crewlet-icon-tile--lg { --crewlet-icon-tile-size: var(--size-row-lg); border-radius: var(--radius-lg); }
|
|
17304
17832
|
|
|
17833
|
+
/* A place or a record rather than a kind: the raised ground, the secondary ink. */
|
|
17834
|
+
.crewlet-icon-tile--neutral { --crewlet-icon-tile-fill: var(--color-surface-elevated); --crewlet-icon-tile-ink: var(--color-text-secondary); }
|
|
17835
|
+
|
|
17305
17836
|
.crewlet-icon-tile--purple { --crewlet-icon-tile-fill: var(--color-node-purple-fill); --crewlet-icon-tile-ink: var(--color-node-purple-ink); }
|
|
17306
17837
|
.crewlet-icon-tile--cyan { --crewlet-icon-tile-fill: var(--color-node-cyan-fill); --crewlet-icon-tile-ink: var(--color-node-cyan-ink); }
|
|
17307
17838
|
.crewlet-icon-tile--green { --crewlet-icon-tile-fill: var(--color-node-green-fill); --crewlet-icon-tile-ink: var(--color-node-green-ink); }
|
|
@@ -21058,6 +21589,80 @@ a.crewlet-icon-btn {
|
|
|
21058
21589
|
}
|
|
21059
21590
|
|
|
21060
21591
|
|
|
21592
|
+
/* MessageBubble-GKO6X3QG.css */
|
|
21593
|
+
/*
|
|
21594
|
+
* One message: the bubble on its writer's side, and what it carried and its
|
|
21595
|
+
* quiet foot under it, on the same side, a spacing step below.
|
|
21596
|
+
*/
|
|
21597
|
+
.crewlet-message {
|
|
21598
|
+
display: flex;
|
|
21599
|
+
flex-direction: column;
|
|
21600
|
+
gap: var(--spacing-1);
|
|
21601
|
+
min-width: 0;
|
|
21602
|
+
max-width: 85%;
|
|
21603
|
+
}
|
|
21604
|
+
|
|
21605
|
+
.crewlet-message--self {
|
|
21606
|
+
align-self: flex-end;
|
|
21607
|
+
align-items: flex-end;
|
|
21608
|
+
}
|
|
21609
|
+
|
|
21610
|
+
.crewlet-message--other {
|
|
21611
|
+
align-self: flex-start;
|
|
21612
|
+
align-items: flex-start;
|
|
21613
|
+
}
|
|
21614
|
+
|
|
21615
|
+
.crewlet-message__bubble {
|
|
21616
|
+
max-width: 100%;
|
|
21617
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
21618
|
+
font-size: var(--font-size-compact);
|
|
21619
|
+
line-height: var(--font-line-height-normal);
|
|
21620
|
+
color: var(--color-text-primary);
|
|
21621
|
+
overflow-wrap: anywhere;
|
|
21622
|
+
white-space: pre-wrap;
|
|
21623
|
+
}
|
|
21624
|
+
|
|
21625
|
+
/* The reader's own: the raised ground, no edge, the tail at the end corner. */
|
|
21626
|
+
.crewlet-message--self .crewlet-message__bubble {
|
|
21627
|
+
border-radius: var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg);
|
|
21628
|
+
background: var(--color-surface-elevated);
|
|
21629
|
+
}
|
|
21630
|
+
|
|
21631
|
+
/* Anybody else's: the card ground inside a hairline, the tail at the start corner. */
|
|
21632
|
+
.crewlet-message--other .crewlet-message__bubble {
|
|
21633
|
+
border: 1px solid var(--color-border-default);
|
|
21634
|
+
border-radius: var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs);
|
|
21635
|
+
background: var(--color-surface-subtle);
|
|
21636
|
+
}
|
|
21637
|
+
|
|
21638
|
+
.crewlet-message__attachment,
|
|
21639
|
+
.crewlet-message__footer {
|
|
21640
|
+
display: flex;
|
|
21641
|
+
flex-wrap: wrap;
|
|
21642
|
+
align-items: center;
|
|
21643
|
+
gap: var(--spacing-2);
|
|
21644
|
+
font-size: var(--font-size-xs);
|
|
21645
|
+
color: var(--color-text-tertiary);
|
|
21646
|
+
}
|
|
21647
|
+
|
|
21648
|
+
.crewlet-message--enter {
|
|
21649
|
+
animation: crewlet-message-enter var(--motion-duration-moderate) var(--motion-easing-out);
|
|
21650
|
+
}
|
|
21651
|
+
|
|
21652
|
+
@keyframes crewlet-message-enter {
|
|
21653
|
+
from {
|
|
21654
|
+
opacity: 0;
|
|
21655
|
+
transform: translateY(var(--spacing-1));
|
|
21656
|
+
}
|
|
21657
|
+
}
|
|
21658
|
+
|
|
21659
|
+
@media (prefers-reduced-motion: reduce) {
|
|
21660
|
+
.crewlet-message--enter {
|
|
21661
|
+
animation: none;
|
|
21662
|
+
}
|
|
21663
|
+
}
|
|
21664
|
+
|
|
21665
|
+
|
|
21061
21666
|
/* Meter-ZZRFUEOH.css */
|
|
21062
21667
|
/*
|
|
21063
21668
|
* The meter.
|
|
@@ -22218,6 +22823,33 @@ a.crewlet-icon-btn {
|
|
|
22218
22823
|
}
|
|
22219
22824
|
|
|
22220
22825
|
|
|
22826
|
+
/* OpenInAppCard-CKHCK7DO.css */
|
|
22827
|
+
/* The place: its tile, then its name over where it lives. */
|
|
22828
|
+
.crewlet-open-in-app-card__place {
|
|
22829
|
+
display: flex;
|
|
22830
|
+
align-items: center;
|
|
22831
|
+
gap: var(--spacing-3);
|
|
22832
|
+
min-width: 0;
|
|
22833
|
+
}
|
|
22834
|
+
|
|
22835
|
+
.crewlet-open-in-app-card__words {
|
|
22836
|
+
display: flex;
|
|
22837
|
+
flex-direction: column;
|
|
22838
|
+
min-width: 0;
|
|
22839
|
+
}
|
|
22840
|
+
|
|
22841
|
+
.crewlet-open-in-app-card__title {
|
|
22842
|
+
overflow-wrap: anywhere;
|
|
22843
|
+
font-weight: var(--font-weight-medium);
|
|
22844
|
+
color: var(--color-text-primary);
|
|
22845
|
+
}
|
|
22846
|
+
|
|
22847
|
+
.crewlet-open-in-app-card__path {
|
|
22848
|
+
font-size: var(--font-size-xs);
|
|
22849
|
+
color: var(--color-text-tertiary);
|
|
22850
|
+
}
|
|
22851
|
+
|
|
22852
|
+
|
|
22221
22853
|
/* OrgLabel-R5KY7C3W.css */
|
|
22222
22854
|
/*
|
|
22223
22855
|
* What a node of an org chart and a row of an org table both say
|
|
@@ -23391,6 +24023,104 @@ a.crewlet-icon-btn {
|
|
|
23391
24023
|
}
|
|
23392
24024
|
|
|
23393
24025
|
|
|
24026
|
+
/* PeekRail-4L5YUQMW.css */
|
|
24027
|
+
/*
|
|
24028
|
+
* The peek (`PeekRail`): a rail beside the list it was opened from, on the
|
|
24029
|
+
* subtle ground, with a bar at the page bar's height and a scrolling body.
|
|
24030
|
+
*
|
|
24031
|
+
* Its shape is an attribute with one value (`data-shape`), decided by the
|
|
24032
|
+
* host, so there is no width at which it is both a column and a drawer, or
|
|
24033
|
+
* neither. Its width is one variable (`--crewlet-peek-rail-width`), written
|
|
24034
|
+
* on the rail by the component, so the column and the drawer read the same
|
|
24035
|
+
* value and cannot disagree about how wide it is.
|
|
24036
|
+
*/
|
|
24037
|
+
|
|
24038
|
+
.crewlet-peek-rail {
|
|
24039
|
+
position: relative;
|
|
24040
|
+
display: flex;
|
|
24041
|
+
flex-direction: column;
|
|
24042
|
+
min-width: 0;
|
|
24043
|
+
min-height: 0;
|
|
24044
|
+
background: var(--color-surface-subtle);
|
|
24045
|
+
border-left: 1px solid var(--color-border-hover);
|
|
24046
|
+
}
|
|
24047
|
+
|
|
24048
|
+
/*
|
|
24049
|
+
* A COLUMN beside the scroller: the reader's width, capped at what leaves the
|
|
24050
|
+
* list its floor (`--crewlet-peek-rail-reserve`, the gutter, the padding, any
|
|
24051
|
+
* section column and the list). At the threshold the host decided the column
|
|
24052
|
+
* at, the cap is exactly the resting width, so the column never opens
|
|
24053
|
+
* narrower than the width it was decided at.
|
|
24054
|
+
*/
|
|
24055
|
+
.crewlet-peek-rail[data-shape='column'] {
|
|
24056
|
+
flex: none;
|
|
24057
|
+
width: min(var(--crewlet-peek-rail-width), max(0px, 100% - var(--crewlet-peek-rail-reserve, 0px)));
|
|
24058
|
+
}
|
|
24059
|
+
|
|
24060
|
+
/* The grip straddles the rail's hairline, a little narrower than the frame's
|
|
24061
|
+
seam, since it stands over one line rather than in a gap. */
|
|
24062
|
+
.crewlet-peek-rail > .crewlet-resize-handle--left {
|
|
24063
|
+
--crewlet-resize-handle-width: calc(var(--spacing-1) + var(--spacing-1) / 2);
|
|
24064
|
+
left: calc(var(--crewlet-resize-handle-width) / -2);
|
|
24065
|
+
}
|
|
24066
|
+
|
|
24067
|
+
/* The bar stands at the page bar's height, so the two lines meet. */
|
|
24068
|
+
.crewlet-peek-rail__bar {
|
|
24069
|
+
display: flex;
|
|
24070
|
+
flex: none;
|
|
24071
|
+
align-items: center;
|
|
24072
|
+
gap: var(--spacing-1);
|
|
24073
|
+
height: var(--size-shell-topbar);
|
|
24074
|
+
padding: 0 var(--spacing-2);
|
|
24075
|
+
border-bottom: 1px solid var(--color-border-hover);
|
|
24076
|
+
}
|
|
24077
|
+
|
|
24078
|
+
.crewlet-peek-rail__spacer {
|
|
24079
|
+
flex: 1 1 auto;
|
|
24080
|
+
}
|
|
24081
|
+
|
|
24082
|
+
/* THE PEEK'S OWN SCROLLER, and a SIZE container for the reason the shell's
|
|
24083
|
+
`main` is one: a record inside a peek is bounded by what the peek shows
|
|
24084
|
+
(`100cqb`), and with no size container between it and the root `cqb`
|
|
24085
|
+
falls back to the viewport, which counts the peek's bar as view. Its
|
|
24086
|
+
height is the flex column's, never its content's, so containing it costs
|
|
24087
|
+
nothing. */
|
|
24088
|
+
.crewlet-peek-rail__body {
|
|
24089
|
+
container: crewlet-peek-rail / size;
|
|
24090
|
+
flex: 1 1 auto;
|
|
24091
|
+
min-height: 0;
|
|
24092
|
+
overflow-y: auto;
|
|
24093
|
+
padding: 0 var(--spacing-4) var(--spacing-6);
|
|
24094
|
+
}
|
|
24095
|
+
|
|
24096
|
+
/*
|
|
24097
|
+
* THE DRAWER: below the host's threshold the rail slides over the page
|
|
24098
|
+
* behind a veil, and a fixed box takes no room, so the page stays one column
|
|
24099
|
+
* under it. No grip: there is no list beside it to give way.
|
|
24100
|
+
*/
|
|
24101
|
+
/*
|
|
24102
|
+
* Beside an aside column the drawer and its veil stop at the page sheet's
|
|
24103
|
+
* edge (`--crewlet-app-shell-aside-occupied`, measured by the shell), so the
|
|
24104
|
+
* peek stands over the page, next to the aside, rather than over the aside.
|
|
24105
|
+
*/
|
|
24106
|
+
.crewlet-peek-rail[data-shape='drawer'] {
|
|
24107
|
+
position: fixed;
|
|
24108
|
+
top: 0;
|
|
24109
|
+
right: var(--crewlet-app-shell-aside-occupied, 0px);
|
|
24110
|
+
bottom: 0;
|
|
24111
|
+
z-index: var(--z-index-overlay);
|
|
24112
|
+
width: min(var(--crewlet-peek-rail-width), 92vw);
|
|
24113
|
+
box-shadow: var(--shadow-md);
|
|
24114
|
+
}
|
|
24115
|
+
|
|
24116
|
+
.crewlet-peek-rail__veil {
|
|
24117
|
+
position: fixed;
|
|
24118
|
+
inset: 0 var(--crewlet-app-shell-aside-occupied, 0px) 0 0;
|
|
24119
|
+
z-index: calc(var(--z-index-overlay) - 1);
|
|
24120
|
+
background: var(--color-surface-veil);
|
|
24121
|
+
}
|
|
24122
|
+
|
|
24123
|
+
|
|
23394
24124
|
/* PeopleRail-SZGHZXVT.css */
|
|
23395
24125
|
/* PeopleRail: a raised column of everybody present, one row a person, the
|
|
23396
24126
|
name over what they are doing and the controls at the row's end. */
|
|
@@ -24530,6 +25260,38 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
24530
25260
|
}
|
|
24531
25261
|
|
|
24532
25262
|
|
|
25263
|
+
/* ProposalCard-23575F4C.css */
|
|
25264
|
+
/*
|
|
25265
|
+
* A proposed change. The card, its head, its strip and its foot are
|
|
25266
|
+
* StatusCard's; only the note's register is said here: the consequence is a
|
|
25267
|
+
* quieter sentence than the summary it follows.
|
|
25268
|
+
*/
|
|
25269
|
+
.crewlet-proposal-card__note {
|
|
25270
|
+
color: var(--color-text-secondary);
|
|
25271
|
+
}
|
|
25272
|
+
|
|
25273
|
+
/* WHY THE PRIMARY IS HELD, on a line of its own above the decision and at
|
|
25274
|
+
its end, in the foot's quiet register, so it wraps rather than pushing the
|
|
25275
|
+
buttons apart. */
|
|
25276
|
+
.crewlet-proposal-card__blocked {
|
|
25277
|
+
flex: 1 1 100%;
|
|
25278
|
+
margin: 0;
|
|
25279
|
+
color: var(--color-text-secondary);
|
|
25280
|
+
font-size: var(--font-size-compact);
|
|
25281
|
+
text-align: end;
|
|
25282
|
+
}
|
|
25283
|
+
|
|
25284
|
+
/* WHY THE LAST DECISION WAS REFUSED, on a line of its own above the
|
|
25285
|
+
decision and at its end, as the held primary's reason is: the refusal
|
|
25286
|
+
strip's own inline drawing, which wraps rather than widening the row. */
|
|
25287
|
+
.crewlet-proposal-card__refusal {
|
|
25288
|
+
display: flex;
|
|
25289
|
+
flex: 1 1 100%;
|
|
25290
|
+
justify-content: flex-end;
|
|
25291
|
+
text-align: end;
|
|
25292
|
+
}
|
|
25293
|
+
|
|
25294
|
+
|
|
24533
25295
|
/* Prose-BTXNFT2Q.css */
|
|
24534
25296
|
/*
|
|
24535
25297
|
* Natural language: the proportional face, real leading, a bounded measure.
|
|
@@ -24851,6 +25613,113 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
24851
25613
|
}
|
|
24852
25614
|
|
|
24853
25615
|
|
|
25616
|
+
/* ReceiptStrip-IIRKRTBG.css */
|
|
25617
|
+
/*
|
|
25618
|
+
* A card's foot strip: the card's hairline above it, a tint under the words,
|
|
25619
|
+
* the mark on the first line. The tints are the soft step of the tone under
|
|
25620
|
+
* its ink step, the pairing the palette suite measures; the quiet strip is
|
|
25621
|
+
* the inset ground under the secondary ink.
|
|
25622
|
+
*/
|
|
25623
|
+
.crewlet-receipt-strip {
|
|
25624
|
+
display: grid;
|
|
25625
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
25626
|
+
align-items: start;
|
|
25627
|
+
gap: var(--spacing-2);
|
|
25628
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
25629
|
+
border-top: 1px solid var(--color-border-default);
|
|
25630
|
+
font-size: var(--font-size-compact);
|
|
25631
|
+
line-height: var(--font-line-height-normal);
|
|
25632
|
+
}
|
|
25633
|
+
|
|
25634
|
+
.crewlet-receipt-strip--success {
|
|
25635
|
+
background: var(--color-feedback-success-soft);
|
|
25636
|
+
color: var(--color-feedback-success-ink);
|
|
25637
|
+
}
|
|
25638
|
+
|
|
25639
|
+
.crewlet-receipt-strip--neutral {
|
|
25640
|
+
background: var(--color-surface-inset);
|
|
25641
|
+
color: var(--color-text-secondary);
|
|
25642
|
+
}
|
|
25643
|
+
|
|
25644
|
+
.crewlet-receipt-strip--info {
|
|
25645
|
+
background: var(--color-feedback-info-soft);
|
|
25646
|
+
color: var(--color-feedback-info-ink);
|
|
25647
|
+
}
|
|
25648
|
+
|
|
25649
|
+
.crewlet-receipt-strip--warning {
|
|
25650
|
+
background: var(--color-feedback-warning-soft);
|
|
25651
|
+
color: var(--color-feedback-warning-ink);
|
|
25652
|
+
}
|
|
25653
|
+
|
|
25654
|
+
.crewlet-receipt-strip--danger {
|
|
25655
|
+
background: var(--color-feedback-danger-soft);
|
|
25656
|
+
color: var(--color-feedback-danger-ink);
|
|
25657
|
+
}
|
|
25658
|
+
|
|
25659
|
+
/* The 16px mark, centred on the first line of the words beside it. */
|
|
25660
|
+
.crewlet-receipt-strip__icon {
|
|
25661
|
+
display: inline-flex;
|
|
25662
|
+
align-items: center;
|
|
25663
|
+
height: calc(var(--font-size-compact) * var(--font-line-height-normal));
|
|
25664
|
+
}
|
|
25665
|
+
|
|
25666
|
+
.crewlet-receipt-strip__text {
|
|
25667
|
+
display: flex;
|
|
25668
|
+
flex-direction: column;
|
|
25669
|
+
min-width: 0;
|
|
25670
|
+
overflow-wrap: anywhere;
|
|
25671
|
+
}
|
|
25672
|
+
|
|
25673
|
+
/* The actions keep the strip's ink, so a ghost button reads as part of it. */
|
|
25674
|
+
.crewlet-receipt-strip__actions {
|
|
25675
|
+
display: flex;
|
|
25676
|
+
flex-wrap: wrap;
|
|
25677
|
+
align-items: center;
|
|
25678
|
+
gap: var(--spacing-1);
|
|
25679
|
+
margin-block: calc(var(--spacing-1) * -1);
|
|
25680
|
+
}
|
|
25681
|
+
|
|
25682
|
+
.crewlet-receipt-strip__actions .crewlet-btn--ghost {
|
|
25683
|
+
color: inherit;
|
|
25684
|
+
}
|
|
25685
|
+
|
|
25686
|
+
/*
|
|
25687
|
+
* THE INLINE REFUSAL, under the control that caused it: the sentence in the
|
|
25688
|
+
* danger ink, the hint in the secondary ink, the actions beside them, wrapping
|
|
25689
|
+
* onto a second line rather than widening the row.
|
|
25690
|
+
*/
|
|
25691
|
+
.crewlet-refusal-strip {
|
|
25692
|
+
display: flex;
|
|
25693
|
+
flex-wrap: wrap;
|
|
25694
|
+
align-items: center;
|
|
25695
|
+
gap: var(--spacing-1) var(--spacing-2);
|
|
25696
|
+
max-width: 40rem;
|
|
25697
|
+
font-size: var(--font-size-compact);
|
|
25698
|
+
color: var(--color-feedback-danger-ink);
|
|
25699
|
+
overflow-wrap: anywhere;
|
|
25700
|
+
}
|
|
25701
|
+
|
|
25702
|
+
.crewlet-refusal-strip__hint {
|
|
25703
|
+
font-size: var(--font-size-xs);
|
|
25704
|
+
color: var(--color-text-secondary);
|
|
25705
|
+
}
|
|
25706
|
+
|
|
25707
|
+
.crewlet-refusal-strip--foot .crewlet-refusal-strip__hint {
|
|
25708
|
+
color: inherit;
|
|
25709
|
+
}
|
|
25710
|
+
|
|
25711
|
+
|
|
25712
|
+
/* RefusalCard-UM67F5HB.css */
|
|
25713
|
+
/* The first sentence carries the weight; "Nothing changed." closes in the secondary ink. */
|
|
25714
|
+
.crewlet-refusal-card__heading {
|
|
25715
|
+
font-weight: var(--font-weight-medium);
|
|
25716
|
+
}
|
|
25717
|
+
|
|
25718
|
+
.crewlet-refusal-card__nothing {
|
|
25719
|
+
color: var(--color-text-secondary);
|
|
25720
|
+
}
|
|
25721
|
+
|
|
25722
|
+
|
|
24854
25723
|
/* RelatedRow-2FVS6QQA.css */
|
|
24855
25724
|
/* RelatedRow: the glyphs in the quiet ink; everything else is the kit's card. */
|
|
24856
25725
|
.crewlet-related-row__glyph {
|
|
@@ -24873,6 +25742,111 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
24873
25742
|
}
|
|
24874
25743
|
|
|
24875
25744
|
|
|
25745
|
+
/* ResizeHandle-2UNSZ4ZQ.css */
|
|
25746
|
+
/*
|
|
25747
|
+
* The grip between a panel and the page beside it (`ResizeHandle`).
|
|
25748
|
+
*
|
|
25749
|
+
* DRAWN AS NOTHING AT REST. It stands in a seam that is already drawn (the
|
|
25750
|
+
* frame's inset between two sheets, a panel's hairline), so a handle of its
|
|
25751
|
+
* own would be a second line beside one. It washes in the soft accent under
|
|
25752
|
+
* the pointer, under keyboard focus and for the whole of a drag.
|
|
25753
|
+
*
|
|
25754
|
+
* ITS DRAWN WIDTH IS THE SEAM'S (`--crewlet-resize-handle-width`, the frame's
|
|
25755
|
+
* inset), and its target is the 24px floor whatever that width is: the
|
|
25756
|
+
* hit area reaches half the difference out on each side, so a seam of 8px
|
|
25757
|
+
* is still a target a finger can find.
|
|
25758
|
+
*
|
|
25759
|
+
* Placed by whoever holds it: the shell's aside and a side panel put it on
|
|
25760
|
+
* their own start edge. Absolute, so it takes no room in the layout it sizes.
|
|
25761
|
+
*/
|
|
25762
|
+
.crewlet-resize-handle {
|
|
25763
|
+
--crewlet-resize-handle-width: var(--size-shell-inset);
|
|
25764
|
+
--crewlet-hit-area-inline: max(0px, calc((var(--size-target-min) - var(--crewlet-resize-handle-width)) / 2));
|
|
25765
|
+
position: absolute;
|
|
25766
|
+
top: 0;
|
|
25767
|
+
bottom: 0;
|
|
25768
|
+
z-index: var(--z-index-raised);
|
|
25769
|
+
width: var(--crewlet-resize-handle-width);
|
|
25770
|
+
border-radius: var(--radius-xs);
|
|
25771
|
+
background: transparent;
|
|
25772
|
+
cursor: col-resize;
|
|
25773
|
+
/* A touch drags the edge rather than scrolling the page under it. */
|
|
25774
|
+
touch-action: none;
|
|
25775
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
25776
|
+
}
|
|
25777
|
+
|
|
25778
|
+
/* On a panel's left edge it stands outside the panel, in the seam before it. */
|
|
25779
|
+
.crewlet-resize-handle--left {
|
|
25780
|
+
left: calc(var(--crewlet-resize-handle-width) * -1);
|
|
25781
|
+
}
|
|
25782
|
+
|
|
25783
|
+
.crewlet-resize-handle--right {
|
|
25784
|
+
right: calc(var(--crewlet-resize-handle-width) * -1);
|
|
25785
|
+
}
|
|
25786
|
+
|
|
25787
|
+
.crewlet-resize-handle:hover,
|
|
25788
|
+
.crewlet-resize-handle:focus-visible,
|
|
25789
|
+
.crewlet-resize-handle[data-dragging] {
|
|
25790
|
+
background: var(--color-brand-accent-soft);
|
|
25791
|
+
}
|
|
25792
|
+
|
|
25793
|
+
/* Inside its own box: it draws no edge, and the seam it stands in is the
|
|
25794
|
+
two neighbours' edges, which a ring set outward would run over. */
|
|
25795
|
+
.crewlet-resize-handle:focus-visible {
|
|
25796
|
+
outline: 2px solid var(--color-focus);
|
|
25797
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
25798
|
+
}
|
|
25799
|
+
|
|
25800
|
+
@media (prefers-reduced-motion: reduce) {
|
|
25801
|
+
.crewlet-resize-handle {
|
|
25802
|
+
transition: none;
|
|
25803
|
+
}
|
|
25804
|
+
}
|
|
25805
|
+
|
|
25806
|
+
|
|
25807
|
+
/* ResultTableCard-HZRUDNTX.css */
|
|
25808
|
+
/*
|
|
25809
|
+
* A result in a card. The card, its head and its foot are StatusCard's and
|
|
25810
|
+
* the table is Table's, drawn flush; what a result adds is the column model:
|
|
25811
|
+
* the first column takes the room the figures leave and ends a long name in
|
|
25812
|
+
* an ellipsis, and the figures never wrap.
|
|
25813
|
+
*/
|
|
25814
|
+
.crewlet-result-table-card__table .crewlet-table__table {
|
|
25815
|
+
table-layout: auto;
|
|
25816
|
+
font-variant-numeric: tabular-nums;
|
|
25817
|
+
}
|
|
25818
|
+
|
|
25819
|
+
.crewlet-result-table-card__table td:first-child {
|
|
25820
|
+
width: 100%;
|
|
25821
|
+
max-width: 0;
|
|
25822
|
+
overflow: hidden;
|
|
25823
|
+
text-overflow: ellipsis;
|
|
25824
|
+
white-space: nowrap;
|
|
25825
|
+
overflow-wrap: normal;
|
|
25826
|
+
}
|
|
25827
|
+
|
|
25828
|
+
.crewlet-result-table-card__table .crewlet-table__cell--end {
|
|
25829
|
+
white-space: nowrap;
|
|
25830
|
+
}
|
|
25831
|
+
|
|
25832
|
+
/*
|
|
25833
|
+
* THE DOWNLOADS ARE SPANS AROUND A BUTTON (the status region beside each is
|
|
25834
|
+
* a sibling of its button), so the foot's ghost outdent is stated for them
|
|
25835
|
+
* here: the first one's padding and edge are pulled out so its glyph sits on
|
|
25836
|
+
* the card's text edge.
|
|
25837
|
+
*/
|
|
25838
|
+
.crewlet-result-table-card .crewlet-status-card__actions > .crewlet-result-table-card__download:first-child {
|
|
25839
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
|
|
25840
|
+
}
|
|
25841
|
+
|
|
25842
|
+
/* The link stands at the foot's far end, its own padding pulled out to the edge. */
|
|
25843
|
+
.crewlet-result-table-card__link {
|
|
25844
|
+
display: inline-flex;
|
|
25845
|
+
margin-inline-start: auto;
|
|
25846
|
+
margin-inline-end: calc(-1 * (var(--spacing-2) + 1px));
|
|
25847
|
+
}
|
|
25848
|
+
|
|
25849
|
+
|
|
24876
25850
|
/* ReviewList-TIN6C2JN.css */
|
|
24877
25851
|
/*
|
|
24878
25852
|
* ReviewList: a setup's parts in one bordered box, a row each, before the
|
|
@@ -25414,6 +26388,52 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25414
26388
|
}
|
|
25415
26389
|
|
|
25416
26390
|
|
|
26391
|
+
/* RunChip-I2S4VZ3R.css */
|
|
26392
|
+
/*
|
|
26393
|
+
* A request's state on the disclosure trigger. Only what differs from the
|
|
26394
|
+
* disclosure is said here: the trigger is as wide as its words (not the whole
|
|
26395
|
+
* row), its padding hangs into the gutter so the chevron sits on the text
|
|
26396
|
+
* edge, its figures are tabular so a ticking time does not shake the row, and
|
|
26397
|
+
* the title takes the state's tone.
|
|
26398
|
+
*/
|
|
26399
|
+
.crewlet-run-chip {
|
|
26400
|
+
display: flex;
|
|
26401
|
+
flex-direction: column;
|
|
26402
|
+
align-items: flex-start;
|
|
26403
|
+
gap: var(--spacing-1);
|
|
26404
|
+
min-width: 0;
|
|
26405
|
+
}
|
|
26406
|
+
|
|
26407
|
+
.crewlet-run-chip .crewlet-run-chip__trigger {
|
|
26408
|
+
flex: none;
|
|
26409
|
+
width: auto;
|
|
26410
|
+
max-width: calc(100% + var(--spacing-2));
|
|
26411
|
+
margin-inline-start: calc(var(--spacing-2) * -1);
|
|
26412
|
+
font-variant-numeric: tabular-nums;
|
|
26413
|
+
}
|
|
26414
|
+
|
|
26415
|
+
.crewlet-run-chip__separator {
|
|
26416
|
+
color: var(--color-text-tertiary);
|
|
26417
|
+
}
|
|
26418
|
+
|
|
26419
|
+
/* The state's tone, in the title's ink, at rest and under the pointer. */
|
|
26420
|
+
.crewlet-run-chip--waiting .crewlet-run-chip__trigger,
|
|
26421
|
+
.crewlet-run-chip--waiting .crewlet-run-chip__trigger:hover {
|
|
26422
|
+
color: var(--color-feedback-warning-ink);
|
|
26423
|
+
}
|
|
26424
|
+
|
|
26425
|
+
.crewlet-run-chip--failed .crewlet-run-chip__trigger,
|
|
26426
|
+
.crewlet-run-chip--failed .crewlet-run-chip__trigger:hover {
|
|
26427
|
+
color: var(--color-feedback-danger-ink);
|
|
26428
|
+
}
|
|
26429
|
+
|
|
26430
|
+
/* The steps it opens fill the thread's width under it. */
|
|
26431
|
+
.crewlet-run-chip__panel {
|
|
26432
|
+
align-self: stretch;
|
|
26433
|
+
min-width: 0;
|
|
26434
|
+
}
|
|
26435
|
+
|
|
26436
|
+
|
|
25417
26437
|
/* SandboxedFrame-P5NASXB7.css */
|
|
25418
26438
|
/*
|
|
25419
26439
|
* The frame fills the box it is given. The page around it does not scroll
|
|
@@ -28364,6 +29384,244 @@ svg.crewlet-select__chevron {
|
|
|
28364
29384
|
}
|
|
28365
29385
|
|
|
28366
29386
|
|
|
29387
|
+
/* SidePanel-ERBUIELD.css */
|
|
29388
|
+
/*
|
|
29389
|
+
* A side panel and the frame that lays it beside the content or over it
|
|
29390
|
+
* (`SidePanel`, `SidePanelFrame`, and their artifact presets).
|
|
29391
|
+
*
|
|
29392
|
+
* The frame is a row: the content, then at most one panel. The content
|
|
29393
|
+
* scrolls itself, so a panel beside it stays in view however far it is read;
|
|
29394
|
+
* the panel's own body scrolls under its head.
|
|
29395
|
+
*
|
|
29396
|
+
* ONE HAIRLINE between the two, the panel's start edge, and none at the
|
|
29397
|
+
* frame's own edges: whatever holds the frame already draws those.
|
|
29398
|
+
*/
|
|
29399
|
+
|
|
29400
|
+
.crewlet-side-panel-frame {
|
|
29401
|
+
container: crewlet-side-panel-frame / inline-size;
|
|
29402
|
+
position: relative;
|
|
29403
|
+
display: flex;
|
|
29404
|
+
min-width: 0;
|
|
29405
|
+
min-height: 0;
|
|
29406
|
+
}
|
|
29407
|
+
|
|
29408
|
+
.crewlet-side-panel-frame__body {
|
|
29409
|
+
flex: 1 1 auto;
|
|
29410
|
+
min-width: 0;
|
|
29411
|
+
min-height: 0;
|
|
29412
|
+
overflow: auto;
|
|
29413
|
+
}
|
|
29414
|
+
|
|
29415
|
+
/* EXPANDED, the panel is the frame; the content stays mounted behind it, so
|
|
29416
|
+
a page's state survives the look at its data. */
|
|
29417
|
+
.crewlet-side-panel-frame[data-panel='expanded'] > .crewlet-side-panel-frame__body {
|
|
29418
|
+
display: none;
|
|
29419
|
+
}
|
|
29420
|
+
|
|
29421
|
+
/*
|
|
29422
|
+
* THE PANEL. Its width is one variable (`--crewlet-side-panel-width`), which
|
|
29423
|
+
* the `width` prop sets on the element itself, and its head stands at the page
|
|
29424
|
+
* bar's height (`--crewlet-side-panel-head-height`), so beside the shell's bar
|
|
29425
|
+
* the two lines meet. Positioned, so the grip on its start edge has a box to
|
|
29426
|
+
* stand against.
|
|
29427
|
+
*/
|
|
29428
|
+
.crewlet-side-panel {
|
|
29429
|
+
--crewlet-side-panel-width: 26.25rem;
|
|
29430
|
+
--crewlet-side-panel-head-height: var(--size-shell-topbar);
|
|
29431
|
+
--crewlet-side-panel-inset: var(--spacing-4);
|
|
29432
|
+
position: relative;
|
|
29433
|
+
display: flex;
|
|
29434
|
+
flex: none;
|
|
29435
|
+
flex-direction: column;
|
|
29436
|
+
width: var(--crewlet-side-panel-width);
|
|
29437
|
+
min-height: 0;
|
|
29438
|
+
border-left: 1px solid var(--color-border-default);
|
|
29439
|
+
background: var(--color-surface-background);
|
|
29440
|
+
}
|
|
29441
|
+
|
|
29442
|
+
/* IN THE SHELL'S ASIDE the panel fills the aside's sheet, which draws the
|
|
29443
|
+
edge, the corner and the ground, and whose track is the width. */
|
|
29444
|
+
.crewlet-side-panel--fill {
|
|
29445
|
+
flex: 1 1 auto;
|
|
29446
|
+
width: auto;
|
|
29447
|
+
border-left: 0;
|
|
29448
|
+
background: transparent;
|
|
29449
|
+
}
|
|
29450
|
+
|
|
29451
|
+
.crewlet-side-panel[data-expanded] {
|
|
29452
|
+
flex: 1 1 auto;
|
|
29453
|
+
width: auto;
|
|
29454
|
+
border-left: 0;
|
|
29455
|
+
}
|
|
29456
|
+
|
|
29457
|
+
/* The grip straddles the panel's hairline, which is the edge it moves. */
|
|
29458
|
+
.crewlet-side-panel > .crewlet-resize-handle--left {
|
|
29459
|
+
left: calc(var(--crewlet-resize-handle-width) / -2);
|
|
29460
|
+
}
|
|
29461
|
+
|
|
29462
|
+
/*
|
|
29463
|
+
* THE HEAD: the mark, the title, and the actions at the end. The title keeps
|
|
29464
|
+
* what the actions leave it and truncates, so the actions never wrap. Its
|
|
29465
|
+
* start inset is the body's, so the mark stands on the line the body's
|
|
29466
|
+
* content starts on.
|
|
29467
|
+
*/
|
|
29468
|
+
.crewlet-side-panel__head {
|
|
29469
|
+
display: flex;
|
|
29470
|
+
flex: none;
|
|
29471
|
+
align-items: center;
|
|
29472
|
+
gap: var(--spacing-2);
|
|
29473
|
+
height: var(--crewlet-side-panel-head-height);
|
|
29474
|
+
padding: 0 var(--spacing-2) 0 var(--spacing-4);
|
|
29475
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
29476
|
+
}
|
|
29477
|
+
|
|
29478
|
+
.crewlet-side-panel__icon {
|
|
29479
|
+
display: inline-flex;
|
|
29480
|
+
flex: none;
|
|
29481
|
+
color: var(--color-text-tertiary);
|
|
29482
|
+
}
|
|
29483
|
+
|
|
29484
|
+
.crewlet-side-panel__title {
|
|
29485
|
+
flex: 1 1 auto;
|
|
29486
|
+
min-width: 0;
|
|
29487
|
+
margin: 0;
|
|
29488
|
+
overflow: hidden;
|
|
29489
|
+
color: var(--color-text-primary);
|
|
29490
|
+
font-size: var(--font-size-sm);
|
|
29491
|
+
font-weight: var(--font-weight-semibold);
|
|
29492
|
+
line-height: var(--font-line-height-snug);
|
|
29493
|
+
text-overflow: ellipsis;
|
|
29494
|
+
white-space: nowrap;
|
|
29495
|
+
}
|
|
29496
|
+
|
|
29497
|
+
/* THE HEADING TAKES FOCUS WITHOUT A RING. It is focused so a screen reader
|
|
29498
|
+
announces what opened, and it is not a control: a ring round a title reads
|
|
29499
|
+
as something to press. Transparent rather than none, so forced colours,
|
|
29500
|
+
which draw every outline in the system colour, still show where focus is. */
|
|
29501
|
+
.crewlet-side-panel__title--quiet:focus-visible {
|
|
29502
|
+
outline: 2px solid transparent;
|
|
29503
|
+
}
|
|
29504
|
+
|
|
29505
|
+
/* Named for assistive technology only, where the mark beside it says it. */
|
|
29506
|
+
.crewlet-side-panel__title--hidden {
|
|
29507
|
+
position: absolute;
|
|
29508
|
+
width: 1px;
|
|
29509
|
+
height: 1px;
|
|
29510
|
+
overflow: hidden;
|
|
29511
|
+
clip-path: inset(50%);
|
|
29512
|
+
white-space: nowrap;
|
|
29513
|
+
}
|
|
29514
|
+
|
|
29515
|
+
.crewlet-side-panel__actions {
|
|
29516
|
+
display: inline-flex;
|
|
29517
|
+
flex: none;
|
|
29518
|
+
align-items: center;
|
|
29519
|
+
gap: var(--spacing-1);
|
|
29520
|
+
margin-left: auto;
|
|
29521
|
+
}
|
|
29522
|
+
|
|
29523
|
+
/* THE BODY'S INSET IS PUBLISHED (--crewlet-side-panel-inset) for content
|
|
29524
|
+
that sticks to its scrollport: a sticky edge stops at the padding, so a
|
|
29525
|
+
foot with `bottom: 0` would leave a band under it that the content
|
|
29526
|
+
scrolled through; such a foot offsets itself by the inset to sit on the
|
|
29527
|
+
edge. */
|
|
29528
|
+
.crewlet-side-panel__body {
|
|
29529
|
+
/* THE PANEL'S OWN MEASURE, so what it holds folds to the panel's width
|
|
29530
|
+
rather than the window's; and its sections head at the panel title's
|
|
29531
|
+
step, a level under it and never louder than it. */
|
|
29532
|
+
container: crewlet-side-panel / inline-size;
|
|
29533
|
+
--crewlet-section-title-size: var(--font-size-sm);
|
|
29534
|
+
|
|
29535
|
+
/* A COLUMN, so content that should fit the panel rather than scroll it
|
|
29536
|
+
can: a child that sets `min-height: 0` shrinks to the room the body has,
|
|
29537
|
+
and every other child keeps its content's height and scrolls the body. */
|
|
29538
|
+
display: flex;
|
|
29539
|
+
flex-direction: column;
|
|
29540
|
+
flex: 1 1 auto;
|
|
29541
|
+
min-height: 0;
|
|
29542
|
+
padding: var(--crewlet-side-panel-inset);
|
|
29543
|
+
overflow: auto;
|
|
29544
|
+
overscroll-behavior: contain;
|
|
29545
|
+
}
|
|
29546
|
+
|
|
29547
|
+
/* FLUSH, the body draws no inset of its own: what it holds owns its edges
|
|
29548
|
+
(a chat thread that scrolls and insets itself). The published inset reads 0
|
|
29549
|
+
inside it, so anything that offsets itself by the inset follows. */
|
|
29550
|
+
.crewlet-side-panel__body--flush {
|
|
29551
|
+
--crewlet-side-panel-inset: 0px;
|
|
29552
|
+
}
|
|
29553
|
+
|
|
29554
|
+
/* THE FOOT holds the panel's own commit, outside the scrolling body, so it
|
|
29555
|
+
stays in reach at every scroll. Its inset is the body's. */
|
|
29556
|
+
.crewlet-side-panel__foot {
|
|
29557
|
+
flex: none;
|
|
29558
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
29559
|
+
border-top: 1px solid var(--color-border-default);
|
|
29560
|
+
background: var(--color-surface-background);
|
|
29561
|
+
}
|
|
29562
|
+
|
|
29563
|
+
/* ── shapes the host decides ─────────────────────────────────────────── */
|
|
29564
|
+
|
|
29565
|
+
/* A COLUMN keeps the content its floor: a width dragged in a wide frame is
|
|
29566
|
+
capped at what leaves the content `--crewlet-side-panel-reserve` wide. */
|
|
29567
|
+
.crewlet-side-panel-frame[data-shape='column'] > .crewlet-side-panel:not([data-expanded]) {
|
|
29568
|
+
width: min(var(--crewlet-side-panel-width), max(0px, 100% - var(--crewlet-side-panel-reserve, 0px)));
|
|
29569
|
+
}
|
|
29570
|
+
|
|
29571
|
+
/* A DRAWER slides over the content's end edge, raised off it, rather than
|
|
29572
|
+
squeezing the content under a useful width. */
|
|
29573
|
+
.crewlet-side-panel-frame[data-shape='drawer'] > .crewlet-side-panel:not([data-expanded]) {
|
|
29574
|
+
position: absolute;
|
|
29575
|
+
inset-block: 0;
|
|
29576
|
+
inset-inline-end: 0;
|
|
29577
|
+
z-index: var(--z-index-overlay);
|
|
29578
|
+
width: min(var(--crewlet-side-panel-width), 100%);
|
|
29579
|
+
/* THE DRAWER'S LIFT, the shell's own rail drawer's: a smaller step left
|
|
29580
|
+
the panel's start edge reading as a cut through the content rather than
|
|
29581
|
+
a sheet over it. */
|
|
29582
|
+
box-shadow: var(--shadow-xl);
|
|
29583
|
+
}
|
|
29584
|
+
|
|
29585
|
+
/* A SHEET is the frame until it is closed. */
|
|
29586
|
+
.crewlet-side-panel-frame[data-shape='sheet'] > .crewlet-side-panel {
|
|
29587
|
+
position: absolute;
|
|
29588
|
+
inset: 0;
|
|
29589
|
+
z-index: var(--z-index-overlay);
|
|
29590
|
+
width: auto;
|
|
29591
|
+
border-left: 0;
|
|
29592
|
+
}
|
|
29593
|
+
|
|
29594
|
+
/* ── shapes the frame measures (no `shape`) ─────────────────────────── */
|
|
29595
|
+
|
|
29596
|
+
/* NOT ROOM FOR TWO COLUMNS: the drawer, as above. */
|
|
29597
|
+
@container crewlet-side-panel-frame (width < 960px) {
|
|
29598
|
+
.crewlet-side-panel-frame[data-shape='auto'] > .crewlet-side-panel {
|
|
29599
|
+
position: absolute;
|
|
29600
|
+
inset-block: 0;
|
|
29601
|
+
inset-inline-end: 0;
|
|
29602
|
+
z-index: var(--z-index-overlay);
|
|
29603
|
+
width: min(var(--crewlet-side-panel-width), 100%);
|
|
29604
|
+
box-shadow: var(--shadow-xl);
|
|
29605
|
+
}
|
|
29606
|
+
|
|
29607
|
+
.crewlet-side-panel-frame[data-shape='auto'] > .crewlet-side-panel[data-expanded] {
|
|
29608
|
+
inset-inline-start: 0;
|
|
29609
|
+
width: auto;
|
|
29610
|
+
box-shadow: none;
|
|
29611
|
+
}
|
|
29612
|
+
}
|
|
29613
|
+
|
|
29614
|
+
/* A PHONE: the panel is the frame until it is closed. */
|
|
29615
|
+
@container crewlet-side-panel-frame (width < 640px) {
|
|
29616
|
+
.crewlet-side-panel-frame[data-shape='auto'] > .crewlet-side-panel {
|
|
29617
|
+
inset-inline-start: 0;
|
|
29618
|
+
width: auto;
|
|
29619
|
+
border-left: 0;
|
|
29620
|
+
box-shadow: none;
|
|
29621
|
+
}
|
|
29622
|
+
}
|
|
29623
|
+
|
|
29624
|
+
|
|
28367
29625
|
/* SidebarNav-YI74SPDC.css */
|
|
28368
29626
|
/*
|
|
28369
29627
|
* The rail's navigation.
|
|
@@ -29986,6 +31244,55 @@ svg.crewlet-select__chevron {
|
|
|
29986
31244
|
}
|
|
29987
31245
|
|
|
29988
31246
|
|
|
31247
|
+
/* Spinner-XZ2TVYE5.css */
|
|
31248
|
+
/*
|
|
31249
|
+
* The package's one ring. See Spinner.tsx for why it is inline-block, why it
|
|
31250
|
+
* stays open when it stops, and why its ink is the current colour.
|
|
31251
|
+
*/
|
|
31252
|
+
.crewlet-spinner {
|
|
31253
|
+
display: inline-block;
|
|
31254
|
+
box-sizing: border-box;
|
|
31255
|
+
flex: none;
|
|
31256
|
+
width: 1em;
|
|
31257
|
+
height: 1em;
|
|
31258
|
+
border: 2px solid currentColor;
|
|
31259
|
+
border-right-color: transparent;
|
|
31260
|
+
border-radius: var(--radius-circle);
|
|
31261
|
+
opacity: 0.7;
|
|
31262
|
+
animation: crewlet-spinner-turn var(--motion-duration-slow) linear infinite;
|
|
31263
|
+
}
|
|
31264
|
+
|
|
31265
|
+
/* The glyph scale of @crewlethq/icons: xs 12px, sm 14px, md 16px. */
|
|
31266
|
+
.crewlet-spinner--xs {
|
|
31267
|
+
width: var(--font-size-xs);
|
|
31268
|
+
height: var(--font-size-xs);
|
|
31269
|
+
}
|
|
31270
|
+
|
|
31271
|
+
.crewlet-spinner--sm {
|
|
31272
|
+
width: var(--font-size-sm);
|
|
31273
|
+
height: var(--font-size-sm);
|
|
31274
|
+
}
|
|
31275
|
+
|
|
31276
|
+
.crewlet-spinner--md {
|
|
31277
|
+
width: var(--font-size-md);
|
|
31278
|
+
height: var(--font-size-md);
|
|
31279
|
+
}
|
|
31280
|
+
|
|
31281
|
+
@keyframes crewlet-spinner-turn {
|
|
31282
|
+
to {
|
|
31283
|
+
transform: rotate(360deg);
|
|
31284
|
+
}
|
|
31285
|
+
}
|
|
31286
|
+
|
|
31287
|
+
/* It stops, and keeps its open quarter: a closed ring reads as an empty status
|
|
31288
|
+
circle, the open one still reads as pending. */
|
|
31289
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31290
|
+
.crewlet-spinner {
|
|
31291
|
+
animation: none;
|
|
31292
|
+
}
|
|
31293
|
+
}
|
|
31294
|
+
|
|
31295
|
+
|
|
29989
31296
|
/* StatCard-HAA3F5GX.css */
|
|
29990
31297
|
/*
|
|
29991
31298
|
* The stat tile.
|
|
@@ -30479,6 +31786,71 @@ svg.crewlet-select__chevron {
|
|
|
30479
31786
|
}
|
|
30480
31787
|
|
|
30481
31788
|
|
|
31789
|
+
/* StatusCard-6RPEE6UU.css */
|
|
31790
|
+
/*
|
|
31791
|
+
* A record with a state. The card, its head, its body and its foot are
|
|
31792
|
+
* Card's; only what a status card adds is said here.
|
|
31793
|
+
*/
|
|
31794
|
+
|
|
31795
|
+
/* The body holds a sentence, a list and a note, one gap apart. */
|
|
31796
|
+
.crewlet-status-card__body {
|
|
31797
|
+
display: flex;
|
|
31798
|
+
flex-direction: column;
|
|
31799
|
+
gap: var(--spacing-3);
|
|
31800
|
+
min-width: 0;
|
|
31801
|
+
font-size: var(--font-size-compact);
|
|
31802
|
+
line-height: var(--font-line-height-normal);
|
|
31803
|
+
color: var(--color-text-primary);
|
|
31804
|
+
}
|
|
31805
|
+
|
|
31806
|
+
.crewlet-status-card__body > p {
|
|
31807
|
+
margin: 0;
|
|
31808
|
+
}
|
|
31809
|
+
|
|
31810
|
+
/* Settled: the body steps back so the strip at the foot reads first. */
|
|
31811
|
+
.crewlet-status-card--settled .crewlet-status-card__body {
|
|
31812
|
+
color: var(--color-text-secondary);
|
|
31813
|
+
}
|
|
31814
|
+
|
|
31815
|
+
/* The strip fills its flush footer edge to edge. */
|
|
31816
|
+
.crewlet-status-card__strip {
|
|
31817
|
+
display: block;
|
|
31818
|
+
}
|
|
31819
|
+
|
|
31820
|
+
/*
|
|
31821
|
+
* THE FOOT'S ONE RULE. A decision ends the row; utilities start it, with a
|
|
31822
|
+
* ghost button at either end pulled out by its padding and edge so its glyph
|
|
31823
|
+
* sits on the card's text edge.
|
|
31824
|
+
*/
|
|
31825
|
+
.crewlet-status-card__actions {
|
|
31826
|
+
flex-wrap: wrap;
|
|
31827
|
+
container: crewlet-status-card-actions / inline-size;
|
|
31828
|
+
}
|
|
31829
|
+
|
|
31830
|
+
.crewlet-status-card__actions--end {
|
|
31831
|
+
justify-content: flex-end;
|
|
31832
|
+
}
|
|
31833
|
+
|
|
31834
|
+
.crewlet-status-card__actions--start {
|
|
31835
|
+
justify-content: flex-start;
|
|
31836
|
+
}
|
|
31837
|
+
|
|
31838
|
+
.crewlet-status-card__actions--start > .crewlet-btn--ghost.crewlet-btn--small:first-child {
|
|
31839
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
|
|
31840
|
+
}
|
|
31841
|
+
|
|
31842
|
+
.crewlet-status-card__actions--start > .crewlet-btn--ghost.crewlet-btn--small:last-child {
|
|
31843
|
+
margin-inline-end: calc(-1 * (var(--spacing-2) + 1px));
|
|
31844
|
+
}
|
|
31845
|
+
|
|
31846
|
+
/* A decision on a narrow card (a phone sheet): its buttons share the row as blocks. */
|
|
31847
|
+
@container crewlet-status-card-actions (width < 328px) {
|
|
31848
|
+
.crewlet-status-card__actions--end > .crewlet-btn {
|
|
31849
|
+
flex: 1 1 0;
|
|
31850
|
+
}
|
|
31851
|
+
}
|
|
31852
|
+
|
|
31853
|
+
|
|
30482
31854
|
/* StatusDot-7OMCQCZF.css */
|
|
30483
31855
|
/*
|
|
30484
31856
|
* The status dot: a 7px mark in its tone's fill, beside the word it belongs
|
|
@@ -30668,6 +32040,128 @@ svg.crewlet-select__chevron {
|
|
|
30668
32040
|
}
|
|
30669
32041
|
|
|
30670
32042
|
|
|
32043
|
+
/* StepList-A4YVU4JI.css */
|
|
32044
|
+
/*
|
|
32045
|
+
* A request's steps: a well on the inset ground, an ordered list of steps
|
|
32046
|
+
* each on a three-track grid (the 16px state column, the words, the
|
|
32047
|
+
* duration), every track aligned to the label's first line.
|
|
32048
|
+
*/
|
|
32049
|
+
|
|
32050
|
+
/*
|
|
32051
|
+
* A STATE'S MARK, shared with the run chip: a 16px box, the mark centred in
|
|
32052
|
+
* it at the glyph's 14px, inked by state. The box's height is the line it
|
|
32053
|
+
* stands on (`--crewlet-step-mark-line`), so it sits on that line's middle.
|
|
32054
|
+
*/
|
|
32055
|
+
.crewlet-step-mark {
|
|
32056
|
+
display: inline-flex;
|
|
32057
|
+
flex: none;
|
|
32058
|
+
align-items: center;
|
|
32059
|
+
justify-content: center;
|
|
32060
|
+
width: var(--font-size-md);
|
|
32061
|
+
height: var(--crewlet-step-mark-line, var(--font-size-md));
|
|
32062
|
+
}
|
|
32063
|
+
|
|
32064
|
+
.crewlet-step-mark--running {
|
|
32065
|
+
color: var(--color-text-secondary);
|
|
32066
|
+
}
|
|
32067
|
+
|
|
32068
|
+
.crewlet-step-mark--done {
|
|
32069
|
+
color: var(--color-feedback-success-ink);
|
|
32070
|
+
}
|
|
32071
|
+
|
|
32072
|
+
.crewlet-step-mark--failed {
|
|
32073
|
+
color: var(--color-feedback-danger-ink);
|
|
32074
|
+
}
|
|
32075
|
+
|
|
32076
|
+
.crewlet-step-mark--waiting {
|
|
32077
|
+
color: var(--color-feedback-warning-ink);
|
|
32078
|
+
}
|
|
32079
|
+
|
|
32080
|
+
.crewlet-step-mark--refused,
|
|
32081
|
+
.crewlet-step-mark--stopped {
|
|
32082
|
+
color: var(--color-text-tertiary);
|
|
32083
|
+
}
|
|
32084
|
+
|
|
32085
|
+
.crewlet-step-list {
|
|
32086
|
+
--crewlet-step-list-line: calc(var(--font-size-compact) * var(--font-line-height-normal));
|
|
32087
|
+
|
|
32088
|
+
display: flex;
|
|
32089
|
+
flex-direction: column;
|
|
32090
|
+
gap: var(--spacing-1);
|
|
32091
|
+
min-width: 0;
|
|
32092
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
32093
|
+
border-radius: var(--radius-md);
|
|
32094
|
+
background: var(--color-surface-inset);
|
|
32095
|
+
}
|
|
32096
|
+
|
|
32097
|
+
.crewlet-step-list__summary {
|
|
32098
|
+
font-size: var(--font-size-xs);
|
|
32099
|
+
font-variant-numeric: tabular-nums;
|
|
32100
|
+
color: var(--color-text-tertiary);
|
|
32101
|
+
}
|
|
32102
|
+
|
|
32103
|
+
.crewlet-step-list__steps {
|
|
32104
|
+
display: flex;
|
|
32105
|
+
flex-direction: column;
|
|
32106
|
+
gap: var(--spacing-2);
|
|
32107
|
+
margin: 0;
|
|
32108
|
+
padding: 0;
|
|
32109
|
+
list-style: none;
|
|
32110
|
+
}
|
|
32111
|
+
|
|
32112
|
+
.crewlet-step-list__step {
|
|
32113
|
+
--crewlet-step-mark-line: var(--crewlet-step-list-line);
|
|
32114
|
+
|
|
32115
|
+
display: grid;
|
|
32116
|
+
grid-template-columns: var(--font-size-md) minmax(0, 1fr) auto;
|
|
32117
|
+
align-items: start;
|
|
32118
|
+
gap: var(--spacing-2);
|
|
32119
|
+
font-size: var(--font-size-compact);
|
|
32120
|
+
line-height: var(--crewlet-step-list-line);
|
|
32121
|
+
color: var(--color-text-primary);
|
|
32122
|
+
}
|
|
32123
|
+
|
|
32124
|
+
.crewlet-step-list__text {
|
|
32125
|
+
display: flex;
|
|
32126
|
+
flex-direction: column;
|
|
32127
|
+
min-width: 0;
|
|
32128
|
+
}
|
|
32129
|
+
|
|
32130
|
+
.crewlet-step-list__label {
|
|
32131
|
+
overflow-wrap: anywhere;
|
|
32132
|
+
}
|
|
32133
|
+
|
|
32134
|
+
/*
|
|
32135
|
+
* WHAT THE STEP ASKED FOR, in the mono face. Each piece between separators is
|
|
32136
|
+
* one inline block, so a line breaks only between pieces (at a space, or
|
|
32137
|
+
* after `/`, `?` or `&`) and a piece wraps inside itself only when it alone
|
|
32138
|
+
* is wider than the line.
|
|
32139
|
+
*/
|
|
32140
|
+
.crewlet-step-list__detail {
|
|
32141
|
+
display: block;
|
|
32142
|
+
font-family: var(--font-family-mono);
|
|
32143
|
+
font-size: var(--font-size-2xs);
|
|
32144
|
+
line-height: var(--font-line-height-snug);
|
|
32145
|
+
font-variant-ligatures: none;
|
|
32146
|
+
color: var(--color-text-tertiary);
|
|
32147
|
+
}
|
|
32148
|
+
|
|
32149
|
+
.crewlet-step-list__piece {
|
|
32150
|
+
display: inline-block;
|
|
32151
|
+
max-width: 100%;
|
|
32152
|
+
overflow-wrap: anywhere;
|
|
32153
|
+
}
|
|
32154
|
+
|
|
32155
|
+
.crewlet-step-list__duration {
|
|
32156
|
+
font-family: var(--font-family-mono);
|
|
32157
|
+
font-size: var(--font-size-2xs);
|
|
32158
|
+
line-height: var(--crewlet-step-list-line);
|
|
32159
|
+
font-variant-numeric: tabular-nums;
|
|
32160
|
+
color: var(--color-text-tertiary);
|
|
32161
|
+
white-space: nowrap;
|
|
32162
|
+
}
|
|
32163
|
+
|
|
32164
|
+
|
|
30671
32165
|
/* Stepper-QEJI5RGX.css */
|
|
30672
32166
|
/*
|
|
30673
32167
|
* The stepper: where a sequence has got to (Stepper.tsx).
|
|
@@ -31026,6 +32520,111 @@ svg.crewlet-select__chevron {
|
|
|
31026
32520
|
}
|
|
31027
32521
|
|
|
31028
32522
|
|
|
32523
|
+
/* SuggestionRow-OKBGNHSS.css */
|
|
32524
|
+
/*
|
|
32525
|
+
* A suggestion, in the list row's grammar: the medium row height, a spacing
|
|
32526
|
+
* step by a step and a half, the hover tint, and the inset focus ring that a
|
|
32527
|
+
* row inside a clipped card can still show.
|
|
32528
|
+
*/
|
|
32529
|
+
.crewlet-suggestion-list {
|
|
32530
|
+
display: flex;
|
|
32531
|
+
flex-direction: column;
|
|
32532
|
+
min-width: 0;
|
|
32533
|
+
margin: 0;
|
|
32534
|
+
padding: 0;
|
|
32535
|
+
list-style: none;
|
|
32536
|
+
}
|
|
32537
|
+
|
|
32538
|
+
.crewlet-suggestion-list--divided {
|
|
32539
|
+
overflow: hidden;
|
|
32540
|
+
border: 1px solid var(--color-border-default);
|
|
32541
|
+
border-radius: var(--radius-lg);
|
|
32542
|
+
background: var(--color-surface-subtle);
|
|
32543
|
+
}
|
|
32544
|
+
|
|
32545
|
+
.crewlet-suggestion-list--divided > .crewlet-suggestion-list__item + .crewlet-suggestion-list__item {
|
|
32546
|
+
border-top: 1px solid var(--color-border-default);
|
|
32547
|
+
}
|
|
32548
|
+
|
|
32549
|
+
.crewlet-suggestion-row {
|
|
32550
|
+
display: flex;
|
|
32551
|
+
align-items: center;
|
|
32552
|
+
gap: var(--spacing-3);
|
|
32553
|
+
width: 100%;
|
|
32554
|
+
min-width: 0;
|
|
32555
|
+
min-height: var(--size-row-md);
|
|
32556
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
32557
|
+
border: 0;
|
|
32558
|
+
border-radius: var(--radius-xs);
|
|
32559
|
+
background: none;
|
|
32560
|
+
color: var(--color-text-primary);
|
|
32561
|
+
font: inherit;
|
|
32562
|
+
text-align: left;
|
|
32563
|
+
cursor: pointer;
|
|
32564
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
32565
|
+
}
|
|
32566
|
+
|
|
32567
|
+
.crewlet-suggestion-list--divided .crewlet-suggestion-row {
|
|
32568
|
+
border-radius: 0;
|
|
32569
|
+
}
|
|
32570
|
+
|
|
32571
|
+
.crewlet-suggestion-row:hover {
|
|
32572
|
+
background: var(--color-surface-hover);
|
|
32573
|
+
}
|
|
32574
|
+
|
|
32575
|
+
.crewlet-suggestion-row:focus-visible {
|
|
32576
|
+
outline: 2px solid var(--color-focus);
|
|
32577
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
32578
|
+
}
|
|
32579
|
+
|
|
32580
|
+
.crewlet-suggestion-row:disabled {
|
|
32581
|
+
cursor: not-allowed;
|
|
32582
|
+
color: var(--color-text-tertiary);
|
|
32583
|
+
}
|
|
32584
|
+
|
|
32585
|
+
.crewlet-suggestion-row:disabled:hover {
|
|
32586
|
+
background: none;
|
|
32587
|
+
}
|
|
32588
|
+
|
|
32589
|
+
.crewlet-suggestion-row__icon {
|
|
32590
|
+
display: inline-flex;
|
|
32591
|
+
flex: none;
|
|
32592
|
+
color: var(--color-text-tertiary);
|
|
32593
|
+
}
|
|
32594
|
+
|
|
32595
|
+
.crewlet-suggestion-row__icon .crewlet-glyph {
|
|
32596
|
+
width: var(--font-size-sm);
|
|
32597
|
+
height: var(--font-size-sm);
|
|
32598
|
+
}
|
|
32599
|
+
|
|
32600
|
+
.crewlet-suggestion-row__words {
|
|
32601
|
+
display: flex;
|
|
32602
|
+
flex: 1 1 auto;
|
|
32603
|
+
flex-direction: column;
|
|
32604
|
+
min-width: 0;
|
|
32605
|
+
}
|
|
32606
|
+
|
|
32607
|
+
.crewlet-suggestion-row__detail {
|
|
32608
|
+
font-size: var(--font-size-xs);
|
|
32609
|
+
color: var(--color-text-tertiary);
|
|
32610
|
+
}
|
|
32611
|
+
|
|
32612
|
+
.crewlet-suggestion-row__trail {
|
|
32613
|
+
display: inline-flex;
|
|
32614
|
+
flex: none;
|
|
32615
|
+
align-items: center;
|
|
32616
|
+
gap: var(--spacing-2);
|
|
32617
|
+
margin-inline-start: auto;
|
|
32618
|
+
color: var(--color-text-tertiary);
|
|
32619
|
+
}
|
|
32620
|
+
|
|
32621
|
+
@media (prefers-reduced-motion: reduce) {
|
|
32622
|
+
.crewlet-suggestion-row {
|
|
32623
|
+
transition: none;
|
|
32624
|
+
}
|
|
32625
|
+
}
|
|
32626
|
+
|
|
32627
|
+
|
|
31029
32628
|
/* Switch-66RAQCRE.css */
|
|
31030
32629
|
/*
|
|
31031
32630
|
* Switch: a setting that takes effect as it moves.
|
|
@@ -31556,7 +33155,7 @@ b.crewlet-switcher__match {
|
|
|
31556
33155
|
}
|
|
31557
33156
|
|
|
31558
33157
|
|
|
31559
|
-
/* Table-
|
|
33158
|
+
/* Table-RUYMMWXT.css */
|
|
31560
33159
|
/*
|
|
31561
33160
|
* Table: the operator's table, on the elements a table is made of.
|
|
31562
33161
|
*
|
|
@@ -31677,6 +33276,55 @@ b.crewlet-switcher__match {
|
|
|
31677
33276
|
* a control.
|
|
31678
33277
|
*/
|
|
31679
33278
|
|
|
33279
|
+
/* A column of figures stands against the end, its heading over its numbers. */
|
|
33280
|
+
.crewlet-table__table .crewlet-table__cell--end {
|
|
33281
|
+
text-align: right;
|
|
33282
|
+
font-variant-numeric: tabular-nums;
|
|
33283
|
+
}
|
|
33284
|
+
|
|
33285
|
+
/*
|
|
33286
|
+
* THE TOTAL ROW, fenced from the rows it sums by the same hairline and set at
|
|
33287
|
+
* medium weight. Its first cell heads the row, so it is a th and is reset to
|
|
33288
|
+
* the body's register rather than the header's micro-label.
|
|
33289
|
+
*/
|
|
33290
|
+
.crewlet-table__table tfoot th,
|
|
33291
|
+
.crewlet-table__table tfoot td {
|
|
33292
|
+
position: static;
|
|
33293
|
+
height: var(--size-row-md);
|
|
33294
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
33295
|
+
border-top: 1px solid var(--color-border-default);
|
|
33296
|
+
border-bottom: none;
|
|
33297
|
+
background: none;
|
|
33298
|
+
font-size: inherit;
|
|
33299
|
+
font-weight: var(--font-weight-medium);
|
|
33300
|
+
letter-spacing: normal;
|
|
33301
|
+
text-transform: none;
|
|
33302
|
+
text-align: left;
|
|
33303
|
+
color: var(--color-text-primary);
|
|
33304
|
+
vertical-align: middle;
|
|
33305
|
+
}
|
|
33306
|
+
|
|
33307
|
+
/*
|
|
33308
|
+
* IN A CARD, the card is the frame: no edge, corner or ground of the table's
|
|
33309
|
+
* own, and the outer cells take the card's 16px inset so every row lines up
|
|
33310
|
+
* with the card's title.
|
|
33311
|
+
*/
|
|
33312
|
+
.crewlet-table--flush {
|
|
33313
|
+
background: none;
|
|
33314
|
+
border: none;
|
|
33315
|
+
border-radius: 0;
|
|
33316
|
+
}
|
|
33317
|
+
|
|
33318
|
+
.crewlet-table--flush .crewlet-table__table th:first-child,
|
|
33319
|
+
.crewlet-table--flush .crewlet-table__table td:first-child {
|
|
33320
|
+
padding-left: var(--spacing-4);
|
|
33321
|
+
}
|
|
33322
|
+
|
|
33323
|
+
.crewlet-table--flush .crewlet-table__table th:last-child,
|
|
33324
|
+
.crewlet-table--flush .crewlet-table__table td:last-child {
|
|
33325
|
+
padding-right: var(--spacing-4);
|
|
33326
|
+
}
|
|
33327
|
+
|
|
31680
33328
|
.crewlet-table__empty {
|
|
31681
33329
|
padding: var(--spacing-7) var(--spacing-3);
|
|
31682
33330
|
text-align: center;
|
|
@@ -34375,7 +36023,7 @@ svg.crewlet-time-window__tick {
|
|
|
34375
36023
|
}
|
|
34376
36024
|
|
|
34377
36025
|
|
|
34378
|
-
/* Toaster-
|
|
36026
|
+
/* Toaster-MX7TBMC3.css */
|
|
34379
36027
|
/*
|
|
34380
36028
|
* The toast stack, drawn as the first release drew it (24a60c3): a dark strip
|
|
34381
36029
|
* on the page's deepest ground with the large shadow and the rim light, a
|
|
@@ -34392,35 +36040,45 @@ svg.crewlet-time-window__tick {
|
|
|
34392
36040
|
* reduced motion gets no wash and still gets the toast taken away.
|
|
34393
36041
|
*/
|
|
34394
36042
|
.crewlet-toaster {
|
|
36043
|
+
/*
|
|
36044
|
+
* THE HOST'S INSET: room on the stack's own side and edge that something
|
|
36045
|
+
* else occupies, such as a panel beside the page or a phone sheet's foot.
|
|
36046
|
+
* Set by `inset` on the Toaster (or by the host on these two properties)
|
|
36047
|
+
* and added to the window inset below, so the stack stands beside the
|
|
36048
|
+
* panel rather than over it. Zero by default.
|
|
36049
|
+
*/
|
|
36050
|
+
--crewlet-toaster-inset-inline: 0px;
|
|
36051
|
+
--crewlet-toaster-inset-block: 0px;
|
|
36052
|
+
|
|
34395
36053
|
position: fixed;
|
|
34396
36054
|
z-index: var(--z-index-toast);
|
|
34397
36055
|
display: flex;
|
|
34398
36056
|
flex-direction: column;
|
|
34399
36057
|
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
34400
|
-
width: min(380px, calc(100vw - 2 * var(--spacing-6)));
|
|
36058
|
+
width: min(380px, calc(100vw - 2 * var(--spacing-6) - var(--crewlet-toaster-inset-inline)));
|
|
34401
36059
|
/* The stack itself takes no presses, so the screen under it stays live
|
|
34402
36060
|
while nothing is up; each toast takes them back for its own strip. */
|
|
34403
36061
|
pointer-events: none;
|
|
34404
36062
|
}
|
|
34405
36063
|
|
|
34406
36064
|
.crewlet-toaster--bottom-right {
|
|
34407
|
-
bottom: var(--spacing-6);
|
|
34408
|
-
right: var(--spacing-6);
|
|
36065
|
+
bottom: calc(var(--spacing-6) + var(--crewlet-toaster-inset-block));
|
|
36066
|
+
right: calc(var(--spacing-6) + var(--crewlet-toaster-inset-inline));
|
|
34409
36067
|
}
|
|
34410
36068
|
|
|
34411
36069
|
.crewlet-toaster--top-right {
|
|
34412
|
-
top: var(--spacing-6);
|
|
34413
|
-
right: var(--spacing-6);
|
|
36070
|
+
top: calc(var(--spacing-6) + var(--crewlet-toaster-inset-block));
|
|
36071
|
+
right: calc(var(--spacing-6) + var(--crewlet-toaster-inset-inline));
|
|
34414
36072
|
}
|
|
34415
36073
|
|
|
34416
36074
|
.crewlet-toaster--bottom-left {
|
|
34417
|
-
bottom: var(--spacing-6);
|
|
34418
|
-
left: var(--spacing-6);
|
|
36075
|
+
bottom: calc(var(--spacing-6) + var(--crewlet-toaster-inset-block));
|
|
36076
|
+
left: calc(var(--spacing-6) + var(--crewlet-toaster-inset-inline));
|
|
34419
36077
|
}
|
|
34420
36078
|
|
|
34421
36079
|
.crewlet-toaster--top-left {
|
|
34422
|
-
top: var(--spacing-6);
|
|
34423
|
-
left: var(--spacing-6);
|
|
36080
|
+
top: calc(var(--spacing-6) + var(--crewlet-toaster-inset-block));
|
|
36081
|
+
left: calc(var(--spacing-6) + var(--crewlet-toaster-inset-inline));
|
|
34424
36082
|
}
|
|
34425
36083
|
|
|
34426
36084
|
.crewlet-toast {
|
|
@@ -34658,12 +36316,23 @@ svg.crewlet-time-window__tick {
|
|
|
34658
36316
|
|
|
34659
36317
|
.crewlet-toaster--bottom-right,
|
|
34660
36318
|
.crewlet-toaster--bottom-left {
|
|
34661
|
-
bottom: var(--spacing-3);
|
|
36319
|
+
bottom: calc(var(--spacing-3) + var(--crewlet-toaster-inset-block));
|
|
34662
36320
|
}
|
|
34663
36321
|
|
|
34664
36322
|
.crewlet-toaster--top-right,
|
|
34665
36323
|
.crewlet-toaster--top-left {
|
|
34666
|
-
top: var(--spacing-3);
|
|
36324
|
+
top: calc(var(--spacing-3) + var(--crewlet-toaster-inset-block));
|
|
36325
|
+
}
|
|
36326
|
+
|
|
36327
|
+
/* Across the width, the host's inline inset still keeps its own side clear. */
|
|
36328
|
+
.crewlet-toaster--bottom-right,
|
|
36329
|
+
.crewlet-toaster--top-right {
|
|
36330
|
+
right: calc(var(--spacing-3) + var(--crewlet-toaster-inset-inline));
|
|
36331
|
+
}
|
|
36332
|
+
|
|
36333
|
+
.crewlet-toaster--bottom-left,
|
|
36334
|
+
.crewlet-toaster--top-left {
|
|
36335
|
+
left: calc(var(--spacing-3) + var(--crewlet-toaster-inset-inline));
|
|
34667
36336
|
}
|
|
34668
36337
|
}
|
|
34669
36338
|
|