@crewlethq/ui 0.68.0 → 0.70.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 +24 -2
- package/dist/AgentHandoffPanel/index.js +5 -5
- package/dist/AppShell/index.js +4 -4
- package/dist/ArrangeList/index.js +4 -4
- package/dist/ArtifactBar/index.js +7 -7
- package/dist/ArtifactCard/index.js +4 -4
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/AvatarPicker/index.js +7 -7
- package/dist/BriefCard/BriefCard.d.ts +80 -0
- package/dist/BriefCard/index.d.ts +3 -0
- package/dist/BriefCard/index.js +13 -0
- package/dist/BriefCard-L66R5U32.css +127 -0
- package/dist/Button/Button.d.ts +10 -0
- package/dist/Button/index.js +1 -1
- package/dist/{Button-VRRYSXFN.css → Button-GDEBGBX6.css} +30 -3
- package/dist/Canvas/index.js +3 -3
- package/dist/CanvasBoard/index.js +5 -5
- package/dist/CanvasToolbar/index.js +4 -4
- package/dist/ChatThread/index.js +2 -2
- package/dist/Checkbox/index.js +3 -3
- package/dist/CodeBlock/index.js +3 -3
- package/dist/ColorField/index.js +3 -3
- package/dist/ColorSwatch/index.js +3 -3
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +5 -5
- package/dist/CommentThread/index.js +6 -6
- package/dist/Composer/index.js +3 -3
- package/dist/ConfirmField/index.js +3 -3
- package/dist/ConflictNote/index.js +2 -2
- package/dist/ContrastHelp/index.js +1 -1
- package/dist/Copyable/index.js +2 -2
- package/dist/DataGrid/DataGrid.d.ts +50 -4
- package/dist/DataGrid/index.d.ts +2 -2
- package/dist/DataGrid/index.js +5 -5
- package/dist/{DataGrid-NHIN2I42.css → DataGrid-Q26F2V5Q.css} +145 -24
- package/dist/DataTable/index.js +7 -7
- package/dist/DataView/index.js +10 -9
- package/dist/{DataView-RH5UDA5F.css → DataView-L7HLNW7C.css} +1 -112
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/DeepWorkCard/index.js +3 -3
- package/dist/DocTabsEditor/index.js +5 -5
- package/dist/DownloadButton/index.js +2 -2
- package/dist/{Editor-2MZDDSJF.js → Editor-NNQEALNT.js} +4 -4
- package/dist/ErrorBoundary/index.js +2 -2
- package/dist/FileDrop/index.js +2 -2
- package/dist/FilterPill/FilterPill.d.ts +63 -0
- package/dist/FilterPill/index.d.ts +3 -0
- package/dist/FilterPill/index.js +4 -0
- package/dist/FilterPill-4GMNFZND.css +134 -0
- package/dist/FollowBanner/index.js +2 -2
- package/dist/HuePicker/index.js +6 -6
- package/dist/InlineEditor/index.js +2 -2
- package/dist/Input/index.js +2 -2
- package/dist/LinkInterstitial/index.js +4 -4
- package/dist/ListInput/index.js +4 -4
- package/dist/LogoSlot/index.js +3 -3
- package/dist/MarkdownEditor/index.js +6 -6
- package/dist/Menu/Menu.d.ts +10 -1
- package/dist/Menu/index.js +3 -3
- package/dist/{Menu-OLUGHX56.css → Menu-I4SNXHOT.css} +12 -0
- package/dist/MergeConflicts/index.js +6 -6
- package/dist/Modal/index.js +3 -3
- package/dist/OpenInAppCard/index.js +3 -3
- package/dist/OrgTable/index.js +1 -1
- package/dist/PeekRail/index.js +2 -2
- package/dist/PeopleRail/index.js +2 -2
- package/dist/PresenterView/index.js +3 -3
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/ProposalCard/index.js +7 -7
- package/dist/ReceiptStrip/index.js +2 -2
- package/dist/ResultTableCard/index.js +4 -4
- package/dist/RichEditor/index.js +2 -2
- package/dist/SandboxedFrame/index.js +2 -2
- package/dist/SegmentedControl/index.js +5 -5
- package/dist/SelectionBar/index.js +2 -2
- package/dist/SetupWizard/index.js +2 -2
- package/dist/ShareDialog/index.js +5 -5
- package/dist/SheetColumnEditor/index.js +9 -9
- package/dist/SheetGrid/index.js +4 -4
- package/dist/SidePanel/index.js +1 -1
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +4 -4
- package/dist/Switcher/index.js +5 -5
- package/dist/TableCells/index.js +1 -1
- package/dist/{TableCells-F6MUV572.css → TableCells-TKSNLRK3.css} +1 -0
- package/dist/Tabs/index.js +4 -4
- package/dist/TagsInput/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +6 -6
- package/dist/TimeRangePicker/index.js +8 -8
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/TreeGrid/index.js +1 -1
- package/dist/ValueField/index.js +4 -4
- package/dist/VersionCompare/index.js +6 -6
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/{chunk-XI56IJGI.js → chunk-3EETQFAM.js} +1 -1
- package/dist/{chunk-5FFZED4X.js → chunk-3EY5SEGH.js} +4 -4
- package/dist/{chunk-2QMUOUXN.js → chunk-3LP3VPLT.js} +2 -2
- package/dist/{chunk-DGG2A6XG.js → chunk-3WN5HUAK.js} +2 -2
- package/dist/{chunk-QBWNGNF7.js → chunk-4DL2BQJE.js} +1 -1
- package/dist/{chunk-XNYMMLCY.js → chunk-4MVLED6E.js} +4 -4
- package/dist/{chunk-OXEWUAND.js → chunk-5OFRDX66.js} +1 -1
- package/dist/{chunk-QRKDP7RQ.js → chunk-6C6YK75K.js} +2 -2
- package/dist/{chunk-2A6DL3K5.js → chunk-6FBPFG3C.js} +1 -1
- package/dist/{chunk-WWXIGN4O.js → chunk-73SAOOR5.js} +3 -3
- package/dist/{chunk-CMTLQOJY.js → chunk-7LSSYHOT.js} +1 -1
- package/dist/{chunk-COAK5MIF.js → chunk-ADSOY7UM.js} +3 -3
- package/dist/{chunk-GNDKUSCG.js → chunk-AGLONIVV.js} +1 -1
- package/dist/{chunk-YDXX5UB7.js → chunk-AQIFKLXY.js} +1 -1
- package/dist/{chunk-SUJO3AHN.js → chunk-B3PK2LND.js} +1 -1
- package/dist/{chunk-IU5J6BY5.js → chunk-BWAUL5MB.js} +2 -2
- package/dist/{chunk-ZFFQMRPJ.js → chunk-BWFJB5JD.js} +4 -4
- package/dist/{chunk-I24FI46B.js → chunk-C667GCU7.js} +1 -1
- package/dist/{chunk-CWYU7DNT.js → chunk-CDNZTCP2.js} +1 -1
- package/dist/{chunk-MVQSTBLQ.js → chunk-DB7UVFOY.js} +1 -1
- package/dist/{chunk-OJGI4XJH.js → chunk-DGSK4LLS.js} +1 -1
- package/dist/{chunk-7QTPJDRF.js → chunk-DGXZ635L.js} +7 -4
- package/dist/{chunk-2SU735S3.js → chunk-DV5L2GRY.js} +1 -1
- package/dist/{chunk-NSCYGUDG.js → chunk-EHFQMY3B.js} +1 -1
- package/dist/{chunk-FPTJMNI3.js → chunk-EN4UJQ63.js} +2 -2
- package/dist/{chunk-O3WH7OJE.js → chunk-EOXI3CRG.js} +1 -1
- package/dist/{chunk-LUSRKTX6.js → chunk-ERFXYGRF.js} +2 -2
- package/dist/{chunk-MCMPQBEV.js → chunk-FQI62PIZ.js} +2 -2
- package/dist/{chunk-CLJHQHPS.js → chunk-FURJVZCT.js} +73 -27
- package/dist/{chunk-5K7GGQNX.js → chunk-G4QZWVAB.js} +2 -2
- package/dist/{chunk-KZ3UXNN7.js → chunk-H32JW6CZ.js} +2 -2
- package/dist/{chunk-7DD2GR7I.js → chunk-HPI5J6AR.js} +2 -2
- package/dist/{chunk-ZEPUKRO7.js → chunk-IJ7KLXUZ.js} +1 -1
- package/dist/{chunk-MVQLCSAC.js → chunk-IPUEVTRJ.js} +1 -1
- package/dist/{chunk-4VPDY7AD.js → chunk-J5WWMC35.js} +45 -46
- package/dist/{chunk-KQGOVBGF.js → chunk-JD7P2GJP.js} +1 -1
- package/dist/{chunk-VMEUY672.js → chunk-JQEXAH7G.js} +1 -1
- package/dist/{chunk-K4IVKHKU.js → chunk-JT7WRPZ6.js} +1 -1
- package/dist/{chunk-CFXDWGQI.js → chunk-JVII5264.js} +1 -1
- package/dist/chunk-K4LZXSKZ.js +62 -0
- package/dist/{chunk-JII74OTJ.js → chunk-KAA3GFTP.js} +5 -5
- package/dist/{chunk-WYXUDDTY.js → chunk-KL6A7JGH.js} +1 -1
- package/dist/{chunk-2JHGPXYG.js → chunk-KQWJWTED.js} +1 -1
- package/dist/{chunk-WU5JDEEY.js → chunk-L4HHWG4V.js} +1 -1
- package/dist/{chunk-RCHJBKD3.js → chunk-LQWORB5B.js} +2 -2
- package/dist/{chunk-2DSHMV6B.js → chunk-MFQPGMJT.js} +1 -1
- package/dist/{chunk-XDVQ72BE.js → chunk-NXNLAZPK.js} +2 -2
- package/dist/{chunk-WPMZKZUH.js → chunk-O3HCFM3D.js} +1 -1
- package/dist/{chunk-NBOFBSVD.js → chunk-OBPINJNO.js} +2 -2
- package/dist/{chunk-2566PSQ3.js → chunk-OQG4P5KU.js} +18 -4
- package/dist/{chunk-UWOYDHVW.js → chunk-P64MIA7C.js} +1 -1
- package/dist/{chunk-EAR2F5OA.js → chunk-PBCNINMB.js} +1 -1
- package/dist/{chunk-KHHDCNYM.js → chunk-PRN5IP2R.js} +1 -1
- package/dist/{chunk-DMK2A4IK.js → chunk-QSWQJX27.js} +1 -1
- package/dist/{chunk-D2ZXIQ23.js → chunk-R5OATXWU.js} +1 -1
- package/dist/{chunk-OFABBAUR.js → chunk-SMZPUHBL.js} +1 -1
- package/dist/{chunk-7QTJO3PV.js → chunk-SO5SXSTP.js} +1 -1
- package/dist/{chunk-IYG4ETAQ.js → chunk-T5GBTXNC.js} +1 -1
- package/dist/{chunk-DMY4XEDS.js → chunk-TKBFRGUV.js} +4 -4
- package/dist/{chunk-DFU6JGJV.js → chunk-TPCBPGSB.js} +1 -1
- package/dist/{chunk-GAUBP247.js → chunk-TWJERLT3.js} +1 -1
- package/dist/{chunk-MJTBINIY.js → chunk-TYIHFDMP.js} +1 -1
- package/dist/{chunk-PHBMSXVE.js → chunk-UY3FWQWG.js} +2 -2
- package/dist/chunk-VBA5FSWV.js +87 -0
- package/dist/{chunk-SZEKOW2X.js → chunk-VWMB3CJN.js} +1 -1
- package/dist/{chunk-UKYVLQAE.js → chunk-W5AXJWOW.js} +2 -2
- package/dist/{chunk-HHZ5ZXYO.js → chunk-YGWIWDXE.js} +3 -3
- package/dist/{chunk-2T32N2WD.js → chunk-YUHKRRWO.js} +2 -2
- package/dist/{chunk-IQQSMK4E.js → chunk-ZUBFVK6B.js} +1 -1
- package/dist/{chunk-M25IV5MH.js → chunk-ZWCK4N4L.js} +1 -1
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +104 -102
- package/dist/index.js +104 -102
- package/dist/styles.css +463 -146
- package/package.json +3 -3
- package/dist/{chunk-TXQNWGUD.js → chunk-ABZC3NLM.js} +0 -0
- package/dist/{chunk-DCQ2VTBB.js → chunk-ETSF7SU6.js} +1 -1
- package/dist/{chunk-BAHLBMCH.js → chunk-HEIOLITO.js} +1 -1
- package/dist/{chunk-R2YHKVWN.js → chunk-SBHAKX2T.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -5757,7 +5757,137 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5757
5757
|
}
|
|
5758
5758
|
|
|
5759
5759
|
|
|
5760
|
-
/*
|
|
5760
|
+
/* BriefCard-L66R5U32.css */
|
|
5761
|
+
/*
|
|
5762
|
+
* A brief inside the product's status card: one sentence, the rows that wait
|
|
5763
|
+
* on the reader, one recommendation and the questions to ask next, each block
|
|
5764
|
+
* under a quiet label so a reader scans straight to the part they need.
|
|
5765
|
+
*/
|
|
5766
|
+
.crewlet-brief-card__where {
|
|
5767
|
+
display: inline-flex;
|
|
5768
|
+
flex-wrap: wrap;
|
|
5769
|
+
gap: var(--spacing-1);
|
|
5770
|
+
}
|
|
5771
|
+
|
|
5772
|
+
.crewlet-brief-card__asof {
|
|
5773
|
+
white-space: nowrap;
|
|
5774
|
+
}
|
|
5775
|
+
|
|
5776
|
+
.crewlet-brief-card__body {
|
|
5777
|
+
display: flex;
|
|
5778
|
+
flex-direction: column;
|
|
5779
|
+
gap: var(--spacing-4);
|
|
5780
|
+
min-width: 0;
|
|
5781
|
+
}
|
|
5782
|
+
|
|
5783
|
+
.crewlet-brief-card__summary {
|
|
5784
|
+
margin: 0;
|
|
5785
|
+
font-size: var(--font-size-md);
|
|
5786
|
+
font-weight: var(--font-weight-medium);
|
|
5787
|
+
line-height: var(--font-line-height-snug);
|
|
5788
|
+
text-wrap: pretty;
|
|
5789
|
+
}
|
|
5790
|
+
|
|
5791
|
+
.crewlet-brief-card__block {
|
|
5792
|
+
display: flex;
|
|
5793
|
+
flex-direction: column;
|
|
5794
|
+
gap: var(--spacing-2);
|
|
5795
|
+
min-width: 0;
|
|
5796
|
+
}
|
|
5797
|
+
|
|
5798
|
+
.crewlet-brief-card__label {
|
|
5799
|
+
margin: 0;
|
|
5800
|
+
font-size: var(--font-size-2xs);
|
|
5801
|
+
font-weight: var(--font-weight-medium);
|
|
5802
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
5803
|
+
text-transform: uppercase;
|
|
5804
|
+
line-height: var(--font-line-height-snug);
|
|
5805
|
+
color: var(--color-text-tertiary);
|
|
5806
|
+
}
|
|
5807
|
+
|
|
5808
|
+
.crewlet-brief-card__needs {
|
|
5809
|
+
display: flex;
|
|
5810
|
+
flex-direction: column;
|
|
5811
|
+
margin: 0;
|
|
5812
|
+
padding: 0;
|
|
5813
|
+
list-style: none;
|
|
5814
|
+
}
|
|
5815
|
+
|
|
5816
|
+
/*
|
|
5817
|
+
* A ROW IS THE LIST ROW'S GRAMMAR: the dot on the first line, the words and
|
|
5818
|
+
* their one fact, and the action centred at the end, so a column of rows reads
|
|
5819
|
+
* down the dots and across to the presses.
|
|
5820
|
+
*/
|
|
5821
|
+
.crewlet-brief-card__need {
|
|
5822
|
+
display: grid;
|
|
5823
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
5824
|
+
align-items: start;
|
|
5825
|
+
gap: var(--spacing-3);
|
|
5826
|
+
padding-block: var(--spacing-2);
|
|
5827
|
+
}
|
|
5828
|
+
|
|
5829
|
+
.crewlet-brief-card__need + .crewlet-brief-card__need {
|
|
5830
|
+
border-top: 1px solid var(--color-border-default);
|
|
5831
|
+
}
|
|
5832
|
+
|
|
5833
|
+
.crewlet-brief-card__need > .crewlet-button {
|
|
5834
|
+
align-self: center;
|
|
5835
|
+
}
|
|
5836
|
+
|
|
5837
|
+
.crewlet-brief-card__dot {
|
|
5838
|
+
display: inline-flex;
|
|
5839
|
+
align-items: center;
|
|
5840
|
+
height: 1lh;
|
|
5841
|
+
font-size: var(--font-size-compact);
|
|
5842
|
+
}
|
|
5843
|
+
|
|
5844
|
+
.crewlet-brief-card__words {
|
|
5845
|
+
display: flex;
|
|
5846
|
+
flex-direction: column;
|
|
5847
|
+
gap: var(--spacing-0);
|
|
5848
|
+
min-width: 0;
|
|
5849
|
+
overflow-wrap: anywhere;
|
|
5850
|
+
font-size: var(--font-size-compact);
|
|
5851
|
+
}
|
|
5852
|
+
|
|
5853
|
+
.crewlet-brief-card__detail {
|
|
5854
|
+
font-size: var(--font-size-xs);
|
|
5855
|
+
color: var(--color-text-tertiary);
|
|
5856
|
+
}
|
|
5857
|
+
|
|
5858
|
+
.crewlet-brief-card__clear {
|
|
5859
|
+
display: inline-flex;
|
|
5860
|
+
align-items: center;
|
|
5861
|
+
gap: var(--spacing-2);
|
|
5862
|
+
margin: 0;
|
|
5863
|
+
font-size: var(--font-size-compact);
|
|
5864
|
+
color: var(--color-feedback-success-ink);
|
|
5865
|
+
}
|
|
5866
|
+
|
|
5867
|
+
/* The recommendation: one step, on the accent's softest ground. */
|
|
5868
|
+
.crewlet-brief-card__next {
|
|
5869
|
+
display: grid;
|
|
5870
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
5871
|
+
align-items: center;
|
|
5872
|
+
gap: var(--spacing-3);
|
|
5873
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
5874
|
+
border-radius: var(--radius-md);
|
|
5875
|
+
background: var(--color-brand-accent-soft);
|
|
5876
|
+
overflow-wrap: anywhere;
|
|
5877
|
+
font-size: var(--font-size-compact);
|
|
5878
|
+
}
|
|
5879
|
+
|
|
5880
|
+
.crewlet-brief-card__arrow {
|
|
5881
|
+
color: var(--color-brand-accent-ink);
|
|
5882
|
+
}
|
|
5883
|
+
|
|
5884
|
+
/* The questions to ask next sit on the card's text edge: each row's own inset is pulled out. */
|
|
5885
|
+
.crewlet-brief-card__follow-ups {
|
|
5886
|
+
margin-inline: calc(-1 * var(--spacing-3));
|
|
5887
|
+
}
|
|
5888
|
+
|
|
5889
|
+
|
|
5890
|
+
/* Button-GDEBGBX6.css */
|
|
5761
5891
|
/*
|
|
5762
5892
|
* The button, and the link drawn as one.
|
|
5763
5893
|
*
|
|
@@ -5870,23 +6000,50 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5870
6000
|
per size. min-height rather than height, so a label that wraps is read
|
|
5871
6001
|
rather than clipped. */
|
|
5872
6002
|
.crewlet-btn--small {
|
|
6003
|
+
--crewlet-btn-inset: var(--spacing-2);
|
|
6004
|
+
|
|
5873
6005
|
min-height: var(--size-control-sm);
|
|
5874
|
-
padding: 0 var(--
|
|
6006
|
+
padding: 0 var(--crewlet-btn-inset);
|
|
5875
6007
|
font-size: var(--font-size-xs);
|
|
5876
6008
|
}
|
|
5877
6009
|
|
|
5878
6010
|
.crewlet-btn--medium {
|
|
6011
|
+
--crewlet-btn-inset: var(--spacing-3);
|
|
6012
|
+
|
|
5879
6013
|
min-height: var(--size-control-md);
|
|
5880
|
-
padding: 0 var(--
|
|
6014
|
+
padding: 0 var(--crewlet-btn-inset);
|
|
5881
6015
|
font-size: var(--font-size-compact);
|
|
5882
6016
|
}
|
|
5883
6017
|
|
|
5884
6018
|
.crewlet-btn--large {
|
|
6019
|
+
--crewlet-btn-inset: var(--spacing-4);
|
|
6020
|
+
|
|
5885
6021
|
min-height: var(--size-control-lg);
|
|
5886
|
-
padding: 0 var(--
|
|
6022
|
+
padding: 0 var(--crewlet-btn-inset);
|
|
5887
6023
|
font-size: var(--font-size-sm);
|
|
5888
6024
|
}
|
|
5889
6025
|
|
|
6026
|
+
/*
|
|
6027
|
+
* FLUSH: the words start on the line. The padding and the 1px edge are taken
|
|
6028
|
+
* back at the start, so a ghost button drawn as a value starts on the line
|
|
6029
|
+
* the plain values in its column start on, and only the hover ground and the
|
|
6030
|
+
* ring reach past it, into the gutter before it. The START ONLY: taken back at
|
|
6031
|
+
* the end too, the box overran its cell's content edge, which a column that
|
|
6032
|
+
* measures what it cuts short reads as a value that does not fit. The ring is
|
|
6033
|
+
* drawn inside, so a container that clips (a table, a card) never cuts it.
|
|
6034
|
+
*
|
|
6035
|
+
* A CONTAINER WITH NO GUTTER TO GIVE sets `--crewlet-btn-flush-outdent` to 0:
|
|
6036
|
+
* a table's first column and its card rows (DataGrid.css), where the outdent
|
|
6037
|
+
* would pull the control toward the frame.
|
|
6038
|
+
*/
|
|
6039
|
+
.crewlet-btn--flush {
|
|
6040
|
+
margin-inline-start: var(--crewlet-btn-flush-outdent, calc(-1 * (var(--crewlet-btn-inset) + 1px)));
|
|
6041
|
+
}
|
|
6042
|
+
|
|
6043
|
+
.crewlet-btn--flush:focus-visible {
|
|
6044
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
6045
|
+
}
|
|
6046
|
+
|
|
5890
6047
|
.crewlet-btn--square {
|
|
5891
6048
|
border-radius: var(--radius-md);
|
|
5892
6049
|
}
|
|
@@ -12214,7 +12371,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
12214
12371
|
}
|
|
12215
12372
|
|
|
12216
12373
|
|
|
12217
|
-
/* DataGrid-
|
|
12374
|
+
/* DataGrid-Q26F2V5Q.css */
|
|
12218
12375
|
/*
|
|
12219
12376
|
* DataGrid: a list as columns, one track list on the grid.
|
|
12220
12377
|
*
|
|
@@ -12337,6 +12494,18 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
12337
12494
|
--crewlet-data-grid-cell-start: var(--spacing-3);
|
|
12338
12495
|
}
|
|
12339
12496
|
|
|
12497
|
+
/*
|
|
12498
|
+
* AND AN ICON COLUMN, whose track (`DATA_GRID_ICON_TRACK`) is the target size
|
|
12499
|
+
* and the cells' own step either side. At the grid's edge (a card's 16px) the
|
|
12500
|
+
* edge inset left 20px for a 24px mark; the column keeps the cells' step on
|
|
12501
|
+
* both sides wherever it stands, as the selection column does.
|
|
12502
|
+
*/
|
|
12503
|
+
.crewlet-data-grid__th.crewlet-data-grid__th--icon,
|
|
12504
|
+
.crewlet-data-grid__cell.crewlet-data-grid__cell--icon {
|
|
12505
|
+
--crewlet-data-grid-cell-start: var(--spacing-3);
|
|
12506
|
+
--crewlet-data-grid-cell-end: var(--spacing-3);
|
|
12507
|
+
}
|
|
12508
|
+
|
|
12340
12509
|
/*
|
|
12341
12510
|
* THE LIST TABLE'S HEAD: the micro-label register every table takes, 11/500
|
|
12342
12511
|
* uppercase. A sortable head is a button with its chrome reset; the reset
|
|
@@ -12344,6 +12513,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
12344
12513
|
*/
|
|
12345
12514
|
.crewlet-data-grid__th {
|
|
12346
12515
|
display: flex;
|
|
12516
|
+
align-self: stretch;
|
|
12347
12517
|
align-items: center;
|
|
12348
12518
|
gap: var(--spacing-1);
|
|
12349
12519
|
padding-block: var(--spacing-2);
|
|
@@ -12390,22 +12560,91 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
|
|
|
12390
12560
|
margin-inline: calc(-1 * var(--crewlet-data-grid-cell-start)) calc(-1 * var(--crewlet-data-grid-cell-end));
|
|
12391
12561
|
padding-block: var(--spacing-2);
|
|
12392
12562
|
padding-inline: var(--crewlet-data-grid-cell-start) var(--crewlet-data-grid-cell-end);
|
|
12563
|
+
/* THE HEAD'S WHOLE HEIGHT, so a press anywhere in the cell sorts. */
|
|
12564
|
+
align-self: stretch;
|
|
12393
12565
|
cursor: pointer;
|
|
12394
12566
|
}
|
|
12395
12567
|
|
|
12568
|
+
/*
|
|
12569
|
+
* ONE EDGE PER COLUMN, shared by its head and its values. `align` gives the
|
|
12570
|
+
* head and every cell the same modifier, and both take the same inline inset
|
|
12571
|
+
* (`--crewlet-data-grid-cell-start` and `-end`), so the word in the head and
|
|
12572
|
+
* the values under it start (or end, or centre) on one line. A head that
|
|
12573
|
+
* sorts is a button filling its head, and takes the same edge.
|
|
12574
|
+
*/
|
|
12396
12575
|
.crewlet-data-grid__th--right .crewlet-data-grid__sort {
|
|
12397
12576
|
justify-content: flex-end;
|
|
12398
12577
|
}
|
|
12399
12578
|
|
|
12579
|
+
.crewlet-data-grid__th--center .crewlet-data-grid__sort {
|
|
12580
|
+
justify-content: center;
|
|
12581
|
+
}
|
|
12582
|
+
|
|
12400
12583
|
.crewlet-data-grid__th:not(.crewlet-data-grid__th--plain):hover,
|
|
12401
12584
|
.crewlet-data-grid__th--sorted {
|
|
12402
12585
|
color: var(--color-text-primary);
|
|
12403
12586
|
}
|
|
12404
12587
|
|
|
12588
|
+
/*
|
|
12589
|
+
* A SORTABLE HEAD SAYS SO UNDER THE POINTER: the row's own hover overlay over
|
|
12590
|
+
* the whole cell, the way a row says it opens, so the target is the head and
|
|
12591
|
+
* not the word in it.
|
|
12592
|
+
*/
|
|
12593
|
+
.crewlet-data-grid__th:not(.crewlet-data-grid__th--plain):hover {
|
|
12594
|
+
background: var(--color-surface-hover);
|
|
12595
|
+
}
|
|
12596
|
+
|
|
12597
|
+
/*
|
|
12598
|
+
* THE SORT ARROW. Its box is always laid out, so a head never changes width
|
|
12599
|
+
* when the arrow appears and the fit measured at rest still holds under the
|
|
12600
|
+
* pointer. The two-way arrow of a head that is not the sort shows only on
|
|
12601
|
+
* hover and focus, in the head's own ink; the sorted head's arrow is always
|
|
12602
|
+
* shown, at full ink, and names the direction.
|
|
12603
|
+
*/
|
|
12604
|
+
.crewlet-data-grid__sort-mark {
|
|
12605
|
+
display: inline-flex;
|
|
12606
|
+
flex: none;
|
|
12607
|
+
inline-size: var(--spacing-3);
|
|
12608
|
+
color: inherit;
|
|
12609
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
12610
|
+
}
|
|
12611
|
+
|
|
12612
|
+
.crewlet-data-grid__th:not(.crewlet-data-grid__th--sorted) .crewlet-data-grid__sort-mark {
|
|
12613
|
+
opacity: 0;
|
|
12614
|
+
}
|
|
12615
|
+
|
|
12616
|
+
/* BEFORE THE WORD IN A RIGHT-ALIGNED COLUMN, so the word stays on the column's
|
|
12617
|
+
right edge over its figures, arrow or not. */
|
|
12618
|
+
.crewlet-data-grid__th--right .crewlet-data-grid__sort-mark {
|
|
12619
|
+
order: -1;
|
|
12620
|
+
}
|
|
12621
|
+
|
|
12622
|
+
/*
|
|
12623
|
+
* AND MIRRORED IN A CENTRED COLUMN: a box the arrow's size before the word, a
|
|
12624
|
+
* gap away, so the word stands on the column's middle over its values rather
|
|
12625
|
+
* than half an arrow off it. ONLY BEFORE A WORD: a head with none (a sortable
|
|
12626
|
+
* mark column) draws its arrow alone, already on the middle, and the reserve
|
|
12627
|
+
* would push it off.
|
|
12628
|
+
*/
|
|
12629
|
+
.crewlet-data-grid__th--center .crewlet-data-grid__sort:has(> .crewlet-data-grid__truncate)::before {
|
|
12630
|
+
content: '';
|
|
12631
|
+
flex: none;
|
|
12632
|
+
inline-size: var(--spacing-3);
|
|
12633
|
+
}
|
|
12634
|
+
|
|
12635
|
+
.crewlet-data-grid__th:hover .crewlet-data-grid__sort-mark,
|
|
12636
|
+
.crewlet-data-grid__sort:focus-visible .crewlet-data-grid__sort-mark {
|
|
12637
|
+
opacity: 1;
|
|
12638
|
+
}
|
|
12639
|
+
|
|
12405
12640
|
.crewlet-data-grid__th--right {
|
|
12406
12641
|
justify-content: flex-end;
|
|
12407
12642
|
}
|
|
12408
12643
|
|
|
12644
|
+
.crewlet-data-grid__th--center {
|
|
12645
|
+
justify-content: center;
|
|
12646
|
+
}
|
|
12647
|
+
|
|
12409
12648
|
.crewlet-data-grid__sort:focus-visible,
|
|
12410
12649
|
.crewlet-data-grid__cols-reset:focus-visible {
|
|
12411
12650
|
outline: 2px solid var(--color-focus);
|
|
@@ -12512,23 +12751,30 @@ button.crewlet-data-grid__row-link {
|
|
|
12512
12751
|
* A GHOST CONTROL STARTS ON THE COLUMN'S TEXT EDGE. A small ghost button that
|
|
12513
12752
|
* opens a cell ("Open ENG-12", a choice made in place through a menu) drew its
|
|
12514
12753
|
* word one padding and one edge (9px) inside the line its column starts on.
|
|
12515
|
-
*
|
|
12516
|
-
*
|
|
12517
|
-
*
|
|
12518
|
-
*
|
|
12519
|
-
*
|
|
12520
|
-
*
|
|
12521
|
-
*
|
|
12522
|
-
* the
|
|
12523
|
-
*
|
|
12524
|
-
*
|
|
12525
|
-
|
|
12526
|
-
|
|
12527
|
-
|
|
12528
|
-
|
|
12529
|
-
|
|
12530
|
-
|
|
12531
|
-
|
|
12754
|
+
* ONE MECHANISM, Button's `flush`: a flush control anywhere in a cell takes
|
|
12755
|
+
* its padding and edge back, and a ghost control written straight into a cell
|
|
12756
|
+
* (or as a menu's trigger there) is drawn flush without being asked, by the
|
|
12757
|
+
* same declaration. The word sits on the line and only the hover's ground
|
|
12758
|
+
* reaches past it, into the step between two columns.
|
|
12759
|
+
*
|
|
12760
|
+
* THE EXEMPTIONS ARE ONE VARIABLE, `--crewlet-btn-flush-outdent: 0`, which
|
|
12761
|
+
* the flush declaration reads:
|
|
12762
|
+
*
|
|
12763
|
+
* - THE GRID'S OWN EDGE, its first column and every line of a phone's card
|
|
12764
|
+
* (below). A grid standing alone has only its 12px edge there, and with the
|
|
12765
|
+
* 9px taken back the control's focus ring ran past the grid's clip and the
|
|
12766
|
+
* hover ground stood 3px from the frame.
|
|
12767
|
+
* - A RIGHT OR A CENTRED COLUMN, which lines its values up by their end or
|
|
12768
|
+
* their middle, where a control taken back at its start would stand off
|
|
12769
|
+
* both.
|
|
12770
|
+
*/
|
|
12771
|
+
.crewlet-data-grid__cell > .crewlet-btn--ghost.crewlet-btn--small:first-child,
|
|
12772
|
+
.crewlet-data-grid__cell > .crewlet-menu-anchor:first-child > .crewlet-btn--ghost.crewlet-btn--small {
|
|
12773
|
+
margin-inline-start: var(--crewlet-btn-flush-outdent, calc(-1 * (var(--crewlet-btn-inset) + 1px)));
|
|
12774
|
+
}
|
|
12775
|
+
|
|
12776
|
+
.crewlet-data-grid__cell:is(:first-child, .crewlet-data-grid__cell--right, .crewlet-data-grid__cell--center) {
|
|
12777
|
+
--crewlet-btn-flush-outdent: 0px;
|
|
12532
12778
|
}
|
|
12533
12779
|
|
|
12534
12780
|
/*
|
|
@@ -12542,10 +12788,18 @@ button.crewlet-data-grid__row-link {
|
|
|
12542
12788
|
overflow: clip;
|
|
12543
12789
|
}
|
|
12544
12790
|
|
|
12791
|
+
/* A RIGHT-ALIGNED COLUMN holds figures, times and dates: tabular digits, so
|
|
12792
|
+
"53s ago" and "12h ago" end on one edge and their digits stand in columns. */
|
|
12545
12793
|
.crewlet-data-grid__cell--right {
|
|
12546
12794
|
justify-content: flex-end;
|
|
12795
|
+
font-variant-numeric: tabular-nums;
|
|
12796
|
+
}
|
|
12797
|
+
|
|
12798
|
+
.crewlet-data-grid__cell--center {
|
|
12799
|
+
justify-content: center;
|
|
12547
12800
|
}
|
|
12548
12801
|
|
|
12802
|
+
|
|
12549
12803
|
.crewlet-data-grid__truncate {
|
|
12550
12804
|
min-width: 0;
|
|
12551
12805
|
overflow: hidden;
|
|
@@ -12618,14 +12872,25 @@ button.crewlet-data-grid__row-link {
|
|
|
12618
12872
|
color: var(--color-text-primary);
|
|
12619
12873
|
}
|
|
12620
12874
|
|
|
12875
|
+
/*
|
|
12876
|
+
* THE FOOT IS A CAPTION, NOT A ROW. At the row's height and on the head's
|
|
12877
|
+
* raised ground it read as one more row, so a grid's head, rows and foot
|
|
12878
|
+
* blurred into one stack. It takes the micro step of type, the tertiary ink,
|
|
12879
|
+
* half the row's inset and the grid's own ground under the rows' hairline:
|
|
12880
|
+
* quieter than either neighbour, and plainly the end of the list.
|
|
12881
|
+
*/
|
|
12621
12882
|
.crewlet-data-grid__foot {
|
|
12622
12883
|
display: flex;
|
|
12623
12884
|
align-items: center;
|
|
12624
|
-
|
|
12625
|
-
|
|
12626
|
-
|
|
12627
|
-
|
|
12628
|
-
|
|
12885
|
+
flex-wrap: wrap;
|
|
12886
|
+
gap: var(--spacing-1) var(--spacing-3);
|
|
12887
|
+
min-height: var(--size-control-sm);
|
|
12888
|
+
padding: var(--spacing-1) var(--crewlet-data-grid-edge);
|
|
12889
|
+
border-top: 1px solid var(--color-border-default);
|
|
12890
|
+
background: transparent;
|
|
12891
|
+
color: var(--color-text-tertiary);
|
|
12892
|
+
font-size: var(--font-size-2xs);
|
|
12893
|
+
line-height: var(--font-line-height-tight);
|
|
12629
12894
|
}
|
|
12630
12895
|
|
|
12631
12896
|
.crewlet-data-grid__foot-spacer {
|
|
@@ -12633,7 +12898,7 @@ button.crewlet-data-grid__row-link {
|
|
|
12633
12898
|
}
|
|
12634
12899
|
|
|
12635
12900
|
.crewlet-data-grid__note {
|
|
12636
|
-
font-size:
|
|
12901
|
+
font-size: inherit;
|
|
12637
12902
|
color: var(--color-text-tertiary);
|
|
12638
12903
|
}
|
|
12639
12904
|
|
|
@@ -12677,9 +12942,21 @@ button.crewlet-data-grid__row-link {
|
|
|
12677
12942
|
cursor: pointer;
|
|
12678
12943
|
}
|
|
12679
12944
|
|
|
12945
|
+
/*
|
|
12946
|
+
* WHERE NOTHING HOVERS (a touch screen), a sortable head shows its arrow at
|
|
12947
|
+
* rest: there is no pointer to bring it out, and a head that only says it
|
|
12948
|
+
* sorts under a pointer says nothing there.
|
|
12949
|
+
*/
|
|
12950
|
+
@media (hover: none) {
|
|
12951
|
+
.crewlet-data-grid__th:not(.crewlet-data-grid__th--plain) .crewlet-data-grid__sort-mark {
|
|
12952
|
+
opacity: 1;
|
|
12953
|
+
}
|
|
12954
|
+
}
|
|
12955
|
+
|
|
12680
12956
|
@media (prefers-reduced-motion: reduce) {
|
|
12681
12957
|
.crewlet-data-grid__th,
|
|
12682
|
-
.crewlet-data-grid__row
|
|
12958
|
+
.crewlet-data-grid__row,
|
|
12959
|
+
.crewlet-data-grid__sort-mark {
|
|
12683
12960
|
transition: none;
|
|
12684
12961
|
}
|
|
12685
12962
|
}
|
|
@@ -12703,7 +12980,7 @@ button.crewlet-data-grid__row-link {
|
|
|
12703
12980
|
/* No ghost control is pulled out here (see above): every line of a card
|
|
12704
12981
|
starts at the grid's edge, and a compact row's marks run on one line,
|
|
12705
12982
|
where the hover ground swallowed the gap before it. */
|
|
12706
|
-
--crewlet-
|
|
12983
|
+
--crewlet-btn-flush-outdent: 0px;
|
|
12707
12984
|
|
|
12708
12985
|
display: block;
|
|
12709
12986
|
}
|
|
@@ -12749,7 +13026,8 @@ button.crewlet-data-grid__row-link {
|
|
|
12749
13026
|
|
|
12750
13027
|
/* `shrink` and `right` are column shapes, and there are no columns here. */
|
|
12751
13028
|
:where(.crewlet-data-grid[data-stacked]) .crewlet-data-grid__cell--shrink,
|
|
12752
|
-
:where(.crewlet-data-grid[data-stacked]) .crewlet-data-grid__cell--right
|
|
13029
|
+
:where(.crewlet-data-grid[data-stacked]) .crewlet-data-grid__cell--right,
|
|
13030
|
+
:where(.crewlet-data-grid[data-stacked]) .crewlet-data-grid__cell--center {
|
|
12753
13031
|
white-space: normal;
|
|
12754
13032
|
justify-content: flex-start;
|
|
12755
13033
|
}
|
|
@@ -15089,7 +15367,7 @@ body.crewlet-data-table-resizing {
|
|
|
15089
15367
|
}
|
|
15090
15368
|
|
|
15091
15369
|
|
|
15092
|
-
/* DataView-
|
|
15370
|
+
/* DataView-L7HLNW7C.css */
|
|
15093
15371
|
/*
|
|
15094
15372
|
* The list screen: header, toolbar, filter chips, table.
|
|
15095
15373
|
*
|
|
@@ -15312,118 +15590,7 @@ body.crewlet-data-table-resizing {
|
|
|
15312
15590
|
|
|
15313
15591
|
/* ── One chip ─────────────────────────────────────────────────────────── */
|
|
15314
15592
|
|
|
15315
|
-
/*
|
|
15316
|
-
* TWO CONTROLS IN ONE PILL: pressing the chip opens its editor, pressing the
|
|
15317
|
-
* cross takes the filter off. They are drawn as one object with a divider
|
|
15318
|
-
* because they are one filter, and they are two BUTTONS because they do two
|
|
15319
|
-
* different things, which is also why the cross carries its own name rather
|
|
15320
|
-
* than relying on the chip's.
|
|
15321
|
-
*/
|
|
15322
|
-
.crewlet-filter-axis-chip {
|
|
15323
|
-
display: inline-flex;
|
|
15324
|
-
align-items: stretch;
|
|
15325
|
-
height: var(--size-control-sm);
|
|
15326
|
-
background: var(--color-brand-accent-soft);
|
|
15327
|
-
border: 1px solid var(--color-brand-accent-soft-strong);
|
|
15328
|
-
border-radius: var(--radius-pill);
|
|
15329
|
-
overflow: hidden;
|
|
15330
|
-
max-width: 100%;
|
|
15331
|
-
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
15332
|
-
}
|
|
15333
|
-
|
|
15334
|
-
/*
|
|
15335
|
-
* THE EDGE, NOT THE FILL. `--color-surface-hover` is the overlay a row at rest
|
|
15336
|
-
* carries, and the token says a surface shows it OR a selected tint, never
|
|
15337
|
-
* both: put on a chip it REPLACED the accent fill, so the one control on screen
|
|
15338
|
-
* that means "this filter is on" went pale under the pointer and read as the
|
|
15339
|
-
* filter being switched off.
|
|
15340
|
-
*
|
|
15341
|
-
* The fill stays where it is and the boundary takes the accent itself.
|
|
15342
|
-
* Deepening the fill to the next accent step instead measures 4.48:1 under the
|
|
15343
|
-
* chip's own ink on the light ground, and 4.18:1 on a card, which is why that
|
|
15344
|
-
* step is a BORDER value in the palette and is used as one here.
|
|
15345
|
-
*/
|
|
15346
|
-
.crewlet-filter-axis-chip:hover {
|
|
15347
|
-
border-color: var(--color-brand-accent);
|
|
15348
|
-
}
|
|
15349
|
-
|
|
15350
|
-
.crewlet-filter-axis-chip__trigger {
|
|
15351
|
-
display: inline-flex;
|
|
15352
|
-
align-items: center;
|
|
15353
|
-
gap: var(--spacing-1);
|
|
15354
|
-
min-width: 0;
|
|
15355
|
-
padding: 0 var(--spacing-2) 0 var(--spacing-3);
|
|
15356
|
-
background: transparent;
|
|
15357
|
-
border: none;
|
|
15358
|
-
cursor: pointer;
|
|
15359
|
-
color: var(--color-brand-accent-ink);
|
|
15360
|
-
font-family: var(--font-family-sans);
|
|
15361
|
-
font-size: var(--font-size-xs);
|
|
15362
|
-
line-height: 1;
|
|
15363
|
-
}
|
|
15364
|
-
|
|
15365
|
-
.crewlet-filter-axis-chip__trigger:focus-visible {
|
|
15366
|
-
outline: 2px solid var(--color-focus);
|
|
15367
|
-
outline-offset: var(--size-focus-ring-inset-offset);
|
|
15368
|
-
}
|
|
15369
|
-
|
|
15370
|
-
/*
|
|
15371
|
-
* THE AXIS NAME IS NOT DIMMED. It read at 0.85 opacity, which takes the chip's
|
|
15372
|
-
* own ink off the step the pairing was measured at, and the name of the axis
|
|
15373
|
-
* is exactly what a reader checks before the value: "status" and "stage" narrow
|
|
15374
|
-
* a list to very different things. The value's own weight is what separates
|
|
15375
|
-
* the halves, which is a difference a reader can see at any contrast.
|
|
15376
|
-
*/
|
|
15377
|
-
.crewlet-filter-axis-chip__label {
|
|
15378
|
-
white-space: nowrap;
|
|
15379
|
-
}
|
|
15380
|
-
|
|
15381
|
-
.crewlet-filter-axis-chip__value {
|
|
15382
|
-
font-weight: var(--font-weight-semibold);
|
|
15383
|
-
overflow: hidden;
|
|
15384
|
-
text-overflow: ellipsis;
|
|
15385
|
-
white-space: nowrap;
|
|
15386
|
-
}
|
|
15387
|
-
|
|
15388
|
-
/*
|
|
15389
|
-
* The chevron carries the chip's own ink rather than a fainter version of it,
|
|
15390
|
-
* for the reason every mark beside its words does: a grey glyph next to
|
|
15391
|
-
* coloured text reads as two things. At 0.7 it measured 3.00:1 on a card in
|
|
15392
|
-
* light, which is the 3:1 floor for a glyph to the second decimal place.
|
|
15393
|
-
*/
|
|
15394
|
-
.crewlet-filter-axis-chip__chevron {
|
|
15395
|
-
flex: none;
|
|
15396
|
-
}
|
|
15397
|
-
|
|
15398
|
-
/*
|
|
15399
|
-
* The remove control keeps the chip's own ink rather than taking the critical
|
|
15400
|
-
* hue on hover: removing a filter destroys nothing, and a row of chips that
|
|
15401
|
-
* turns red under the pointer reads as a row of dangerous things.
|
|
15402
|
-
*/
|
|
15403
|
-
.crewlet-filter-axis-chip__remove {
|
|
15404
|
-
/* AS TALL AS THE PILL'S INSIDE, as the trigger beside it is. At the small
|
|
15405
|
-
control's own height it stood 2px past the pill's inner edge, cut off at
|
|
15406
|
-
the bottom, and its cross sat 1px under the chip's middle. */
|
|
15407
|
-
height: auto;
|
|
15408
|
-
border-radius: 0;
|
|
15409
|
-
border-left: 1px solid var(--color-brand-accent-soft-strong);
|
|
15410
|
-
color: var(--color-brand-accent-ink);
|
|
15411
|
-
}
|
|
15412
|
-
|
|
15413
|
-
/*
|
|
15414
|
-
* Its ring is drawn INSIDE it, like the trigger's beside it. The pill clips to
|
|
15415
|
-
* its own radius, so the outset ring an icon button carries everywhere else is
|
|
15416
|
-
* cut off on every edge the control touches, which here is all of them.
|
|
15417
|
-
*/
|
|
15418
|
-
.crewlet-filter-axis-chip__remove:focus-visible {
|
|
15419
|
-
outline-offset: var(--size-focus-ring-inset-offset);
|
|
15420
|
-
}
|
|
15421
|
-
|
|
15422
|
-
@media (prefers-reduced-motion: reduce) {
|
|
15423
|
-
.crewlet-filter-axis-chip {
|
|
15424
|
-
transition: none;
|
|
15425
|
-
}
|
|
15426
|
-
}
|
|
15593
|
+
/* A chip is a [FilterPill] (FilterPill.css) whose words open its editor. */
|
|
15427
15594
|
|
|
15428
15595
|
/* ── A chip's editor ──────────────────────────────────────────────────── */
|
|
15429
15596
|
|
|
@@ -18370,6 +18537,143 @@ svg.crewlet-datetime__chevron {
|
|
|
18370
18537
|
}
|
|
18371
18538
|
|
|
18372
18539
|
|
|
18540
|
+
/* FilterPill-4GMNFZND.css */
|
|
18541
|
+
/*
|
|
18542
|
+
* The filter pill: one filter in force, as a sentence on the accent ground.
|
|
18543
|
+
*
|
|
18544
|
+
* TWO CONTROLS IN ONE PILL where the words open an editor: pressing the words
|
|
18545
|
+
* opens it, pressing the cross takes the filter off. They are drawn as one
|
|
18546
|
+
* object with a divider because they are one filter, and they are two BUTTONS
|
|
18547
|
+
* because they do two different things, which is also why the cross carries
|
|
18548
|
+
* its own name rather than relying on the words'.
|
|
18549
|
+
*/
|
|
18550
|
+
.crewlet-filter-pill {
|
|
18551
|
+
display: inline-flex;
|
|
18552
|
+
align-items: stretch;
|
|
18553
|
+
height: var(--size-control-sm);
|
|
18554
|
+
max-width: 100%;
|
|
18555
|
+
min-width: 0;
|
|
18556
|
+
background: var(--color-brand-accent-soft);
|
|
18557
|
+
border: 1px solid var(--color-brand-accent-soft-strong);
|
|
18558
|
+
border-radius: var(--radius-pill);
|
|
18559
|
+
overflow: hidden;
|
|
18560
|
+
box-sizing: border-box;
|
|
18561
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
18562
|
+
}
|
|
18563
|
+
|
|
18564
|
+
/*
|
|
18565
|
+
* THE EDGE, NOT THE FILL, under the pointer. The surface hover overlay put on
|
|
18566
|
+
* the pill REPLACED the accent fill, so the one control on screen that means
|
|
18567
|
+
* "this filter is on" went pale and read as the filter being switched off.
|
|
18568
|
+
* The fill stays and the boundary takes the accent itself: the next fill step
|
|
18569
|
+
* measures under 4.5:1 beneath the pill's own ink, which is why that step is a
|
|
18570
|
+
* border value in the palette and is used as one here.
|
|
18571
|
+
*/
|
|
18572
|
+
.crewlet-filter-pill:hover {
|
|
18573
|
+
border-color: var(--color-brand-accent);
|
|
18574
|
+
}
|
|
18575
|
+
|
|
18576
|
+
/*
|
|
18577
|
+
* THE WORDS: one line, the parts a step apart. The gap draws the space; the
|
|
18578
|
+
* space characters between the parts are still in the text, which is what a
|
|
18579
|
+
* copy and a screen reader take, but a flex row does not draw them, so the
|
|
18580
|
+
* step is the one spacing. A long value ends in an ellipsis at the pill's
|
|
18581
|
+
* edge. Plain text, or the control `renderWords` makes, which gives up a
|
|
18582
|
+
* button's chrome and keeps the same line.
|
|
18583
|
+
*/
|
|
18584
|
+
.crewlet-filter-pill__words {
|
|
18585
|
+
display: inline-flex;
|
|
18586
|
+
align-items: center;
|
|
18587
|
+
gap: var(--spacing-1);
|
|
18588
|
+
min-width: 0;
|
|
18589
|
+
margin: 0;
|
|
18590
|
+
padding: 0 var(--spacing-3);
|
|
18591
|
+
background: transparent;
|
|
18592
|
+
border: 0;
|
|
18593
|
+
color: var(--color-text-secondary);
|
|
18594
|
+
font-family: var(--font-family-sans);
|
|
18595
|
+
font-size: var(--font-size-xs);
|
|
18596
|
+
font-weight: var(--font-weight-regular);
|
|
18597
|
+
line-height: 1;
|
|
18598
|
+
white-space: nowrap;
|
|
18599
|
+
}
|
|
18600
|
+
|
|
18601
|
+
/* A pill with a remove control gives the words' trailing inset to the divider. */
|
|
18602
|
+
.crewlet-filter-pill:has(> .crewlet-filter-pill__remove) > .crewlet-filter-pill__words {
|
|
18603
|
+
padding-inline-end: var(--spacing-2);
|
|
18604
|
+
}
|
|
18605
|
+
|
|
18606
|
+
button.crewlet-filter-pill__words {
|
|
18607
|
+
cursor: pointer;
|
|
18608
|
+
}
|
|
18609
|
+
|
|
18610
|
+
.crewlet-filter-pill__words:focus-visible {
|
|
18611
|
+
outline: 2px solid var(--color-focus);
|
|
18612
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
18613
|
+
}
|
|
18614
|
+
|
|
18615
|
+
/*
|
|
18616
|
+
* THREE REGISTERS. The field and the relation are what the filter is ABOUT,
|
|
18617
|
+
* in the secondary ink at the regular weight; the value is the answer, in the
|
|
18618
|
+
* accent ink at the semibold weight, and the only part a long filter cuts.
|
|
18619
|
+
*/
|
|
18620
|
+
.crewlet-filter-pill__field,
|
|
18621
|
+
.crewlet-filter-pill__operator {
|
|
18622
|
+
flex: none;
|
|
18623
|
+
color: var(--color-text-secondary);
|
|
18624
|
+
}
|
|
18625
|
+
|
|
18626
|
+
.crewlet-filter-pill__value {
|
|
18627
|
+
min-width: 0;
|
|
18628
|
+
overflow: hidden;
|
|
18629
|
+
text-overflow: ellipsis;
|
|
18630
|
+
color: var(--color-brand-accent-ink);
|
|
18631
|
+
font-weight: var(--font-weight-semibold);
|
|
18632
|
+
}
|
|
18633
|
+
|
|
18634
|
+
/*
|
|
18635
|
+
* A glyph after the words (a popover's chevron) carries the value's ink: a
|
|
18636
|
+
* grey glyph next to coloured text reads as two things.
|
|
18637
|
+
*/
|
|
18638
|
+
.crewlet-filter-pill__words > svg {
|
|
18639
|
+
flex: none;
|
|
18640
|
+
color: var(--color-brand-accent-ink);
|
|
18641
|
+
}
|
|
18642
|
+
|
|
18643
|
+
/*
|
|
18644
|
+
* The remove control: as tall as the pill's inside, behind a hairline, in the
|
|
18645
|
+
* pill's own ink. At the small control's own height it stood past the pill's
|
|
18646
|
+
* inner edge and was cut off at the bottom.
|
|
18647
|
+
*
|
|
18648
|
+
* RAISED OVER ICONBUTTON'S OWN RULES (`.crewlet-icon-btn`, `--sm`), which
|
|
18649
|
+
* carry the same weight as one class and can load after this sheet in a
|
|
18650
|
+
* bundle: at equal weight the control kept its 26px height and its corner
|
|
18651
|
+
* radius in a 26px pill with a 1px edge, overran the pill by a pixel and lost
|
|
18652
|
+
* the bottom of its focus ring. The child combinator is the extra weight, and
|
|
18653
|
+
* a test holds it above every IconButton rule.
|
|
18654
|
+
*/
|
|
18655
|
+
.crewlet-filter-pill > .crewlet-filter-pill__remove {
|
|
18656
|
+
height: auto;
|
|
18657
|
+
border-radius: 0;
|
|
18658
|
+
border-inline-start: 1px solid var(--color-brand-accent-soft-strong);
|
|
18659
|
+
color: var(--color-brand-accent-ink);
|
|
18660
|
+
}
|
|
18661
|
+
|
|
18662
|
+
/*
|
|
18663
|
+
* Its ring is drawn INSIDE it, like the words'. The pill clips to its own
|
|
18664
|
+
* radius, so an outset ring is cut off on every edge the control touches.
|
|
18665
|
+
*/
|
|
18666
|
+
.crewlet-filter-pill > .crewlet-filter-pill__remove:focus-visible {
|
|
18667
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
18668
|
+
}
|
|
18669
|
+
|
|
18670
|
+
@media (prefers-reduced-motion: reduce) {
|
|
18671
|
+
.crewlet-filter-pill {
|
|
18672
|
+
transition: none;
|
|
18673
|
+
}
|
|
18674
|
+
}
|
|
18675
|
+
|
|
18676
|
+
|
|
18373
18677
|
/* FindingList-MPLA2ZTO.css */
|
|
18374
18678
|
/*
|
|
18375
18679
|
* What a checker found: a quiet list, one row each, the tone's glyph in its
|
|
@@ -23011,7 +23315,7 @@ a.crewlet-icon-btn {
|
|
|
23011
23315
|
}
|
|
23012
23316
|
|
|
23013
23317
|
|
|
23014
|
-
/* Menu-
|
|
23318
|
+
/* Menu-I4SNXHOT.css */
|
|
23015
23319
|
/*
|
|
23016
23320
|
* The menu button's panel.
|
|
23017
23321
|
*
|
|
@@ -23301,6 +23605,18 @@ a.crewlet-icon-btn {
|
|
|
23301
23605
|
}
|
|
23302
23606
|
}
|
|
23303
23607
|
|
|
23608
|
+
/*
|
|
23609
|
+
* A TRIGGER THAT IS THE VALUE it changes (`valueTrigger`): the surrounding
|
|
23610
|
+
* text's size, weight and ink, not a button label's, so a writer's row reads
|
|
23611
|
+
* as a reader's. Its start is Button's `flush`. Raised over the button's own
|
|
23612
|
+
* size and variant rules, which carry one class each.
|
|
23613
|
+
*/
|
|
23614
|
+
.crewlet-menu-anchor > .crewlet-btn.crewlet-menu__value-trigger {
|
|
23615
|
+
font-size: inherit;
|
|
23616
|
+
font-weight: inherit;
|
|
23617
|
+
color: inherit;
|
|
23618
|
+
}
|
|
23619
|
+
|
|
23304
23620
|
|
|
23305
23621
|
/* MergeConflicts-HCXPRQVR.css */
|
|
23306
23622
|
/* MergeConflicts: each clash as the other side's lines beside the draft's,
|
|
@@ -36220,7 +36536,7 @@ b.crewlet-switcher__match {
|
|
|
36220
36536
|
}
|
|
36221
36537
|
|
|
36222
36538
|
|
|
36223
|
-
/* TableCells-
|
|
36539
|
+
/* TableCells-TKSNLRK3.css */
|
|
36224
36540
|
/* The read-only table cells. Each one holds a single line and shrinks inside
|
|
36225
36541
|
its column (`min-width: 0`), so a long value is cut with an ellipsis and
|
|
36226
36542
|
its whole text on the title rather than standing the row two lines tall. */
|
|
@@ -36254,6 +36570,7 @@ b.crewlet-switcher__match {
|
|
|
36254
36570
|
.crewlet-table-cell__date {
|
|
36255
36571
|
color: var(--color-text-tertiary);
|
|
36256
36572
|
white-space: nowrap;
|
|
36573
|
+
font-variant-numeric: tabular-nums;
|
|
36257
36574
|
}
|
|
36258
36575
|
|
|
36259
36576
|
/*
|