@crewlethq/ui 0.35.0 → 0.36.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 +77 -0
- package/dist/AgentHandoffPanel/AgentHandoffPanel.d.ts +99 -0
- package/dist/AgentHandoffPanel/index.d.ts +3 -0
- package/dist/AgentHandoffPanel/index.js +16 -0
- package/dist/AgentHandoffPanel-JWSW62GU.css +151 -0
- package/dist/ArrangeFrame/index.js +1 -1
- package/dist/{ArrangeFrame-3PLZAG22.css → ArrangeFrame-QXOQTFAH.css} +22 -5
- package/dist/ArrangeList/index.js +4 -3
- package/dist/ArtifactBar/ArtifactBar.d.ts +2 -1
- package/dist/ArtifactBar/index.js +2 -2
- package/dist/{ArtifactBar-HV5AT4RG.css → ArtifactBar-FWPBBKQ5.css} +8 -0
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/ArtifactCover/index.js +3 -2
- package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +16 -7
- package/dist/ArtifactKindIllustration/index.js +1 -1
- package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-5KTP43QS.css} +36 -0
- package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +39 -0
- package/dist/ArtifactMakeRow/index.d.ts +4 -0
- package/dist/ArtifactMakeRow/index.js +4 -0
- package/dist/ArtifactMakeRow-RWUTS5MC.css +167 -0
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +8 -1
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/{ArtifactPanel-HW3SU7CP.css → ArtifactPanel-KKUUIPEU.css} +9 -0
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +2 -2
- package/dist/Canvas/index.js +2 -2
- package/dist/CanvasBoard/CanvasBoard.d.ts +27 -13
- package/dist/CanvasBoard/index.d.ts +1 -1
- package/dist/CanvasBoard/index.js +4 -4
- package/dist/{CanvasBoard-5NNSKY6A.css → CanvasBoard-TS4P356F.css} +13 -6
- package/dist/CanvasToolbar/index.js +3 -3
- package/dist/Card/index.js +1 -1
- package/dist/{Card-KJOYHDTJ.css → Card-QOVASQNU.css} +17 -12
- package/dist/ChangeMark/index.js +2 -2
- package/dist/Checkbox/index.js +3 -2
- package/dist/ChoiceButtons/index.js +1 -1
- package/dist/{ChoiceButtons-DJ5EOGUA.css → ChoiceButtons-FLIFXFFS.css} +10 -0
- package/dist/ChoiceList/index.js +1 -1
- package/dist/{ChoiceList-RBL7FNQL.css → ChoiceList-EA2W6MOS.css} +36 -5
- package/dist/Combobox/index.js +3 -2
- package/dist/CommandPalette/index.js +3 -2
- package/dist/CommentThread/index.js +6 -5
- package/dist/Composer/Composer.d.ts +4 -0
- package/dist/Composer/index.js +3 -2
- package/dist/{Composer-ABGJIAIR.css → Composer-PXITWNEK.css} +26 -15
- package/dist/ConfirmField/index.js +3 -2
- package/dist/DataTable/index.js +5 -4
- package/dist/DataView/index.js +9 -8
- package/dist/DatasetSource/DatasetSource.d.ts +4 -0
- package/dist/DatasetSource/index.js +1 -1
- package/dist/{DatasetSource-XFPZBRXL.css → DatasetSource-SMGX4PS5.css} +38 -4
- package/dist/DateTimePicker/index.js +2 -1
- package/dist/{DateTimePicker-HG2KQXQ6.css → DateTimePicker-2IVTKFV2.css} +15 -2
- package/dist/DocTabsEditor/index.js +4 -3
- package/dist/Document/Document.d.ts +15 -3
- package/dist/Document/index.js +2 -1
- package/dist/{Document-JUGCSQ4L.css → Document-YFWTWXJP.css} +34 -2
- package/dist/{Editor-BVQHBF7L.js → Editor-HORWMUM3.js} +2 -1
- package/dist/FilterChip/index.js +1 -1
- package/dist/{FilterChip-EZ4QMW4E.css → FilterChip-VL33P3JL.css} +5 -1
- package/dist/Input/index.js +2 -1
- package/dist/{Input-GBZSFXLU.css → Input-ABGOFENS.css} +46 -10
- package/dist/LayersList/index.js +1 -1
- package/dist/{LayersList-NQZEIPZB.css → LayersList-TBNF4XGL.css} +16 -3
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/ListInput/index.js +4 -3
- package/dist/LivePreview/LivePreview.d.ts +105 -25
- package/dist/LivePreview/budget.d.ts +64 -20
- package/dist/LivePreview/index.d.ts +5 -3
- package/dist/LivePreview/index.js +1 -1
- package/dist/LivePreview/stills.d.ts +57 -0
- package/dist/LivePreview-BROGKR4N.css +113 -0
- package/dist/PresenterView/index.js +2 -2
- package/dist/PrincipalPicker/index.js +4 -3
- package/dist/RichEditor/index.js +1 -1
- package/dist/Select/index.js +2 -1
- package/dist/{Select-A54YS5EP.css → Select-W3CHTZXP.css} +18 -2
- package/dist/ShareDialog/index.js +5 -4
- package/dist/SheetColumnEditor/index.js +7 -6
- package/dist/SheetGrid/index.js +6 -6
- package/dist/SheetModel/columns.d.ts +19 -0
- package/dist/SheetModel/index.d.ts +1 -0
- package/dist/SheetModel/index.js +1 -1
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +3 -3
- package/dist/{SlideFilmstrip-4ITZLMO4.css → SlideFilmstrip-PAT7P4OG.css} +26 -7
- package/dist/SlideGrid/index.js +2 -2
- package/dist/{SlideGrid-S4LTJ4UU.css → SlideGrid-FJA33DV4.css} +11 -1
- package/dist/SlideStage/index.js +1 -1
- package/dist/{SlideStage-S2FISF4C.css → SlideStage-ZTTEQSS2.css} +4 -2
- package/dist/SourceEditor/index.js +2 -1
- package/dist/{SourceEditor-G2C3STPX.css → SourceEditor-QAYE2JS6.css} +19 -12
- package/dist/Switcher/index.js +5 -4
- package/dist/TagsInput/index.js +3 -2
- package/dist/{TagsInput-XMXTI5Q4.css → TagsInput-7EGBBXHS.css} +7 -1
- package/dist/ThemeGallery/index.js +1 -1
- package/dist/{ThemeGallery-HSUKBDWY.css → ThemeGallery-X35Y25EX.css} +26 -5
- package/dist/TimeWindowPicker/index.js +4 -3
- package/dist/{TimeWindowPicker-T763GLXH.css → TimeWindowPicker-DEFDV77Z.css} +15 -2
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/{chunk-V43UVX4H.js → chunk-27GD7LVR.js} +1 -1
- package/dist/{chunk-CCLNGVCM.js → chunk-2DV4THNQ.js} +2 -2
- package/dist/{chunk-2CQLNML5.js → chunk-3PTUDKSR.js} +4 -2
- package/dist/{chunk-ONL54WMH.js → chunk-46RL3E54.js} +1 -1
- package/dist/{chunk-HAKTRTRP.js → chunk-47JQAGRV.js} +1 -1
- package/dist/{chunk-UHJQDFKQ.js → chunk-4ZJLOKSS.js} +1 -1
- package/dist/{chunk-ACA27MZH.js → chunk-5QXRI35B.js} +1 -1
- package/dist/{chunk-LL5AFXU7.js → chunk-5RT5O4JR.js} +1 -1
- package/dist/chunk-66ADEPFB.js +51 -0
- package/dist/{chunk-3Y56GQPM.js → chunk-7VAUGG6B.js} +1 -1
- package/dist/{chunk-NKZCJRKO.js → chunk-APDKUGSH.js} +2 -2
- package/dist/{chunk-YSJC7AZC.js → chunk-BWOIUOO3.js} +1 -1
- package/dist/{chunk-PI7HKLIT.js → chunk-D7GNNID2.js} +3 -1
- package/dist/{chunk-THROPJZC.js → chunk-DEMALFHY.js} +1 -1
- package/dist/chunk-EOQFPZEE.js +138 -0
- package/dist/{chunk-QFNWMWWY.js → chunk-ES4RKQ7B.js} +4 -4
- package/dist/{chunk-MAD6WPER.js → chunk-FG4O64DV.js} +5 -6
- package/dist/{chunk-E35CMI5D.js → chunk-FHHYXZSP.js} +31 -13
- package/dist/{chunk-AYB6AYNH.js → chunk-GMLAKNFY.js} +1 -1
- package/dist/{chunk-ZB5O3ELS.js → chunk-GRYZ5EP3.js} +4 -2
- package/dist/{chunk-ILAEBSLJ.js → chunk-H5NOLRGH.js} +2 -2
- package/dist/{chunk-W3UVOZKL.js → chunk-IPAU6FLH.js} +6 -2
- package/dist/{chunk-Z6VW6CXX.js → chunk-IQH3DDZ2.js} +2 -2
- package/dist/{chunk-6QFAK2WV.js → chunk-IUYUS2SO.js} +4 -1
- package/dist/{chunk-AXBRWRGV.js → chunk-JQLS3MZB.js} +1 -1
- package/dist/{chunk-FGYET26P.js → chunk-KJW2AS57.js} +1 -1
- package/dist/{chunk-QIXMNOBD.js → chunk-KYZMN6I6.js} +2 -2
- package/dist/{chunk-73A7D5CE.js → chunk-L4WZSVMT.js} +3 -1
- package/dist/{chunk-OOMXLJ3S.js → chunk-LFSIKGRQ.js} +13 -1
- package/dist/{chunk-W7QBBKUE.js → chunk-MJW6SQYB.js} +7 -3
- package/dist/{chunk-GMU6SQ6B.js → chunk-MRMHZ437.js} +3 -3
- package/dist/{chunk-ULPL26BU.js → chunk-N5SKHIAP.js} +1 -1
- package/dist/{chunk-LV4APO72.js → chunk-NQGPD6NX.js} +1 -1
- package/dist/{chunk-7UYONN6K.js → chunk-OSZDHN5Z.js} +2 -2
- package/dist/chunk-P6WFZDKS.js +111 -0
- package/dist/{chunk-CPEPST4S.js → chunk-PJIPUEJ3.js} +1 -1
- package/dist/{chunk-QS4ZGTEU.js → chunk-PPFX6GRK.js} +1 -1
- package/dist/{chunk-7DZDSSJS.js → chunk-RH2NCQBZ.js} +5 -4
- package/dist/{chunk-3VD3G3IL.js → chunk-T5RQGI6O.js} +1 -1
- package/dist/{chunk-F2KY4RLI.js → chunk-TVRBQMIX.js} +5 -3
- package/dist/{chunk-QEFHYUCY.js → chunk-UWGUKMBK.js} +1 -1
- package/dist/{chunk-5YLON2PW.js → chunk-UYZZV4DZ.js} +1 -1
- package/dist/{chunk-BQ7AKL2N.js → chunk-VKKUGZ3G.js} +3 -1
- package/dist/{chunk-5VCG26CV.js → chunk-W3HYWD63.js} +4 -4
- package/dist/{chunk-DEJHAOC5.js → chunk-WMXAX6VA.js} +1 -1
- package/dist/{chunk-6JVRY5DQ.js → chunk-WNAYQQ6Y.js} +2 -2
- package/dist/{chunk-VDPJGP4Q.js → chunk-WX2NIG4G.js} +1 -1
- package/dist/{chunk-ZU3DUXD2.js → chunk-WZGYIVYH.js} +1 -1
- package/dist/chunk-XGBLRDSU.js +446 -0
- package/dist/{chunk-22CQQDFW.js → chunk-XMRTFPWX.js} +2 -2
- package/dist/{chunk-HUVG2FFT.js → chunk-Y5BD4MTE.js} +4 -2
- package/dist/chunk-YSGLEHND.js +56 -0
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +93 -90
- package/dist/index.js +93 -90
- package/dist/styles.css +862 -130
- package/dist/utils/focusModality.d.ts +41 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -1
- package/package.json +3 -3
- package/dist/LivePreview-SRO7KHO4.css +0 -65
- package/dist/chunk-KF6YGL4B.js +0 -160
- package/dist/chunk-TYKQ33CL.js +0 -35
- package/dist/{chunk-3P4Y5RX6.js → chunk-4BYHAOHH.js} +1 -1
- package/dist/{chunk-3WCNHYXE.js → chunk-5BP6IS3N.js} +0 -0
- package/dist/{chunk-KD2IRYCT.js → chunk-5WDXPHEW.js} +1 -1
- package/dist/{chunk-OSFA5ROT.js → chunk-FEJANUZK.js} +0 -0
- package/dist/{chunk-FJJHD73S.js → chunk-GYBDPCRC.js} +1 -1
- package/dist/{chunk-VHZ3AXJD.js → chunk-NQCY44B3.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -548,6 +548,160 @@
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
|
|
551
|
+
/* AgentHandoffPanel-JWSW62GU.css */
|
|
552
|
+
/*
|
|
553
|
+
* Handing work to an agent, at the side of what is being made. The panel is
|
|
554
|
+
* an ArtifactPanel; this is its inside: the brief, its starters, the agent,
|
|
555
|
+
* what goes with it and the steps after, on one rhythm, and the commit in the
|
|
556
|
+
* panel's foot.
|
|
557
|
+
*
|
|
558
|
+
* ONE STEP BETWEEN SECTIONS (spacing-6) and one inside them (spacing-2): the
|
|
559
|
+
* brief and its helper read as one block, the next question as the next.
|
|
560
|
+
*/
|
|
561
|
+
|
|
562
|
+
.crewlet-agent-handoff__body {
|
|
563
|
+
display: flex;
|
|
564
|
+
flex-direction: column;
|
|
565
|
+
gap: var(--spacing-6);
|
|
566
|
+
min-width: 0;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.crewlet-agent-handoff__intro {
|
|
570
|
+
margin: 0;
|
|
571
|
+
color: var(--color-text-secondary);
|
|
572
|
+
font-size: var(--font-size-sm);
|
|
573
|
+
line-height: var(--font-line-height-normal);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.crewlet-agent-handoff__brief {
|
|
577
|
+
display: flex;
|
|
578
|
+
flex-direction: column;
|
|
579
|
+
gap: var(--spacing-2);
|
|
580
|
+
min-width: 0;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/* THE BRIEF'S NAME is a section's name, at a section heading's size, since
|
|
584
|
+
it heads the panel's first question. */
|
|
585
|
+
.crewlet-agent-handoff__label {
|
|
586
|
+
color: var(--color-text-primary);
|
|
587
|
+
font-size: var(--font-size-sm);
|
|
588
|
+
font-weight: var(--font-weight-semibold);
|
|
589
|
+
line-height: var(--font-line-height-snug);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.crewlet-agent-handoff__helper {
|
|
593
|
+
margin: 0;
|
|
594
|
+
color: var(--color-text-tertiary);
|
|
595
|
+
font-size: var(--font-size-xs);
|
|
596
|
+
line-height: var(--font-line-height-normal);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
.crewlet-agent-handoff__starters {
|
|
600
|
+
display: flex;
|
|
601
|
+
flex-wrap: wrap;
|
|
602
|
+
gap: var(--spacing-2);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.crewlet-agent-handoff__section {
|
|
606
|
+
min-width: 0;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.crewlet-agent-handoff__carried {
|
|
610
|
+
display: flex;
|
|
611
|
+
flex-direction: column;
|
|
612
|
+
gap: var(--spacing-1);
|
|
613
|
+
margin: 0 0 var(--spacing-2);
|
|
614
|
+
padding: 0;
|
|
615
|
+
list-style: none;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
.crewlet-agent-handoff__item {
|
|
619
|
+
display: flex;
|
|
620
|
+
align-items: flex-start;
|
|
621
|
+
gap: var(--spacing-2);
|
|
622
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
623
|
+
border-radius: var(--radius-md);
|
|
624
|
+
background: var(--color-surface-subtle);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.crewlet-agent-handoff__item-icon {
|
|
628
|
+
display: inline-flex;
|
|
629
|
+
flex: none;
|
|
630
|
+
/* On the first line's centre, whatever the glyph's own box. */
|
|
631
|
+
margin-top: 1px;
|
|
632
|
+
color: var(--color-text-tertiary);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.crewlet-agent-handoff__item-words {
|
|
636
|
+
display: flex;
|
|
637
|
+
flex-direction: column;
|
|
638
|
+
gap: 2px;
|
|
639
|
+
min-width: 0;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.crewlet-agent-handoff__item-label {
|
|
643
|
+
overflow-wrap: anywhere;
|
|
644
|
+
color: var(--color-text-primary);
|
|
645
|
+
font-size: var(--font-size-sm);
|
|
646
|
+
line-height: var(--font-line-height-snug);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
.crewlet-agent-handoff__item-detail {
|
|
650
|
+
overflow-wrap: anywhere;
|
|
651
|
+
color: var(--color-text-tertiary);
|
|
652
|
+
font-size: var(--font-size-xs);
|
|
653
|
+
line-height: var(--font-line-height-normal);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.crewlet-agent-handoff__task {
|
|
657
|
+
display: flex;
|
|
658
|
+
flex-direction: column;
|
|
659
|
+
gap: var(--spacing-2);
|
|
660
|
+
padding-top: var(--spacing-2);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.crewlet-agent-handoff__task-title {
|
|
664
|
+
margin: 0;
|
|
665
|
+
color: var(--color-text-primary);
|
|
666
|
+
font-size: var(--font-size-sm);
|
|
667
|
+
font-weight: var(--font-weight-medium);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/* THE BODY AS SENT, wrapped rather than scrolled sideways: a reader checks it
|
|
671
|
+
line by line, and a panel's width is narrower than its longest line. */
|
|
672
|
+
.crewlet-agent-handoff__task-body {
|
|
673
|
+
max-height: 16rem;
|
|
674
|
+
margin: 0;
|
|
675
|
+
overflow: auto;
|
|
676
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
677
|
+
border-radius: var(--radius-md);
|
|
678
|
+
background: var(--color-surface-inset);
|
|
679
|
+
color: var(--color-text-secondary);
|
|
680
|
+
font-family: var(--font-family-mono);
|
|
681
|
+
font-size: var(--font-size-xs);
|
|
682
|
+
line-height: var(--font-line-height-normal);
|
|
683
|
+
white-space: pre-wrap;
|
|
684
|
+
overflow-wrap: anywhere;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
.crewlet-agent-handoff__foot {
|
|
688
|
+
display: flex;
|
|
689
|
+
flex-direction: column;
|
|
690
|
+
gap: var(--spacing-2);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
.crewlet-agent-handoff__media {
|
|
694
|
+
display: inline-flex;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.crewlet-agent-handoff__reason {
|
|
698
|
+
margin: 0;
|
|
699
|
+
color: var(--color-text-tertiary);
|
|
700
|
+
font-size: var(--font-size-xs);
|
|
701
|
+
line-height: var(--font-line-height-normal);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
|
|
551
705
|
/* AppShell-JTSEOA57.css */
|
|
552
706
|
/*
|
|
553
707
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
@@ -1377,7 +1531,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1377
1531
|
}
|
|
1378
1532
|
|
|
1379
1533
|
|
|
1380
|
-
/* ArrangeFrame-
|
|
1534
|
+
/* ArrangeFrame-QXOQTFAH.css */
|
|
1381
1535
|
/*
|
|
1382
1536
|
* ArrangeFrame: a block of a page being arranged.
|
|
1383
1537
|
*
|
|
@@ -1439,9 +1593,8 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1439
1593
|
|
|
1440
1594
|
/*
|
|
1441
1595
|
* THE ONE RING, over the block's own edge, on the innermost block the
|
|
1442
|
-
* pointer or the focus is in.
|
|
1443
|
-
*
|
|
1444
|
-
* line appearing around it.
|
|
1596
|
+
* pointer or the focus is in. Drawn exactly over the block's own 1px border,
|
|
1597
|
+
* so the border changes colour rather than a second line appearing around it.
|
|
1445
1598
|
*
|
|
1446
1599
|
* IT IS A LAYER OF ITS OWN, above the content. An outline is painted with the
|
|
1447
1600
|
* block, under any content that is positioned or scrolls (a card with a fixed
|
|
@@ -1458,14 +1611,32 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1458
1611
|
border-radius: inherit;
|
|
1459
1612
|
pointer-events: none;
|
|
1460
1613
|
}
|
|
1461
|
-
|
|
1614
|
+
/*
|
|
1615
|
+
* THREE STRENGTHS ON THE ONE LAYER. The innermost block under the pointer, or
|
|
1616
|
+
* holding the focus in one of its fields, takes the selected edge, the accent
|
|
1617
|
+
* mixed toward the page: it says where the reader is working, and in the full
|
|
1618
|
+
* accent a caret in a cell's field drew a frame in the focus ring's own hue
|
|
1619
|
+
* round the whole block. The block ITSELF in keyboard focus takes the focus
|
|
1620
|
+
* ring, two pixels in the focus colour, the area a keyboard indicator needs.
|
|
1621
|
+
* A picked or resizing block takes one crisp pixel of the full accent, as a
|
|
1622
|
+
* picked board on a canvas does, its handles saying the rest.
|
|
1623
|
+
*/
|
|
1624
|
+
.crewlet-arrange-frame.is-editing:is(:hover, :has(:focus-visible)):not(:focus-visible, .is-selected, .is-resizing):not(
|
|
1462
1625
|
:has(.crewlet-arrange-frame:is(:hover, :focus-visible, :has(:focus-visible)))
|
|
1463
|
-
)::after
|
|
1626
|
+
)::after {
|
|
1627
|
+
border-color: var(--color-border-selected);
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1464
1630
|
.crewlet-arrange-frame.is-selected::after,
|
|
1465
1631
|
.crewlet-arrange-frame.is-resizing::after {
|
|
1466
1632
|
border-color: var(--color-brand-accent);
|
|
1467
1633
|
}
|
|
1468
1634
|
|
|
1635
|
+
.crewlet-arrange-frame.is-editing:focus-visible::after {
|
|
1636
|
+
border-width: 2px;
|
|
1637
|
+
border-color: var(--color-focus);
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1469
1640
|
/* A block with no surface of its own takes its ring a step outside it. */
|
|
1470
1641
|
.crewlet-arrange-frame.is-bare {
|
|
1471
1642
|
--crewlet-arrange-frame-radius: var(--radius-md);
|
|
@@ -2041,7 +2212,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2041
2212
|
}
|
|
2042
2213
|
|
|
2043
2214
|
|
|
2044
|
-
/* ArtifactBar-
|
|
2215
|
+
/* ArtifactBar-FWPBBKQ5.css */
|
|
2045
2216
|
/*
|
|
2046
2217
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2047
2218
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2242,11 +2413,19 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2242
2413
|
margin-inline-start: var(--spacing-1);
|
|
2243
2414
|
}
|
|
2244
2415
|
|
|
2416
|
+
/* THE STATUS IS QUIET by default, in the bar's small step and the secondary
|
|
2417
|
+
ink that `EditingStatus` takes, so a host that hands it words ("Creating…",
|
|
2418
|
+
"25 words") draws them as the open artifact draws its own, never at the
|
|
2419
|
+
title's weight. Its figures are tabular, so a count does not jitter. */
|
|
2245
2420
|
.crewlet-artifact-bar__status {
|
|
2246
2421
|
display: inline-flex;
|
|
2247
2422
|
align-items: center;
|
|
2248
2423
|
min-width: 0;
|
|
2249
2424
|
margin-inline-end: var(--spacing-2);
|
|
2425
|
+
color: var(--color-text-secondary);
|
|
2426
|
+
font-size: var(--font-size-compact);
|
|
2427
|
+
font-variant-numeric: tabular-nums;
|
|
2428
|
+
white-space: nowrap;
|
|
2250
2429
|
}
|
|
2251
2430
|
|
|
2252
2431
|
.crewlet-artifact-bar__presence {
|
|
@@ -2812,7 +2991,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2812
2991
|
}
|
|
2813
2992
|
|
|
2814
2993
|
|
|
2815
|
-
/* ArtifactKindIllustration-
|
|
2994
|
+
/* ArtifactKindIllustration-5KTP43QS.css */
|
|
2816
2995
|
/*
|
|
2817
2996
|
* A kind's drawing, its tinted ground and the Make something new tile.
|
|
2818
2997
|
*
|
|
@@ -3016,6 +3195,42 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3016
3195
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
3017
3196
|
}
|
|
3018
3197
|
|
|
3198
|
+
/*
|
|
3199
|
+
* A TILE THAT STARTS SOMETHING IN PLACE (a create page's starting layouts)
|
|
3200
|
+
* DRAWS ONE EDGE. Its face is a picture of the layout, with boards of its
|
|
3201
|
+
* own, so the ground's tinted inner line was a second outline a few pixels
|
|
3202
|
+
* inside the frame's, and with the focus ring over the frame the tile read as
|
|
3203
|
+
* three nested rings. The frame is the tile's one edge; the ground keeps its
|
|
3204
|
+
* tint.
|
|
3205
|
+
*/
|
|
3206
|
+
.crewlet-kind-tile--button .crewlet-kind-tile__ground {
|
|
3207
|
+
box-shadow: none;
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
/*
|
|
3211
|
+
* CHOSEN, as every chosen option is drawn: the selected edge (the accent
|
|
3212
|
+
* mixed toward the page) on the frame, over the selected fill, and a check
|
|
3213
|
+
* beside the name, the mark that clears 3:1. Under the pointer it keeps its
|
|
3214
|
+
* edge, and the focus ring is drawn over it for the keyboard alone.
|
|
3215
|
+
*/
|
|
3216
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame,
|
|
3217
|
+
.crewlet-kind-tile--button.is-selected:hover .crewlet-kind-tile__frame {
|
|
3218
|
+
border-color: var(--color-border-selected);
|
|
3219
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
3220
|
+
}
|
|
3221
|
+
|
|
3222
|
+
.crewlet-kind-tile__check {
|
|
3223
|
+
flex: none;
|
|
3224
|
+
margin-inline-start: auto;
|
|
3225
|
+
color: var(--color-brand-accent-ink);
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3228
|
+
@media (forced-colors: active) {
|
|
3229
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame {
|
|
3230
|
+
border-color: Highlight;
|
|
3231
|
+
}
|
|
3232
|
+
}
|
|
3233
|
+
|
|
3019
3234
|
.crewlet-kind-tile--disabled {
|
|
3020
3235
|
cursor: not-allowed;
|
|
3021
3236
|
}
|
|
@@ -3050,7 +3265,177 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3050
3265
|
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); }
|
|
3051
3266
|
|
|
3052
3267
|
|
|
3053
|
-
/*
|
|
3268
|
+
/* ArtifactMakeRow-RWUTS5MC.css */
|
|
3269
|
+
/*
|
|
3270
|
+
* The Make something new tray.
|
|
3271
|
+
*
|
|
3272
|
+
* Every colour is a token: the tray's ground, its dots and its hairlines are
|
|
3273
|
+
* the surface and border steps, and each kind's mark reads the kind's own
|
|
3274
|
+
* Fill, Line and Ink (`ArtifactKinds.css`), so the tray repaints with the
|
|
3275
|
+
* theme and holds no colour of its own.
|
|
3276
|
+
*
|
|
3277
|
+
* THE TRAY SIZES ITSELF BY ITS OWN WIDTH, never the window's: it sits in a
|
|
3278
|
+
* page column a sidebar narrows, so three steps are container queries on the
|
|
3279
|
+
* tray. Under 560px three across in two lines; from 560px the six in one
|
|
3280
|
+
* line, each its mark over its name, so a long name is never cut; from 920px
|
|
3281
|
+
* the mark beside the name and what the kind is for under it.
|
|
3282
|
+
*/
|
|
3283
|
+
|
|
3284
|
+
.crewlet-make-row {
|
|
3285
|
+
container-type: inline-size;
|
|
3286
|
+
/* A WORKBENCH: the canvas's dotted field on the sheet itself, one step
|
|
3287
|
+
quieter than a canvas that pans, inside a hairline ring. */
|
|
3288
|
+
border: 1px solid var(--color-border-default);
|
|
3289
|
+
border-radius: var(--radius-lg);
|
|
3290
|
+
background-color: var(--color-surface-background);
|
|
3291
|
+
background-image: radial-gradient(var(--color-border-default) 1px, transparent 1.2px);
|
|
3292
|
+
background-size: var(--spacing-4) var(--spacing-4);
|
|
3293
|
+
background-position: calc(var(--spacing-4) / 2) calc(var(--spacing-4) / 2);
|
|
3294
|
+
}
|
|
3295
|
+
|
|
3296
|
+
.crewlet-make-row__list {
|
|
3297
|
+
display: grid;
|
|
3298
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3299
|
+
gap: var(--spacing-1);
|
|
3300
|
+
margin: 0;
|
|
3301
|
+
padding: var(--spacing-1);
|
|
3302
|
+
list-style: none;
|
|
3303
|
+
}
|
|
3304
|
+
|
|
3305
|
+
.crewlet-make-row__cell {
|
|
3306
|
+
display: flex;
|
|
3307
|
+
min-width: 0;
|
|
3308
|
+
}
|
|
3309
|
+
|
|
3310
|
+
.crewlet-make-row__item {
|
|
3311
|
+
display: flex;
|
|
3312
|
+
flex: 1;
|
|
3313
|
+
flex-direction: column;
|
|
3314
|
+
align-items: center;
|
|
3315
|
+
gap: var(--spacing-2);
|
|
3316
|
+
min-width: 0;
|
|
3317
|
+
box-sizing: border-box;
|
|
3318
|
+
padding: var(--spacing-3) var(--spacing-2);
|
|
3319
|
+
border: 1px solid transparent;
|
|
3320
|
+
border-radius: var(--radius-md);
|
|
3321
|
+
color: var(--color-text-primary);
|
|
3322
|
+
text-decoration: none;
|
|
3323
|
+
outline: none;
|
|
3324
|
+
transition:
|
|
3325
|
+
background-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
3326
|
+
border-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
3327
|
+
box-shadow var(--motion-duration-fast) var(--motion-easing-out);
|
|
3328
|
+
}
|
|
3329
|
+
|
|
3330
|
+
/* THE GLYPH ON ITS KIND'S TINT, the one coloured thing in the item. */
|
|
3331
|
+
.crewlet-make-row__mark {
|
|
3332
|
+
display: inline-flex;
|
|
3333
|
+
flex: none;
|
|
3334
|
+
align-items: center;
|
|
3335
|
+
justify-content: center;
|
|
3336
|
+
width: 32px;
|
|
3337
|
+
height: 32px;
|
|
3338
|
+
border-radius: var(--radius-md);
|
|
3339
|
+
background: var(--crewlet-kind-fill);
|
|
3340
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
3341
|
+
color: var(--crewlet-kind-ink);
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3344
|
+
.crewlet-make-row__words {
|
|
3345
|
+
display: flex;
|
|
3346
|
+
flex-direction: column;
|
|
3347
|
+
align-items: center;
|
|
3348
|
+
min-width: 0;
|
|
3349
|
+
max-width: 100%;
|
|
3350
|
+
}
|
|
3351
|
+
|
|
3352
|
+
.crewlet-make-row__name,
|
|
3353
|
+
.crewlet-make-row__detail {
|
|
3354
|
+
max-width: 100%;
|
|
3355
|
+
overflow: hidden;
|
|
3356
|
+
text-overflow: ellipsis;
|
|
3357
|
+
white-space: nowrap;
|
|
3358
|
+
}
|
|
3359
|
+
|
|
3360
|
+
.crewlet-make-row__name {
|
|
3361
|
+
font-size: var(--font-size-sm);
|
|
3362
|
+
font-weight: var(--font-weight-medium);
|
|
3363
|
+
line-height: 1.3;
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
/* WHAT IT IS FOR is the widest step's: on a narrower tray the name alone
|
|
3367
|
+
says it, and the details are kept as the item's description. */
|
|
3368
|
+
.crewlet-make-row__detail {
|
|
3369
|
+
display: none;
|
|
3370
|
+
color: var(--color-text-tertiary);
|
|
3371
|
+
font-size: var(--font-size-xs);
|
|
3372
|
+
line-height: 1.35;
|
|
3373
|
+
}
|
|
3374
|
+
|
|
3375
|
+
@container (width >= 560px) {
|
|
3376
|
+
.crewlet-make-row__list {
|
|
3377
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
3378
|
+
}
|
|
3379
|
+
|
|
3380
|
+
.crewlet-make-row__item {
|
|
3381
|
+
padding: var(--spacing-2) var(--spacing-1);
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3384
|
+
|
|
3385
|
+
@container (width >= 920px) {
|
|
3386
|
+
.crewlet-make-row__item {
|
|
3387
|
+
flex-direction: row;
|
|
3388
|
+
gap: var(--spacing-3);
|
|
3389
|
+
padding: var(--spacing-2);
|
|
3390
|
+
}
|
|
3391
|
+
|
|
3392
|
+
.crewlet-make-row__words {
|
|
3393
|
+
align-items: flex-start;
|
|
3394
|
+
}
|
|
3395
|
+
|
|
3396
|
+
.crewlet-make-row__detail {
|
|
3397
|
+
display: block;
|
|
3398
|
+
}
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3401
|
+
/* AN ITEM LIFTS OFF THE BENCH under the pointer as a card: the card's
|
|
3402
|
+
ground, the hairline a card is found by and the lightest shadow, and
|
|
3403
|
+
nothing inside it moves. */
|
|
3404
|
+
a.crewlet-make-row__item:hover {
|
|
3405
|
+
border-color: var(--color-border-default);
|
|
3406
|
+
background-color: var(--color-surface-subtle);
|
|
3407
|
+
box-shadow: var(--shadow-xs);
|
|
3408
|
+
}
|
|
3409
|
+
|
|
3410
|
+
a.crewlet-make-row__item:active {
|
|
3411
|
+
background-color: var(--color-surface-pressed);
|
|
3412
|
+
box-shadow: none;
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
/* ON ITS OWN EDGE: an item draws a hairline once lifted, so the ring sits on
|
|
3416
|
+
it rather than standing off it with a gap between two edges. */
|
|
3417
|
+
.crewlet-make-row__item:focus-visible {
|
|
3418
|
+
outline: 2px solid var(--color-focus);
|
|
3419
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
3420
|
+
}
|
|
3421
|
+
|
|
3422
|
+
.crewlet-make-row__item--disabled {
|
|
3423
|
+
cursor: not-allowed;
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__mark,
|
|
3427
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__words {
|
|
3428
|
+
opacity: 0.55;
|
|
3429
|
+
}
|
|
3430
|
+
|
|
3431
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3432
|
+
.crewlet-make-row__item {
|
|
3433
|
+
transition: none;
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
|
|
3437
|
+
|
|
3438
|
+
/* ArtifactPanel-KKUUIPEU.css */
|
|
3054
3439
|
/*
|
|
3055
3440
|
* The workspace is a row: the artifact's body, then at most one panel. The
|
|
3056
3441
|
* body scrolls itself, so a panel beside it stays in view however far the
|
|
@@ -3170,6 +3555,15 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3170
3555
|
overscroll-behavior: contain;
|
|
3171
3556
|
}
|
|
3172
3557
|
|
|
3558
|
+
/* THE FOOT holds the panel's own commit, outside the scrolling body, so it
|
|
3559
|
+
stays in reach at every scroll. Its inset is the body's. */
|
|
3560
|
+
.crewlet-artifact-panel__foot {
|
|
3561
|
+
flex: none;
|
|
3562
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
3563
|
+
border-top: 1px solid var(--color-border-default);
|
|
3564
|
+
background: var(--color-surface-background);
|
|
3565
|
+
}
|
|
3566
|
+
|
|
3173
3567
|
/* NOT ROOM FOR TWO COLUMNS: the panel slides over the artifact's end edge,
|
|
3174
3568
|
raised off it, rather than squeezing the artifact under a useful width. */
|
|
3175
3569
|
@container crewlet-artifact-workspace (width < 960px) {
|
|
@@ -5095,7 +5489,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5095
5489
|
}
|
|
5096
5490
|
|
|
5097
5491
|
|
|
5098
|
-
/* CanvasBoard-
|
|
5492
|
+
/* CanvasBoard-TS4P356F.css */
|
|
5099
5493
|
/*
|
|
5100
5494
|
* A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
|
|
5101
5495
|
* out in canvas pixels inside the canvas's world and scale with it; their
|
|
@@ -5180,19 +5574,26 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5180
5574
|
}
|
|
5181
5575
|
|
|
5182
5576
|
/*
|
|
5183
|
-
* HOVER, then SELECTION
|
|
5184
|
-
* the
|
|
5185
|
-
*
|
|
5577
|
+
* HOVER, then SELECTION: one screen pixel each, over the hairline. Hover is
|
|
5578
|
+
* the selected edge, the accent mixed toward the canvas, so pointing at a
|
|
5579
|
+
* board previews the pick without claiming it; selection is the full accent,
|
|
5580
|
+
* crisp, with its four corners drawn, which are what say "this one" on a
|
|
5581
|
+
* canvas where a board's own content can be any colour. It was two pixels,
|
|
5582
|
+
* the focus ring's weight in the focus ring's hue, so a picked board and the
|
|
5583
|
+
* board the keyboard was on read alike; the 2px ring is the live board's now
|
|
5584
|
+
* alone ([data-active], below), which takes the pointer like a focused frame.
|
|
5585
|
+
* Hovering a board's name is hovering its board, which is how a reader finds
|
|
5586
|
+
* the board a name belongs to on a crowded canvas.
|
|
5186
5587
|
*/
|
|
5187
5588
|
.crewlet-canvas-board__board:hover .crewlet-canvas-board__body,
|
|
5188
5589
|
.crewlet-canvas-board__note:hover {
|
|
5189
|
-
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-
|
|
5590
|
+
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-border-selected);
|
|
5190
5591
|
outline-offset: 0;
|
|
5191
5592
|
}
|
|
5192
5593
|
|
|
5193
5594
|
.crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__body,
|
|
5194
5595
|
.crewlet-canvas-board__note[data-selected] {
|
|
5195
|
-
outline: calc(
|
|
5596
|
+
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
|
|
5196
5597
|
outline-offset: 0;
|
|
5197
5598
|
}
|
|
5198
5599
|
|
|
@@ -5300,7 +5701,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5300
5701
|
transform-origin: bottom left;
|
|
5301
5702
|
}
|
|
5302
5703
|
|
|
5303
|
-
/* A board drawn too narrow
|
|
5704
|
+
/* A board drawn too narrow for even its number goes unnamed (`boardName`). */
|
|
5304
5705
|
.crewlet-canvas-board__board[data-untitled] > .crewlet-canvas-board__chrome {
|
|
5305
5706
|
display: none;
|
|
5306
5707
|
}
|
|
@@ -5636,7 +6037,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5636
6037
|
}
|
|
5637
6038
|
|
|
5638
6039
|
|
|
5639
|
-
/* Card-
|
|
6040
|
+
/* Card-QOVASQNU.css */
|
|
5640
6041
|
/*
|
|
5641
6042
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
5642
6043
|
* control.
|
|
@@ -5681,7 +6082,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5681
6082
|
* `box-shadow: <shadow>, none` is invalid at computed-value time, so the
|
|
5682
6083
|
* declaration is dropped and the light card loses the elevation the list was
|
|
5683
6084
|
* built around. Alone on a pseudo element the same token is valid in both
|
|
5684
|
-
* themes, and it composes with
|
|
6085
|
+
* themes, and it composes with a chosen card's edge rather than replacing
|
|
5685
6086
|
* whichever was declared last, exactly as the rail does.
|
|
5686
6087
|
*/
|
|
5687
6088
|
.crewlet-card--elevated::after {
|
|
@@ -5755,8 +6156,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5755
6156
|
/*
|
|
5756
6157
|
* THE FLUSH RECIPE. The slots reach the card's edges, and the clip is what
|
|
5757
6158
|
* makes the header's hairline and a table's own corners follow the radius
|
|
5758
|
-
* instead of crossing it.
|
|
5759
|
-
*
|
|
6159
|
+
* instead of crossing it. A chosen card's edge and fill survive the clip
|
|
6160
|
+
* because they are its own border and background.
|
|
5760
6161
|
*/
|
|
5761
6162
|
.crewlet-card--flush {
|
|
5762
6163
|
overflow: hidden;
|
|
@@ -5839,29 +6240,34 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5839
6240
|
|
|
5840
6241
|
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
5841
6242
|
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
5842
|
-
|
|
5843
|
-
|
|
6243
|
+
On a chosen card it covers the selected edge, and the selected fill inside
|
|
6244
|
+
it still says the card is chosen. */
|
|
5844
6245
|
.crewlet-card.is-interactive:focus-visible {
|
|
5845
6246
|
outline: 2px solid var(--color-focus);
|
|
5846
6247
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
5847
6248
|
}
|
|
5848
6249
|
|
|
5849
6250
|
/*
|
|
5850
|
-
* Chosen
|
|
5851
|
-
*
|
|
5852
|
-
*
|
|
6251
|
+
* Chosen, as every chosen option in the package is drawn: the selected edge
|
|
6252
|
+
* (the accent mixed toward the card) over the selected fill. It was the full
|
|
6253
|
+
* accent border under --shadow-selection, a second accent ring two pixels
|
|
6254
|
+
* deep, which is the focus ring's weight in the focus ring's hue, so a grid
|
|
6255
|
+
* of cards showed the pick and the keyboard's place alike. The fill is laid
|
|
6256
|
+
* as an IMAGE over the card's own surface rather than in place of it, so the
|
|
6257
|
+
* card keeps its ground and the tint composites over it, as it does over a
|
|
6258
|
+
* row.
|
|
5853
6259
|
*/
|
|
5854
6260
|
.crewlet-card.is-selected {
|
|
5855
|
-
|
|
5856
|
-
|
|
6261
|
+
border-color: var(--color-border-selected);
|
|
6262
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
5857
6263
|
}
|
|
5858
6264
|
|
|
5859
6265
|
/* ---- Rails ------------------------------------------------------------- */
|
|
5860
6266
|
|
|
5861
6267
|
/*
|
|
5862
6268
|
* A state down the leading edge. Drawn as a pseudo element rather than a
|
|
5863
|
-
* border or an inset shadow, so it composes with the elevated shadow and
|
|
5864
|
-
*
|
|
6269
|
+
* border or an inset shadow, so it composes with the elevated shadow and a
|
|
6270
|
+
* chosen card's edge instead of replacing whichever one was declared last.
|
|
5865
6271
|
*/
|
|
5866
6272
|
.crewlet-card--rail-info::before,
|
|
5867
6273
|
.crewlet-card--rail-warning::before,
|
|
@@ -7318,7 +7724,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7318
7724
|
}
|
|
7319
7725
|
|
|
7320
7726
|
|
|
7321
|
-
/* ChoiceButtons-
|
|
7727
|
+
/* ChoiceButtons-FLIFXFFS.css */
|
|
7322
7728
|
/*
|
|
7323
7729
|
* One answer, sent with one press: a column of buttons as tall as a touch
|
|
7324
7730
|
* target, the recommended one first and filled with the accent.
|
|
@@ -7357,6 +7763,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7357
7763
|
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
7358
7764
|
}
|
|
7359
7765
|
|
|
7766
|
+
/*
|
|
7767
|
+
* AN OPTION WITH A DETAIL STARTS AT ITS TOP. Laid out as tiles (a host's grid
|
|
7768
|
+
* of columns), the options in one row stretch to the tallest, and centred
|
|
7769
|
+
* text put a one-line detail's label lower than its neighbour's two-line
|
|
7770
|
+
* one. A column of options is unchanged: each is as tall as its own text.
|
|
7771
|
+
*/
|
|
7772
|
+
.crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) {
|
|
7773
|
+
align-items: flex-start;
|
|
7774
|
+
}
|
|
7775
|
+
|
|
7360
7776
|
.crewlet-choice-buttons__option:hover:not([aria-disabled='true']) {
|
|
7361
7777
|
background: var(--color-surface-elevated);
|
|
7362
7778
|
border-color: var(--color-border-strong-hover);
|
|
@@ -7448,11 +7864,13 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7448
7864
|
}
|
|
7449
7865
|
|
|
7450
7866
|
|
|
7451
|
-
/* ChoiceList-
|
|
7867
|
+
/* ChoiceList-EA2W6MOS.css */
|
|
7452
7868
|
/*
|
|
7453
7869
|
* A short list of answers in one bordered box: a radio, the label with a line
|
|
7454
7870
|
* of detail under it, and a tag at the row's end. The selected row takes the
|
|
7455
|
-
* accent's soft
|
|
7871
|
+
* selected fill (the accent's soft tint), so the answer reads at a glance; the
|
|
7872
|
+
* radio is the mark that clears 3:1, and no row is ever ringed in the accent,
|
|
7873
|
+
* which is the focus ring's colour.
|
|
7456
7874
|
*/
|
|
7457
7875
|
.crewlet-choice-list {
|
|
7458
7876
|
/* The platform's radio, sized here so a panel can line up with the text beside it. */
|
|
@@ -7517,21 +7935,47 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7517
7935
|
}
|
|
7518
7936
|
|
|
7519
7937
|
.crewlet-choice-list__row.is-checked {
|
|
7520
|
-
background: var(--color-
|
|
7938
|
+
background: var(--color-surface-selected);
|
|
7521
7939
|
}
|
|
7522
7940
|
|
|
7523
7941
|
.crewlet-choice-list.is-disabled .crewlet-choice-list__row {
|
|
7524
7942
|
cursor: not-allowed;
|
|
7525
7943
|
}
|
|
7526
7944
|
|
|
7945
|
+
/*
|
|
7946
|
+
* THE RADIO IS DRAWN, not the platform's. In a dark palette the platform's
|
|
7947
|
+
* own radio fills an unchosen answer with a grey disc, which beside the one
|
|
7948
|
+
* chosen read as a second, muted choice. Drawn here, an unchosen answer is an
|
|
7949
|
+
* empty ring on the control boundary (3:1 on every ground) and the chosen one
|
|
7950
|
+
* the accent ring round an accent dot. Forced colours hand it back to the
|
|
7951
|
+
* platform, which draws it in the system's own colours.
|
|
7952
|
+
*/
|
|
7527
7953
|
.crewlet-choice-list__radio {
|
|
7954
|
+
appearance: none;
|
|
7955
|
+
display: inline-grid;
|
|
7956
|
+
place-content: center;
|
|
7957
|
+
flex: none;
|
|
7958
|
+
box-sizing: border-box;
|
|
7528
7959
|
width: var(--crewlet-choice-list-radio-size);
|
|
7529
7960
|
height: var(--crewlet-choice-list-radio-size);
|
|
7530
7961
|
margin: 3px 0 0;
|
|
7531
|
-
|
|
7962
|
+
border: 1px solid var(--color-border-control);
|
|
7963
|
+
border-radius: 50%;
|
|
7964
|
+
background: transparent;
|
|
7532
7965
|
cursor: inherit;
|
|
7533
7966
|
}
|
|
7534
7967
|
|
|
7968
|
+
.crewlet-choice-list__radio:checked {
|
|
7969
|
+
border-color: var(--color-brand-accent);
|
|
7970
|
+
background: radial-gradient(circle, var(--color-brand-accent) 0 3px, transparent 3.5px);
|
|
7971
|
+
}
|
|
7972
|
+
|
|
7973
|
+
@media (forced-colors: active) {
|
|
7974
|
+
.crewlet-choice-list__radio {
|
|
7975
|
+
appearance: auto;
|
|
7976
|
+
}
|
|
7977
|
+
}
|
|
7978
|
+
|
|
7535
7979
|
/* A radio draws its own edge, so the ring sits on it, as a checkbox's does. */
|
|
7536
7980
|
.crewlet-choice-list__radio:focus-visible {
|
|
7537
7981
|
outline: 2px solid var(--color-focus);
|
|
@@ -7556,13 +8000,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7556
8000
|
overflow-wrap: anywhere;
|
|
7557
8001
|
}
|
|
7558
8002
|
|
|
8003
|
+
/* A tag says something ABOUT an answer ("Suggested"), so it is set in the
|
|
8004
|
+
tertiary ink: in the accent ink it was a second accent mark on the chosen
|
|
8005
|
+
row, beside the radio and the fill that already say which one is chosen. */
|
|
7559
8006
|
.crewlet-choice-list__tag {
|
|
7560
8007
|
padding-top: 2px;
|
|
7561
8008
|
font-size: var(--font-size-2xs);
|
|
7562
8009
|
font-weight: 500;
|
|
7563
8010
|
letter-spacing: 0.05em;
|
|
7564
8011
|
text-transform: uppercase;
|
|
7565
|
-
color: var(--color-
|
|
8012
|
+
color: var(--color-text-tertiary);
|
|
7566
8013
|
white-space: nowrap;
|
|
7567
8014
|
}
|
|
7568
8015
|
|
|
@@ -7582,7 +8029,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7582
8029
|
padding: var(--spacing-1) var(--spacing-2) var(--spacing-3) calc(var(--spacing-2) + var(--crewlet-choice-list-radio-size) + var(--spacing-3));
|
|
7583
8030
|
border-end-start-radius: var(--radius-sm);
|
|
7584
8031
|
border-end-end-radius: var(--radius-sm);
|
|
7585
|
-
background: var(--color-
|
|
8032
|
+
background: var(--color-surface-selected);
|
|
7586
8033
|
}
|
|
7587
8034
|
|
|
7588
8035
|
.crewlet-choice-list__footer {
|
|
@@ -8285,12 +8732,15 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8285
8732
|
}
|
|
8286
8733
|
|
|
8287
8734
|
|
|
8288
|
-
/* Composer-
|
|
8735
|
+
/* Composer-PXITWNEK.css */
|
|
8289
8736
|
/*
|
|
8290
8737
|
* A message written in place: the field and its footer strip in one box. The
|
|
8291
|
-
* BOX takes the focus ring
|
|
8292
|
-
*
|
|
8293
|
-
*
|
|
8738
|
+
* BOX takes the focus ring every field in the package draws (see Input.css):
|
|
8739
|
+
* an outline over its boundary, 2px for the keyboard and the hairline for a
|
|
8740
|
+
* pointer, so the field inside draws no border or outline of its own and the
|
|
8741
|
+
* footer reads as part of what is being written. It used to recolour the
|
|
8742
|
+
* border to the accent AND lay a 2px soft halo outside it: two highlights for
|
|
8743
|
+
* one state, and the loudest edge on a page whose field was focused on load.
|
|
8294
8744
|
*/
|
|
8295
8745
|
.crewlet-composer {
|
|
8296
8746
|
display: grid;
|
|
@@ -8298,18 +8748,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8298
8748
|
border: 1px solid var(--color-border-strong);
|
|
8299
8749
|
border-radius: var(--radius-md);
|
|
8300
8750
|
background: var(--color-surface-background);
|
|
8301
|
-
transition:
|
|
8302
|
-
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
8303
|
-
box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
8751
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
8304
8752
|
}
|
|
8305
8753
|
|
|
8306
8754
|
.crewlet-composer:hover {
|
|
8307
8755
|
border-color: var(--color-border-strong-hover);
|
|
8308
8756
|
}
|
|
8309
8757
|
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8758
|
+
/* Keyed on the FIELD, not :focus-within: the footer holds the send action,
|
|
8759
|
+
and a reader tabbing onto it is shown that button's ring, not the box's. */
|
|
8760
|
+
.crewlet-composer:has(.crewlet-composer__field:focus-visible) {
|
|
8761
|
+
outline: 2px solid var(--color-focus);
|
|
8762
|
+
outline-offset: -1px;
|
|
8763
|
+
}
|
|
8764
|
+
|
|
8765
|
+
:root[data-crewlet-focus='pointer'] .crewlet-composer:has(.crewlet-composer__field:focus-visible) {
|
|
8766
|
+
outline-width: 1px;
|
|
8767
|
+
outline-color: var(--color-border-selected);
|
|
8313
8768
|
}
|
|
8314
8769
|
|
|
8315
8770
|
.crewlet-composer .crewlet-composer__field {
|
|
@@ -8322,11 +8777,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8322
8777
|
resize: none;
|
|
8323
8778
|
}
|
|
8324
8779
|
|
|
8325
|
-
/* The ring is the box's, above
|
|
8326
|
-
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8780
|
+
/* The ring is the box's, above, so the field inside never draws one: left to
|
|
8781
|
+
the textarea's own rule it would be a second ring inside the box's, and in
|
|
8782
|
+
forced colours the box's outline is the one the system repaints. Stated on
|
|
8783
|
+
the field at rest, at a weight the textarea's focus rule cannot outrank. */
|
|
8784
|
+
.crewlet-composer .crewlet-composer__field.crewlet-textarea {
|
|
8785
|
+
outline: none;
|
|
8330
8786
|
}
|
|
8331
8787
|
|
|
8332
8788
|
/* Past its cap the field scrolls rather than pushing the page. */
|
|
@@ -8363,8 +8819,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8363
8819
|
flex: 1;
|
|
8364
8820
|
}
|
|
8365
8821
|
|
|
8822
|
+
/* On a phone the hint goes, and a footer that held only the hint goes with it. */
|
|
8366
8823
|
@media (width < 640px) {
|
|
8367
|
-
.crewlet-composer__hint
|
|
8824
|
+
.crewlet-composer__hint,
|
|
8825
|
+
.crewlet-composer__footer[data-hint-only] {
|
|
8368
8826
|
display: none;
|
|
8369
8827
|
}
|
|
8370
8828
|
}
|
|
@@ -11340,7 +11798,7 @@ body.crewlet-data-table-resizing {
|
|
|
11340
11798
|
}
|
|
11341
11799
|
|
|
11342
11800
|
|
|
11343
|
-
/* DatasetSource-
|
|
11801
|
+
/* DatasetSource-SMGX4PS5.css */
|
|
11344
11802
|
/*
|
|
11345
11803
|
* DatasetSource: one entry of a dashboard's Sources rail. The title and its
|
|
11346
11804
|
* source kind, the definition, then where the rows stand, how many there are
|
|
@@ -11352,6 +11810,8 @@ body.crewlet-data-table-resizing {
|
|
|
11352
11810
|
display: flex;
|
|
11353
11811
|
flex-direction: column;
|
|
11354
11812
|
min-width: 0;
|
|
11813
|
+
/* Held transparent at rest so nothing moves when an entry opens. */
|
|
11814
|
+
border: 1px solid transparent;
|
|
11355
11815
|
border-radius: var(--radius-md);
|
|
11356
11816
|
}
|
|
11357
11817
|
|
|
@@ -11385,12 +11845,23 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11385
11845
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
11386
11846
|
}
|
|
11387
11847
|
|
|
11388
|
-
/*
|
|
11848
|
+
/*
|
|
11849
|
+
* The selected edge round the WHOLE ENTRY, over the selected fill on its
|
|
11850
|
+
* summary, as every chosen option is drawn: a tint of the accent, never the
|
|
11851
|
+
* full accent the focus ring is drawn in. The edge used to ring the summary
|
|
11852
|
+
* alone, so the settings and figures an open source shows under it hung
|
|
11853
|
+
* below the ring with nothing saying they belonged to it; inside one edge they
|
|
11854
|
+
* read as the entry's own. The rows it opens are what say which entry is open.
|
|
11855
|
+
*/
|
|
11856
|
+
.crewlet-dataset-source--selected {
|
|
11857
|
+
border-color: var(--color-border-selected);
|
|
11858
|
+
}
|
|
11859
|
+
|
|
11389
11860
|
.crewlet-dataset-source--selected .crewlet-dataset-source__summary {
|
|
11390
|
-
|
|
11391
|
-
background: var(--color-brand-accent-soft);
|
|
11861
|
+
background: var(--color-surface-selected);
|
|
11392
11862
|
}
|
|
11393
11863
|
|
|
11864
|
+
|
|
11394
11865
|
.crewlet-dataset-source__head {
|
|
11395
11866
|
display: flex;
|
|
11396
11867
|
align-items: center;
|
|
@@ -11461,9 +11932,30 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11461
11932
|
color: var(--color-feedback-warning-ink);
|
|
11462
11933
|
}
|
|
11463
11934
|
|
|
11935
|
+
/*
|
|
11936
|
+
* AN OPEN ENTRY IS ONE CARD: the selected edge above frames the summary and
|
|
11937
|
+
* the preview together, the summary its head on the selected fill and the
|
|
11938
|
+
* preview a well under it, inset on the summary's padding, so the figures in
|
|
11939
|
+
* it (cards of their own) stand on a ground that is plainly the source's
|
|
11940
|
+
* rather than the rail's. One line separates head from well, in the same
|
|
11941
|
+
* selected edge, and the head sits INSIDE the frame rather than over it: its
|
|
11942
|
+
* fill laid over the frame's edge would paint that edge out.
|
|
11943
|
+
*/
|
|
11944
|
+
.crewlet-dataset-source--open {
|
|
11945
|
+
background: var(--color-surface-inset);
|
|
11946
|
+
}
|
|
11947
|
+
|
|
11948
|
+
.crewlet-dataset-source--open > .crewlet-dataset-source__summary {
|
|
11949
|
+
border-block-end-color: var(--color-border-selected);
|
|
11950
|
+
border-start-start-radius: calc(var(--radius-md) - 1px);
|
|
11951
|
+
border-start-end-radius: calc(var(--radius-md) - 1px);
|
|
11952
|
+
border-end-start-radius: 0;
|
|
11953
|
+
border-end-end-radius: 0;
|
|
11954
|
+
}
|
|
11955
|
+
|
|
11464
11956
|
.crewlet-dataset-source__preview {
|
|
11465
11957
|
min-width: 0;
|
|
11466
|
-
padding: var(--spacing-
|
|
11958
|
+
padding: var(--spacing-3);
|
|
11467
11959
|
}
|
|
11468
11960
|
|
|
11469
11961
|
.crewlet-dataset-source-list {
|
|
@@ -11480,7 +11972,7 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11480
11972
|
}
|
|
11481
11973
|
|
|
11482
11974
|
|
|
11483
|
-
/* DateTimePicker-
|
|
11975
|
+
/* DateTimePicker-2IVTKFV2.css */
|
|
11484
11976
|
/*
|
|
11485
11977
|
* DateTimePicker: a Select-shaped trigger over a calendar dialog.
|
|
11486
11978
|
*
|
|
@@ -11534,10 +12026,17 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11534
12026
|
*/
|
|
11535
12027
|
.crewlet-datetime:focus-visible,
|
|
11536
12028
|
.crewlet-datetime.is-open {
|
|
11537
|
-
outline:
|
|
12029
|
+
outline: 2px solid var(--color-focus);
|
|
11538
12030
|
outline-offset: -1px;
|
|
11539
12031
|
}
|
|
11540
12032
|
|
|
12033
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
12034
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime:focus-visible,
|
|
12035
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime.is-open {
|
|
12036
|
+
outline-width: 1px;
|
|
12037
|
+
outline-color: var(--color-border-selected);
|
|
12038
|
+
}
|
|
12039
|
+
|
|
11541
12040
|
.crewlet-datetime.is-disabled,
|
|
11542
12041
|
.crewlet-datetime:disabled {
|
|
11543
12042
|
opacity: 0.55;
|
|
@@ -11660,10 +12159,16 @@ svg.crewlet-datetime__chevron {
|
|
|
11660
12159
|
|
|
11661
12160
|
/* The same one ring the trigger draws, over the box's own boundary. */
|
|
11662
12161
|
.crewlet-datetime__time-input:focus-visible {
|
|
11663
|
-
outline:
|
|
12162
|
+
outline: 2px solid var(--color-focus);
|
|
11664
12163
|
outline-offset: -1px;
|
|
11665
12164
|
}
|
|
11666
12165
|
|
|
12166
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
12167
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime__time-input:focus-visible {
|
|
12168
|
+
outline-width: 1px;
|
|
12169
|
+
outline-color: var(--color-border-selected);
|
|
12170
|
+
}
|
|
12171
|
+
|
|
11667
12172
|
.crewlet-datetime__footer {
|
|
11668
12173
|
display: flex;
|
|
11669
12174
|
align-items: center;
|
|
@@ -12376,7 +12881,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12376
12881
|
}
|
|
12377
12882
|
|
|
12378
12883
|
|
|
12379
|
-
/* Document-
|
|
12884
|
+
/* Document-YFWTWXJP.css */
|
|
12380
12885
|
/*
|
|
12381
12886
|
* Rendered markdown, set as a document (Document.tsx).
|
|
12382
12887
|
*
|
|
@@ -12706,17 +13211,34 @@ svg.crewlet-datetime__chevron {
|
|
|
12706
13211
|
* on no surface of its own, with a line along its foot that answers the
|
|
12707
13212
|
* pointer, the focus and a refusal. The line is a border rather than a
|
|
12708
13213
|
* shadow, because forced colours keep a border and drop a shadow.
|
|
13214
|
+
*
|
|
13215
|
+
* ONE PIXEL, AND A TINT, WHERE A POINTER PUT THE CARET. The line is the
|
|
13216
|
+
* hairline under the pointer and the selected edge (the accent mixed toward
|
|
13217
|
+
* the page) once a click has put the caret in it: the reader is already
|
|
13218
|
+
* looking at the title, and a page that focuses its title on load drew a 2px
|
|
13219
|
+
* accent bar under it before anybody had touched anything.
|
|
13220
|
+
*
|
|
13221
|
+
* TWO PIXELS IN THE FOCUS COLOUR FOR THE KEYBOARD, the area WCAG 2.2's focus
|
|
13222
|
+
* appearance asks of an indicator: the border takes the focus colour and a
|
|
13223
|
+
* shadow lays the second pixel under it, with a transparent outline that
|
|
13224
|
+
* forced colours paints in its place. The padding takes the pixel the border
|
|
13225
|
+
* no longer reserves, so the title sits where it always did.
|
|
12709
13226
|
*/
|
|
12710
13227
|
.crewlet-document-title-field {
|
|
12711
13228
|
display: block;
|
|
12712
13229
|
width: 100%;
|
|
12713
13230
|
min-width: 0;
|
|
12714
|
-
padding: 0 0 var(--spacing-1);
|
|
13231
|
+
padding: 0 0 calc(var(--spacing-1) + 1px);
|
|
12715
13232
|
border: 0;
|
|
12716
|
-
border-block-end:
|
|
13233
|
+
border-block-end: 1px solid transparent;
|
|
12717
13234
|
border-radius: 0;
|
|
12718
13235
|
background: none;
|
|
12719
13236
|
outline: none;
|
|
13237
|
+
/* A textarea of one row that grows with the title (DocumentTitleField sets
|
|
13238
|
+
its height): no handle, no scrollbar, and the title's own wrapping. */
|
|
13239
|
+
resize: none;
|
|
13240
|
+
overflow: hidden;
|
|
13241
|
+
white-space: pre-wrap;
|
|
12720
13242
|
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
12721
13243
|
}
|
|
12722
13244
|
|
|
@@ -12731,12 +13253,27 @@ svg.crewlet-datetime__chevron {
|
|
|
12731
13253
|
|
|
12732
13254
|
.crewlet-document-title-field:focus-visible {
|
|
12733
13255
|
border-block-end-color: var(--color-focus);
|
|
13256
|
+
box-shadow: 0 1px 0 var(--color-focus);
|
|
13257
|
+
outline: 2px solid transparent;
|
|
13258
|
+
}
|
|
13259
|
+
|
|
13260
|
+
:root[data-crewlet-focus='pointer'] .crewlet-document-title-field:focus-visible {
|
|
13261
|
+
border-block-end-color: var(--color-border-selected);
|
|
13262
|
+
box-shadow: none;
|
|
12734
13263
|
}
|
|
12735
13264
|
|
|
12736
13265
|
.crewlet-document-title-field[aria-invalid='true'] {
|
|
12737
13266
|
border-block-end-color: var(--color-feedback-danger);
|
|
12738
13267
|
}
|
|
12739
13268
|
|
|
13269
|
+
.crewlet-document-title-field[aria-invalid='true']:focus-visible {
|
|
13270
|
+
box-shadow: 0 1px 0 var(--color-feedback-danger);
|
|
13271
|
+
}
|
|
13272
|
+
|
|
13273
|
+
:root[data-crewlet-focus='pointer'] .crewlet-document-title-field[aria-invalid='true']:focus-visible {
|
|
13274
|
+
border-block-end-color: var(--color-feedback-danger);
|
|
13275
|
+
}
|
|
13276
|
+
|
|
12740
13277
|
@media (prefers-reduced-motion: reduce) {
|
|
12741
13278
|
.crewlet-document-title-field {
|
|
12742
13279
|
transition: none;
|
|
@@ -13313,7 +13850,7 @@ svg.crewlet-datetime__chevron {
|
|
|
13313
13850
|
}
|
|
13314
13851
|
|
|
13315
13852
|
|
|
13316
|
-
/* FilterChip-
|
|
13853
|
+
/* FilterChip-VL33P3JL.css */
|
|
13317
13854
|
/*
|
|
13318
13855
|
* The filter chip: neutral until it is on, and then the accent.
|
|
13319
13856
|
*
|
|
@@ -13397,9 +13934,13 @@ svg.crewlet-datetime__chevron {
|
|
|
13397
13934
|
cursor: not-allowed;
|
|
13398
13935
|
}
|
|
13399
13936
|
|
|
13937
|
+
/* The selected fill, and the accent's lighter line rather than the selected
|
|
13938
|
+
edge: on a pill this small the 0.6 edge, the fill and the accent ink were
|
|
13939
|
+
three accent marks on one word. The ink is the mark that clears 4.5:1, and
|
|
13940
|
+
the keyboard's 2px focus ring stays the only full-weight line. */
|
|
13400
13941
|
.crewlet-filter-chip[aria-pressed='true'],
|
|
13401
13942
|
.crewlet-filter-chip[aria-checked='true'] {
|
|
13402
|
-
background: var(--color-
|
|
13943
|
+
background: var(--color-surface-selected);
|
|
13403
13944
|
border-color: var(--color-brand-accent-soft-strong);
|
|
13404
13945
|
color: var(--color-brand-accent-ink);
|
|
13405
13946
|
}
|
|
@@ -14317,7 +14858,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14317
14858
|
}
|
|
14318
14859
|
|
|
14319
14860
|
|
|
14320
|
-
/* Input-
|
|
14861
|
+
/* Input-ABGOFENS.css */
|
|
14321
14862
|
/*
|
|
14322
14863
|
* The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
|
|
14323
14864
|
* ReadOnlyField.
|
|
@@ -14401,14 +14942,18 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14401
14942
|
* forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
|
|
14402
14943
|
* as a shadow disappears for exactly the readers who most need one.
|
|
14403
14944
|
*
|
|
14404
|
-
* It is
|
|
14405
|
-
*
|
|
14406
|
-
*
|
|
14407
|
-
*
|
|
14408
|
-
*
|
|
14409
|
-
*
|
|
14410
|
-
*
|
|
14411
|
-
*
|
|
14945
|
+
* It is TWO PIXELS FOR THE KEYBOARD AND ONE FOR A POINTER, laid over the
|
|
14946
|
+
* boundary. Two pixels is the area WCAG 2.2's focus appearance asks of an
|
|
14947
|
+
* indicator, and one pixel (the field's own hairline in the focus colour) was
|
|
14948
|
+
* half of it for every reader tabbing through a form. But at two pixels round
|
|
14949
|
+
* every box a caret landed in, a click into a title or a filter box drew a
|
|
14950
|
+
* heavy band round the one thing the reader was already looking at, so the
|
|
14951
|
+
* rule after this one narrows the ring where the document says the last move
|
|
14952
|
+
* was a pointer. Drawn over the boundary rather than outside it, a scroller
|
|
14953
|
+
* cannot clip it and the field does not grow a halo the moment a caret lands
|
|
14954
|
+
* in it, which is what a filter box in a toolbar of them did to the row it
|
|
14955
|
+
* sits in. Every boxed field in the package rings this way (`Input.test.tsx`
|
|
14956
|
+
* holds them to it).
|
|
14412
14957
|
*
|
|
14413
14958
|
* THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
|
|
14414
14959
|
* ring has not already said, and it is what cost the error state its own
|
|
@@ -14424,10 +14969,28 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14424
14969
|
* on a pointer press as well as on a tab.
|
|
14425
14970
|
*/
|
|
14426
14971
|
.crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
14427
|
-
outline:
|
|
14972
|
+
outline: 2px solid var(--color-focus);
|
|
14428
14973
|
outline-offset: -1px;
|
|
14429
14974
|
}
|
|
14430
14975
|
|
|
14976
|
+
/*
|
|
14977
|
+
* NARROWED FOR A POINTER. The ring above is the keyboard's: 2px, the area
|
|
14978
|
+
* WCAG 2.2's focus appearance asks of an indicator, drawn over the boundary
|
|
14979
|
+
* and one pixel into the box. A field matches :focus-visible on a click as
|
|
14980
|
+
* well, and a reader who put the caret there with a pointer is already looking
|
|
14981
|
+
* at it, so where the document says the last move was a pointer
|
|
14982
|
+
* (`data-crewlet-focus`, kept by `trackFocusModality`, which every field
|
|
14983
|
+
* starts) the ring is one pixel in the selected edge, the accent mixed toward
|
|
14984
|
+
* the page: a page that focuses its first field on load drew the focus colour
|
|
14985
|
+
* round it before anybody had touched a key. A refused field keeps its own
|
|
14986
|
+
* colour under a pointer too (below). A document that tracks nothing keeps
|
|
14987
|
+
* the keyboard's ring.
|
|
14988
|
+
*/
|
|
14989
|
+
:root[data-crewlet-focus='pointer'] .crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
14990
|
+
outline-width: 1px;
|
|
14991
|
+
outline-color: var(--color-border-selected);
|
|
14992
|
+
}
|
|
14993
|
+
|
|
14431
14994
|
.crewlet-input.is-error {
|
|
14432
14995
|
border-color: var(--color-feedback-danger);
|
|
14433
14996
|
}
|
|
@@ -14448,6 +15011,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14448
15011
|
outline-color: var(--color-feedback-danger);
|
|
14449
15012
|
}
|
|
14450
15013
|
|
|
15014
|
+
:root[data-crewlet-focus='pointer'] .crewlet-input.is-error:has(.crewlet-input__control:focus-visible) {
|
|
15015
|
+
outline-color: var(--color-feedback-danger);
|
|
15016
|
+
}
|
|
15017
|
+
|
|
14451
15018
|
.crewlet-input.is-disabled {
|
|
14452
15019
|
opacity: 0.6;
|
|
14453
15020
|
cursor: not-allowed;
|
|
@@ -14684,10 +15251,16 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14684
15251
|
on the control itself: a textarea is the field, with nothing wrapped round
|
|
14685
15252
|
it and nothing focusable inside it. */
|
|
14686
15253
|
.crewlet-textarea:focus-visible {
|
|
14687
|
-
outline:
|
|
15254
|
+
outline: 2px solid var(--color-focus);
|
|
14688
15255
|
outline-offset: -1px;
|
|
14689
15256
|
}
|
|
14690
15257
|
|
|
15258
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
15259
|
+
:root[data-crewlet-focus='pointer'] .crewlet-textarea:focus-visible {
|
|
15260
|
+
outline-width: 1px;
|
|
15261
|
+
outline-color: var(--color-border-selected);
|
|
15262
|
+
}
|
|
15263
|
+
|
|
14691
15264
|
.crewlet-textarea.is-error {
|
|
14692
15265
|
border-color: var(--color-feedback-danger);
|
|
14693
15266
|
}
|
|
@@ -14696,6 +15269,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14696
15269
|
outline-color: var(--color-feedback-danger);
|
|
14697
15270
|
}
|
|
14698
15271
|
|
|
15272
|
+
:root[data-crewlet-focus='pointer'] .crewlet-textarea.is-error:focus-visible {
|
|
15273
|
+
outline-color: var(--color-feedback-danger);
|
|
15274
|
+
}
|
|
15275
|
+
|
|
14699
15276
|
.crewlet-textarea.is-disabled {
|
|
14700
15277
|
opacity: 0.6;
|
|
14701
15278
|
cursor: not-allowed;
|
|
@@ -15145,7 +15722,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
15145
15722
|
}
|
|
15146
15723
|
|
|
15147
15724
|
|
|
15148
|
-
/* LayersList-
|
|
15725
|
+
/* LayersList-TBNF4XGL.css */
|
|
15149
15726
|
/*
|
|
15150
15727
|
* A canvas's list of layers (LayersList.tsx): a heading that stays, over one
|
|
15151
15728
|
* line per entry that scrolls on its own.
|
|
@@ -15216,13 +15793,26 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
15216
15793
|
color: var(--color-text-primary);
|
|
15217
15794
|
}
|
|
15218
15795
|
|
|
15219
|
-
/*
|
|
15220
|
-
|
|
15796
|
+
/*
|
|
15797
|
+
* THE PICKED ENTRY IS A SELECTION, drawn as the package draws a chosen
|
|
15798
|
+
* option: the selected fill under the primary ink, as a canvas's layers panel
|
|
15799
|
+
* marks the board picked on it. It used to take the accent rail a CURRENT row
|
|
15800
|
+
* takes (the outline's heading, the page in the rail), which says "you are
|
|
15801
|
+
* here" and beside a canvas read as a second selection ring. The rail's room
|
|
15802
|
+
* is still held, so nothing moves, and forced colours draw it in the system's
|
|
15803
|
+
* own selected colour, since they drop the fill.
|
|
15804
|
+
*/
|
|
15221
15805
|
.crewlet-layers-list__item[aria-current='true'] {
|
|
15222
|
-
|
|
15806
|
+
background: var(--color-surface-selected);
|
|
15223
15807
|
color: var(--color-text-primary);
|
|
15224
15808
|
}
|
|
15225
15809
|
|
|
15810
|
+
@media (forced-colors: active) {
|
|
15811
|
+
.crewlet-layers-list__item[aria-current='true'] {
|
|
15812
|
+
border-inline-start-color: Highlight;
|
|
15813
|
+
}
|
|
15814
|
+
}
|
|
15815
|
+
|
|
15226
15816
|
/* The ring lies inside the entry, where the scroller beside it cannot cut it. */
|
|
15227
15817
|
.crewlet-layers-list__item:focus-visible {
|
|
15228
15818
|
outline: 2px solid var(--color-focus);
|
|
@@ -16117,9 +16707,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16117
16707
|
}
|
|
16118
16708
|
|
|
16119
16709
|
|
|
16120
|
-
/* LivePreview-
|
|
16710
|
+
/* LivePreview-BROGKR4N.css */
|
|
16121
16711
|
/*
|
|
16122
|
-
* A live preview: the stand-in
|
|
16712
|
+
* A live preview: the stand-in, the still copy of what the content drew and
|
|
16713
|
+
* the live layer it is drawn in, stacked in that order in one box. The box
|
|
16123
16714
|
* takes its size from its parent (a card's preview area), so it fills it and
|
|
16124
16715
|
* clips whatever the content lays out past its edge.
|
|
16125
16716
|
*/
|
|
@@ -16137,9 +16728,43 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16137
16728
|
position: absolute;
|
|
16138
16729
|
inset: 0;
|
|
16139
16730
|
display: flex;
|
|
16140
|
-
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
16141
16731
|
}
|
|
16142
16732
|
|
|
16733
|
+
/* THE STILL COPY: static DOM over the stand-in, which it hides. A copy just
|
|
16734
|
+
taken fades in; one the preview was given back from its store is simply
|
|
16735
|
+
there, so a card scrolled or filtered back to is as it was. */
|
|
16736
|
+
.crewlet-live-preview__still {
|
|
16737
|
+
position: absolute;
|
|
16738
|
+
inset: 0;
|
|
16739
|
+
display: block;
|
|
16740
|
+
overflow: hidden;
|
|
16741
|
+
pointer-events: none;
|
|
16742
|
+
user-select: none;
|
|
16743
|
+
}
|
|
16744
|
+
|
|
16745
|
+
.crewlet-live-preview[data-fresh] > .crewlet-live-preview__still {
|
|
16746
|
+
animation: crewlet-live-preview-arrive var(--motion-duration-base) var(--motion-easing-out);
|
|
16747
|
+
}
|
|
16748
|
+
|
|
16749
|
+
@keyframes crewlet-live-preview-arrive {
|
|
16750
|
+
from {
|
|
16751
|
+
opacity: 0;
|
|
16752
|
+
}
|
|
16753
|
+
}
|
|
16754
|
+
|
|
16755
|
+
/* A COPY IS FROZEN: what it drew never moves, so nothing in it animates or
|
|
16756
|
+
transitions, whatever the content's own styles ask of the elements it
|
|
16757
|
+
copied (a skeleton's shimmer, a chart's entrance). */
|
|
16758
|
+
.crewlet-live-preview__still *,
|
|
16759
|
+
.crewlet-live-preview__still *::before,
|
|
16760
|
+
.crewlet-live-preview__still *::after {
|
|
16761
|
+
animation: none !important;
|
|
16762
|
+
transition: none !important;
|
|
16763
|
+
}
|
|
16764
|
+
|
|
16765
|
+
/* THE LIVE LAYER renders out of sight: content that is copied is never seen
|
|
16766
|
+
live, only its copy is. A frame's page is kept rather than copied, so a
|
|
16767
|
+
framed preview's live layer is what fades in once it has drawn. */
|
|
16143
16768
|
.crewlet-live-preview__live {
|
|
16144
16769
|
position: absolute;
|
|
16145
16770
|
inset: 0;
|
|
@@ -16148,9 +16773,16 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16148
16773
|
opacity: 0;
|
|
16149
16774
|
pointer-events: none;
|
|
16150
16775
|
user-select: none;
|
|
16776
|
+
}
|
|
16777
|
+
|
|
16778
|
+
.crewlet-live-preview[data-frame] > .crewlet-live-preview__live {
|
|
16151
16779
|
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
16152
16780
|
}
|
|
16153
16781
|
|
|
16782
|
+
.crewlet-live-preview[data-frame][data-state='ready'] > .crewlet-live-preview__live {
|
|
16783
|
+
opacity: 1;
|
|
16784
|
+
}
|
|
16785
|
+
|
|
16154
16786
|
/* LAID OUT AT ITS OWN SIZE from the top left corner, and scaled from there:
|
|
16155
16787
|
to the box's width, its top left the box's, or whole and centred. */
|
|
16156
16788
|
.crewlet-preview-scale {
|
|
@@ -16169,17 +16801,23 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16169
16801
|
transform-origin: 0 0;
|
|
16170
16802
|
}
|
|
16171
16803
|
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
|
|
16175
|
-
|
|
16804
|
+
/* WHAT IS UNDER A DRAWING is hidden only once it has faded in. Fading the
|
|
16805
|
+
stand-in out at the same time showed both at half strength halfway
|
|
16806
|
+
through: a double exposure. */
|
|
16176
16807
|
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
|
|
16177
|
-
|
|
16808
|
+
visibility: hidden;
|
|
16809
|
+
/* Visibility is discrete and stays visible for the whole of a transition
|
|
16810
|
+
to hidden, so this holds it exactly as long as the fade above. A copy
|
|
16811
|
+
given back from the store is ready from its first style, which runs no
|
|
16812
|
+
transition, so its stand-in is never shown at all. */
|
|
16813
|
+
transition: visibility var(--motion-duration-base) linear;
|
|
16178
16814
|
}
|
|
16179
16815
|
|
|
16180
16816
|
@media (prefers-reduced-motion: reduce) {
|
|
16181
|
-
.crewlet-live-
|
|
16182
|
-
.crewlet-live-preview__live
|
|
16817
|
+
.crewlet-live-preview[data-fresh] > .crewlet-live-preview__still,
|
|
16818
|
+
.crewlet-live-preview[data-frame] > .crewlet-live-preview__live,
|
|
16819
|
+
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
|
|
16820
|
+
animation: none;
|
|
16183
16821
|
transition: none;
|
|
16184
16822
|
}
|
|
16185
16823
|
}
|
|
@@ -21359,7 +21997,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21359
21997
|
}
|
|
21360
21998
|
|
|
21361
21999
|
|
|
21362
|
-
/* Select-
|
|
22000
|
+
/* Select-W3CHTZXP.css */
|
|
21363
22001
|
/*
|
|
21364
22002
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
21365
22003
|
*
|
|
@@ -21433,10 +22071,16 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21433
22071
|
* leave the other bare.
|
|
21434
22072
|
*/
|
|
21435
22073
|
.crewlet-select:focus-within {
|
|
21436
|
-
outline:
|
|
22074
|
+
outline: 2px solid var(--color-focus);
|
|
21437
22075
|
outline-offset: -1px;
|
|
21438
22076
|
}
|
|
21439
22077
|
|
|
22078
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
22079
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select:focus-within {
|
|
22080
|
+
outline-width: 1px;
|
|
22081
|
+
outline-color: var(--color-border-selected);
|
|
22082
|
+
}
|
|
22083
|
+
|
|
21440
22084
|
/*
|
|
21441
22085
|
* A FILTER THAT IS ON. The accent border says where the reader is and the
|
|
21442
22086
|
* accent INK says what it is set to. It used to be the accent FILL with the
|
|
@@ -21495,6 +22139,10 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21495
22139
|
outline-color: var(--color-feedback-danger);
|
|
21496
22140
|
}
|
|
21497
22141
|
|
|
22142
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select.is-error:focus-within {
|
|
22143
|
+
outline-color: var(--color-feedback-danger);
|
|
22144
|
+
}
|
|
22145
|
+
|
|
21498
22146
|
.crewlet-select.is-disabled {
|
|
21499
22147
|
opacity: 0.6;
|
|
21500
22148
|
cursor: not-allowed;
|
|
@@ -21788,10 +22436,16 @@ svg.crewlet-select__chevron {
|
|
|
21788
22436
|
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
21789
22437
|
*/
|
|
21790
22438
|
.crewlet-select__search:focus-within {
|
|
21791
|
-
outline:
|
|
22439
|
+
outline: 2px solid var(--color-focus);
|
|
21792
22440
|
outline-offset: -1px;
|
|
21793
22441
|
}
|
|
21794
22442
|
|
|
22443
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
22444
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select__search:focus-within {
|
|
22445
|
+
outline-width: 1px;
|
|
22446
|
+
outline-color: var(--color-border-selected);
|
|
22447
|
+
}
|
|
22448
|
+
|
|
21795
22449
|
.crewlet-select__search {
|
|
21796
22450
|
display: flex;
|
|
21797
22451
|
align-items: center;
|
|
@@ -23870,13 +24524,18 @@ svg.crewlet-select__chevron {
|
|
|
23870
24524
|
}
|
|
23871
24525
|
|
|
23872
24526
|
|
|
23873
|
-
/* SlideFilmstrip-
|
|
24527
|
+
/* SlideFilmstrip-PAT7P4OG.css */
|
|
23874
24528
|
/*
|
|
23875
24529
|
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage, or
|
|
23876
24530
|
* the row under it on a phone.
|
|
23877
24531
|
*
|
|
23878
|
-
* The selected slide is ringed
|
|
23879
|
-
*
|
|
24532
|
+
* The selected slide is ringed rather than filled, so its thumbnail still
|
|
24533
|
+
* shows the slide's own colours: the selected edge (a tint of the accent) on
|
|
24534
|
+
* the thumbnail's own line, the selected fill as a soft band outside it, and
|
|
24535
|
+
* its number in the accent ink. It was a 2px ring in the full accent, the
|
|
24536
|
+
* same weight and colour as the focus ring beside it, so the slide being
|
|
24537
|
+
* edited and the slide the keyboard was on could not be told apart. The
|
|
24538
|
+
* number is the mark that clears 3:1, so the state never rests on the tint.
|
|
23880
24539
|
*
|
|
23881
24540
|
* THE STRIP IS ITS OWN SCROLLER: a host bounds it (a column's max-height, a
|
|
23882
24541
|
* row's width) and the strip scrolls inside that, keeping the selected slide
|
|
@@ -23921,24 +24580,38 @@ svg.crewlet-select__chevron {
|
|
|
23921
24580
|
border: 0;
|
|
23922
24581
|
background: transparent;
|
|
23923
24582
|
border-radius: var(--radius-sm);
|
|
23924
|
-
|
|
24583
|
+
/* THE STRONG LINE AT REST: a deck's slides are mostly dark, and on the dark
|
|
24584
|
+
page the plain hairline sat within a few steps of both the page and the
|
|
24585
|
+
slide, so a strip of them had no edges at all. Under the pointer it takes
|
|
24586
|
+
the strong line's own hover step, so pointing still moves the edge. */
|
|
24587
|
+
outline: 1px solid var(--color-border-strong);
|
|
23925
24588
|
cursor: pointer;
|
|
23926
24589
|
overflow: hidden;
|
|
23927
24590
|
}
|
|
23928
24591
|
|
|
23929
24592
|
.crewlet-slide-filmstrip__thumb:hover {
|
|
23930
|
-
outline-color: var(--color-border-hover);
|
|
24593
|
+
outline-color: var(--color-border-strong-hover);
|
|
23931
24594
|
}
|
|
23932
24595
|
|
|
23933
24596
|
.crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__thumb {
|
|
23934
|
-
outline:
|
|
24597
|
+
outline-color: var(--color-border-selected);
|
|
24598
|
+
box-shadow: 0 0 0 3px var(--color-surface-selected);
|
|
24599
|
+
}
|
|
24600
|
+
|
|
24601
|
+
.crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__number {
|
|
24602
|
+
color: var(--color-brand-accent-ink);
|
|
24603
|
+
font-weight: var(--font-weight-semibold);
|
|
23935
24604
|
}
|
|
23936
24605
|
|
|
23937
24606
|
/* ONE RING, OVER THE THUMBNAIL'S OWN EDGE: the focus outline takes the place
|
|
23938
|
-
of the edge rather than standing off it as a second one
|
|
24607
|
+
of the edge rather than standing off it as a second one, and grows OUTWARD
|
|
24608
|
+
from it onto the strip's ground. It used to sit on the inset offset, inside
|
|
24609
|
+
the thumbnail, where a dark slide (most of a deck's themes) swallowed it:
|
|
24610
|
+
the focus colour measured close to the slide's own ground, and tabbing
|
|
24611
|
+
through the strip showed nothing at all. The list's own padding holds it. */
|
|
23939
24612
|
.crewlet-slide-filmstrip__thumb:focus-visible {
|
|
23940
24613
|
outline: 2px solid var(--color-focus);
|
|
23941
|
-
outline-offset:
|
|
24614
|
+
outline-offset: 0;
|
|
23942
24615
|
}
|
|
23943
24616
|
|
|
23944
24617
|
.crewlet-slide-filmstrip__item[data-hidden='true'] .crewlet-slide-stage {
|
|
@@ -24091,7 +24764,7 @@ svg.crewlet-select__chevron {
|
|
|
24091
24764
|
}
|
|
24092
24765
|
|
|
24093
24766
|
|
|
24094
|
-
/* SlideGrid-
|
|
24767
|
+
/* SlideGrid-FJA33DV4.css */
|
|
24095
24768
|
/*
|
|
24096
24769
|
* SlideGrid: every slide of a deck at once, by its outline's sections.
|
|
24097
24770
|
*/
|
|
@@ -24136,8 +24809,18 @@ svg.crewlet-select__chevron {
|
|
|
24136
24809
|
outline-color: var(--color-border-hover);
|
|
24137
24810
|
}
|
|
24138
24811
|
|
|
24812
|
+
/* THE CURRENT SLIDE, drawn as the filmstrip draws it: the selected edge on
|
|
24813
|
+
the slide's own line, the selected fill as a soft band outside it, and its
|
|
24814
|
+
number in the accent ink, the mark that clears 3:1. Never the full accent
|
|
24815
|
+
at 2px, which is the focus ring's weight and colour. */
|
|
24139
24816
|
.crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-stage {
|
|
24140
|
-
outline:
|
|
24817
|
+
outline-color: var(--color-border-selected);
|
|
24818
|
+
box-shadow: 0 0 0 3px var(--color-surface-selected);
|
|
24819
|
+
}
|
|
24820
|
+
|
|
24821
|
+
.crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-grid__number {
|
|
24822
|
+
color: var(--color-brand-accent-ink);
|
|
24823
|
+
font-weight: var(--font-weight-semibold);
|
|
24141
24824
|
}
|
|
24142
24825
|
|
|
24143
24826
|
/* ONE RING, round the whole card (its slide and its caption), on the inset
|
|
@@ -24236,7 +24919,7 @@ svg.crewlet-select__chevron {
|
|
|
24236
24919
|
}
|
|
24237
24920
|
|
|
24238
24921
|
|
|
24239
|
-
/* SlideStage-
|
|
24922
|
+
/* SlideStage-ZTTEQSS2.css */
|
|
24240
24923
|
/*
|
|
24241
24924
|
* SlideStage: a slide laid out at its authored size and scaled to its box.
|
|
24242
24925
|
*
|
|
@@ -24258,10 +24941,12 @@ svg.crewlet-select__chevron {
|
|
|
24258
24941
|
/* THE SLIDE'S OWN EDGE: the box is the slide (or, for a show in the page,
|
|
24259
24942
|
the room it was measured into), so its outline is the slide's edge, drawn over the slide's corners rather than outside them. A host that
|
|
24260
24943
|
marks a stage (selected, current) recolours this outline rather than adding
|
|
24261
|
-
a second line.
|
|
24944
|
+
a second line. It takes the STRONG border, not the default one: most decks
|
|
24945
|
+
are dark, and in the dark theme the default border is a step off the page,
|
|
24946
|
+
so a dark slide on a dark page had no edge at all. */
|
|
24262
24947
|
.crewlet-slide-stage--framed {
|
|
24263
24948
|
border-radius: var(--radius-sm);
|
|
24264
|
-
outline: 1px solid var(--color-border-
|
|
24949
|
+
outline: 1px solid var(--color-border-strong);
|
|
24265
24950
|
}
|
|
24266
24951
|
|
|
24267
24952
|
:fullscreen .crewlet-slide-stage--framed,
|
|
@@ -24310,7 +24995,7 @@ svg.crewlet-select__chevron {
|
|
|
24310
24995
|
}
|
|
24311
24996
|
|
|
24312
24997
|
|
|
24313
|
-
/* SourceEditor-
|
|
24998
|
+
/* SourceEditor-QAYE2JS6.css */
|
|
24314
24999
|
/*
|
|
24315
25000
|
* Source text written in place: a gutter of line numbers beside a real
|
|
24316
25001
|
* textarea, and the marks a checker placed drawn behind the text. The gutter,
|
|
@@ -24318,7 +25003,11 @@ svg.crewlet-select__chevron {
|
|
|
24318
25003
|
* so a number and a mark always sit on the line they name; the layers follow
|
|
24319
25004
|
* the field's scroll by a transform.
|
|
24320
25005
|
*
|
|
24321
|
-
* The BOX takes the focus ring
|
|
25006
|
+
* The BOX takes the focus ring every field draws (see Input.css): 2px in the
|
|
25007
|
+
* focus colour for the keyboard, one pixel of the selected edge where a
|
|
25008
|
+
* pointer put the caret. It used to recolour its border to the accent and lay
|
|
25009
|
+
* a 2px soft halo outside it, two highlights for one state, as the Composer's
|
|
25010
|
+
* did.
|
|
24322
25011
|
*/
|
|
24323
25012
|
.crewlet-source-editor {
|
|
24324
25013
|
--crewlet-source-inset: var(--spacing-2);
|
|
@@ -24334,18 +25023,21 @@ svg.crewlet-select__chevron {
|
|
|
24334
25023
|
font-family: var(--font-family-mono);
|
|
24335
25024
|
font-size: var(--font-size-xs);
|
|
24336
25025
|
line-height: var(--font-line-height-normal);
|
|
24337
|
-
transition:
|
|
24338
|
-
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
24339
|
-
box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
25026
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
24340
25027
|
}
|
|
24341
25028
|
|
|
24342
25029
|
.crewlet-source-editor:hover {
|
|
24343
25030
|
border-color: var(--color-border-strong-hover);
|
|
24344
25031
|
}
|
|
24345
25032
|
|
|
24346
|
-
.crewlet-source-editor:focus-
|
|
24347
|
-
|
|
24348
|
-
|
|
25033
|
+
.crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
|
|
25034
|
+
outline: 2px solid var(--color-focus);
|
|
25035
|
+
outline-offset: -1px;
|
|
25036
|
+
}
|
|
25037
|
+
|
|
25038
|
+
:root[data-crewlet-focus='pointer'] .crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
|
|
25039
|
+
outline-width: 1px;
|
|
25040
|
+
outline-color: var(--color-border-selected);
|
|
24349
25041
|
}
|
|
24350
25042
|
|
|
24351
25043
|
.crewlet-source-editor.is-fill {
|
|
@@ -24448,11 +25140,11 @@ svg.crewlet-select__chevron {
|
|
|
24448
25140
|
color: var(--color-text-tertiary);
|
|
24449
25141
|
}
|
|
24450
25142
|
|
|
24451
|
-
/* The ring is the box's, above
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
outline
|
|
25143
|
+
/* The ring is the box's, above, an outline that forced colours repaint, so
|
|
25144
|
+
the field inside draws none of its own. Stated at rest, as the Composer's
|
|
25145
|
+
field is. */
|
|
25146
|
+
.crewlet-source-editor .crewlet-source-editor__field {
|
|
25147
|
+
outline: none;
|
|
24456
25148
|
}
|
|
24457
25149
|
|
|
24458
25150
|
.crewlet-source-editor .crewlet-source-editor__field[readonly] {
|
|
@@ -26984,7 +27676,7 @@ b.crewlet-switcher__match {
|
|
|
26984
27676
|
}
|
|
26985
27677
|
|
|
26986
27678
|
|
|
26987
|
-
/* TagsInput-
|
|
27679
|
+
/* TagsInput-7EGBBXHS.css */
|
|
26988
27680
|
/*
|
|
26989
27681
|
* TagsInput: several values in one field.
|
|
26990
27682
|
*
|
|
@@ -27059,10 +27751,16 @@ b.crewlet-switcher__match {
|
|
|
27059
27751
|
* the whole reason they sit above the field instead of inside it.
|
|
27060
27752
|
*/
|
|
27061
27753
|
.crewlet-tags-input__box:focus-visible {
|
|
27062
|
-
outline:
|
|
27754
|
+
outline: 2px solid var(--color-focus);
|
|
27063
27755
|
outline-offset: -1px;
|
|
27064
27756
|
}
|
|
27065
27757
|
|
|
27758
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
27759
|
+
:root[data-crewlet-focus='pointer'] .crewlet-tags-input__box:focus-visible {
|
|
27760
|
+
outline-width: 1px;
|
|
27761
|
+
outline-color: var(--color-border-selected);
|
|
27762
|
+
}
|
|
27763
|
+
|
|
27066
27764
|
.crewlet-tags-input.is-disabled {
|
|
27067
27765
|
opacity: 0.6;
|
|
27068
27766
|
}
|
|
@@ -27323,7 +28021,7 @@ b.crewlet-switcher__match {
|
|
|
27323
28021
|
}
|
|
27324
28022
|
|
|
27325
28023
|
|
|
27326
|
-
/* ThemeGallery-
|
|
28024
|
+
/* ThemeGallery-X35Y25EX.css */
|
|
27327
28025
|
/*
|
|
27328
28026
|
* The gallery of themes: each group's heading over a grid of cards.
|
|
27329
28027
|
*
|
|
@@ -27359,8 +28057,15 @@ b.crewlet-switcher__match {
|
|
|
27359
28057
|
|
|
27360
28058
|
/*
|
|
27361
28059
|
* A CARD IS ITS BORDER. Resting, the plain hairline; under the pointer, the
|
|
27362
|
-
* strong one; chosen, the
|
|
27363
|
-
* the
|
|
28060
|
+
* strong one; chosen, the selected edge (the accent mixed toward the card)
|
|
28061
|
+
* over the selected fill, with a check beside the name. One line round the
|
|
28062
|
+
* card in every state, so the chosen card is never a card inside a frame.
|
|
28063
|
+
*
|
|
28064
|
+
* THE CHOSEN CARD IS CALM ON PURPOSE. It was the full accent, which on a grid
|
|
28065
|
+
* of six read as the loudest edge on the page and as a second focus ring. The
|
|
28066
|
+
* tint and the fill say which card is on at a glance; the check says it at
|
|
28067
|
+
* the 3:1 a state mark clears, so the state never rests on the tint alone;
|
|
28068
|
+
* and the focus ring stays the one 2px accent line, for the keyboard only.
|
|
27364
28069
|
*/
|
|
27365
28070
|
.crewlet-theme-gallery__card {
|
|
27366
28071
|
display: flex;
|
|
@@ -27377,14 +28082,15 @@ b.crewlet-switcher__match {
|
|
|
27377
28082
|
cursor: pointer;
|
|
27378
28083
|
}
|
|
27379
28084
|
|
|
27380
|
-
/* Not on the chosen card: under the pointer it keeps
|
|
27381
|
-
card that says "this one" would stop saying it while it is
|
|
28085
|
+
/* Not on the chosen card: under the pointer it keeps its selected edge, or the
|
|
28086
|
+
one card that says "this one" would stop saying it while it is pointed at. */
|
|
27382
28087
|
.crewlet-theme-gallery__card:hover:not(:disabled):not(.is-chosen) {
|
|
27383
28088
|
border-color: var(--color-border-strong);
|
|
27384
28089
|
}
|
|
27385
28090
|
|
|
27386
28091
|
.crewlet-theme-gallery__card.is-chosen {
|
|
27387
|
-
border-color: var(--color-
|
|
28092
|
+
border-color: var(--color-border-selected);
|
|
28093
|
+
background: var(--color-surface-selected);
|
|
27388
28094
|
}
|
|
27389
28095
|
|
|
27390
28096
|
/* The ring is drawn OVER the border, inset by its width, never a second line outside it. */
|
|
@@ -27398,6 +28104,19 @@ b.crewlet-switcher__match {
|
|
|
27398
28104
|
opacity: 0.5;
|
|
27399
28105
|
}
|
|
27400
28106
|
|
|
28107
|
+
.crewlet-theme-gallery__label {
|
|
28108
|
+
display: flex;
|
|
28109
|
+
align-items: center;
|
|
28110
|
+
gap: var(--spacing-1);
|
|
28111
|
+
min-width: 0;
|
|
28112
|
+
}
|
|
28113
|
+
|
|
28114
|
+
.crewlet-theme-gallery__check {
|
|
28115
|
+
flex: none;
|
|
28116
|
+
margin-inline-start: auto;
|
|
28117
|
+
color: var(--color-brand-accent-ink);
|
|
28118
|
+
}
|
|
28119
|
+
|
|
27401
28120
|
.crewlet-theme-gallery__name {
|
|
27402
28121
|
overflow: hidden;
|
|
27403
28122
|
font-size: var(--font-size-xs);
|
|
@@ -27687,7 +28406,7 @@ b.crewlet-switcher__match {
|
|
|
27687
28406
|
}
|
|
27688
28407
|
|
|
27689
28408
|
|
|
27690
|
-
/* TimeWindowPicker-
|
|
28409
|
+
/* TimeWindowPicker-DEFDV77Z.css */
|
|
27691
28410
|
/*
|
|
27692
28411
|
* TimeWindowPicker: one trigger over one panel.
|
|
27693
28412
|
*
|
|
@@ -27737,10 +28456,17 @@ b.crewlet-switcher__match {
|
|
|
27737
28456
|
*/
|
|
27738
28457
|
.crewlet-time-window:focus-visible,
|
|
27739
28458
|
.crewlet-time-window.is-open {
|
|
27740
|
-
outline:
|
|
28459
|
+
outline: 2px solid var(--color-focus);
|
|
27741
28460
|
outline-offset: -1px;
|
|
27742
28461
|
}
|
|
27743
28462
|
|
|
28463
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
28464
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window:focus-visible,
|
|
28465
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window.is-open {
|
|
28466
|
+
outline-width: 1px;
|
|
28467
|
+
outline-color: var(--color-border-selected);
|
|
28468
|
+
}
|
|
28469
|
+
|
|
27744
28470
|
.crewlet-time-window.is-disabled,
|
|
27745
28471
|
.crewlet-time-window:disabled {
|
|
27746
28472
|
opacity: 0.55;
|
|
@@ -28008,10 +28734,16 @@ svg.crewlet-time-window__tick {
|
|
|
28008
28734
|
* own boundary (see Input.css), keyed on the box's own input.
|
|
28009
28735
|
*/
|
|
28010
28736
|
.crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
|
|
28011
|
-
outline:
|
|
28737
|
+
outline: 2px solid var(--color-focus);
|
|
28012
28738
|
outline-offset: -1px;
|
|
28013
28739
|
}
|
|
28014
28740
|
|
|
28741
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
28742
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
|
|
28743
|
+
outline-width: 1px;
|
|
28744
|
+
outline-color: var(--color-border-selected);
|
|
28745
|
+
}
|
|
28746
|
+
|
|
28015
28747
|
.crewlet-time-window__masked-input {
|
|
28016
28748
|
min-width: 0;
|
|
28017
28749
|
/* The `size` attribute the component sets is what holds the width open in
|