@crewlethq/ui 0.4.4 → 0.5.1
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 +888 -24
- package/dist/Accordion/index.js +2 -2
- package/dist/AddPill/index.js +1 -1
- package/dist/{AddPill-DFWXYLIQ.css → AddPill-IJQYCY6C.css} +9 -0
- package/dist/AppShell/AppShell.d.ts +26 -5
- package/dist/AppShell/index.js +3 -3
- package/dist/{AppShell-NVE6LHNI.css → AppShell-XARELGIH.css} +178 -25
- package/dist/Avatar/Avatar.d.ts +85 -40
- package/dist/Avatar/AvatarStack.d.ts +76 -0
- package/dist/Avatar/index.d.ts +5 -2
- package/dist/Avatar/index.js +1 -1
- package/dist/Avatar-XID7Z74C.css +200 -0
- package/dist/AvatarStack-GEJBNV7E.css +72 -0
- package/dist/BrandLockup/index.js +1 -1
- package/dist/{BrandLockup-6ISDEHPJ.css → BrandLockup-JKGXFCZF.css} +25 -19
- package/dist/Button/Button.d.ts +7 -2
- package/dist/Button/index.js +1 -1
- package/dist/{Button-D4J6B4MA.css → Button-X4B2TJAQ.css} +50 -19
- package/dist/Callout/index.js +1 -1
- package/dist/Canvas/index.js +4 -4
- package/dist/Card/Card.d.ts +9 -5
- package/dist/Card/index.js +1 -1
- package/dist/{Card-RLR254LD.css → Card-GLP7SUV6.css} +25 -18
- package/dist/Charts/BarList.d.ts +18 -1
- package/dist/Charts/ChartTooltip.d.ts +68 -0
- package/dist/Charts/StackedBar.d.ts +25 -7
- package/dist/Charts/StackedColumns.d.ts +112 -0
- package/dist/Charts/TimeSeries.d.ts +33 -2
- package/dist/Charts/dataColor.d.ts +22 -14
- package/dist/Charts/index.d.ts +6 -0
- package/dist/Charts/index.js +1 -1
- package/dist/Charts/useChartHover.d.ts +56 -0
- package/dist/Charts-B3YEF7R4.css +742 -0
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-VGW26YLQ.css → Checkbox-BOXQ747I.css} +2 -2
- package/dist/CodeBlock/index.js +4 -4
- package/dist/Combobox/index.js +5 -5
- package/dist/CommandPalette/CommandPalette.d.ts +97 -6
- package/dist/CommandPalette/index.d.ts +1 -1
- package/dist/CommandPalette/index.js +9 -7
- package/dist/CommandPalette-C5AMKGN2.css +259 -0
- package/dist/Copyable/index.js +3 -3
- package/dist/DataTable/index.js +7 -7
- package/dist/{DataTable-37UWTRN6.css → DataTable-OLHPF7D4.css} +35 -38
- package/dist/DataView/index.js +16 -16
- package/dist/{DataView-256YF32J.css → DataView-N6JX464S.css} +5 -4
- package/dist/DateTimePicker/index.js +5 -5
- package/dist/DiffList/index.js +1 -1
- package/dist/Disclosure/index.js +2 -2
- package/dist/EntityChip/EntityChip.d.ts +9 -12
- package/dist/EntityChip/index.d.ts +1 -1
- package/dist/EntityChip/index.js +2 -2
- package/dist/ErrorBoundary/index.js +2 -2
- package/dist/{ErrorBoundary-ME36CQTA.css → ErrorBoundary-U2PA3LY2.css} +4 -4
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-VQGNMJDI.css → IconButton-TVEUWK6L.css} +2 -2
- package/dist/ImageUpload/ImageUpload.d.ts +10 -7
- package/dist/ImageUpload/index.js +2 -2
- package/dist/{ImageUpload-HKFIZR6D.css → ImageUpload-YCHJMUGX.css} +24 -10
- package/dist/Input/index.js +2 -2
- package/dist/Kbd/Kbd.d.ts +14 -4
- package/dist/Kbd/index.js +1 -1
- package/dist/Kbd-JPLDVJIP.css +71 -0
- package/dist/Layer/index.js +1 -1
- package/dist/Link/index.js +1 -1
- package/dist/List/index.js +1 -1
- package/dist/{List-XTHESXLR.css → List-MYJIV6MP.css} +12 -2
- package/dist/ListInput/index.js +6 -6
- package/dist/Listbox/index.js +2 -2
- package/dist/Listbox/useListbox.d.ts +2 -0
- package/dist/{Listbox-ZXYYNN6U.css → Listbox-6WJNJQVQ.css} +32 -7
- package/dist/Menu/index.js +4 -4
- package/dist/Meter/Meter.d.ts +103 -16
- package/dist/Meter/index.d.ts +2 -2
- package/dist/Meter/index.js +1 -1
- package/dist/{Meter-SKOOXQBC.css → Meter-5VCSFMZW.css} +46 -7
- package/dist/Modal/index.js +4 -4
- package/dist/{Modal-XYQJ4BL6.css → Modal-JAYBS2KS.css} +13 -4
- package/dist/OrgLabel/OrgLabel.d.ts +60 -24
- package/dist/OrgLabel/index.d.ts +1 -1
- package/dist/OrgLabel/index.js +2 -1
- package/dist/{OrgLabel-D7U6QJZD.css → OrgLabel-CR233G34.css} +9 -18
- package/dist/OrgNode/index.js +3 -2
- package/dist/OrgTable/OrgTable.d.ts +2 -2
- package/dist/OrgTable/index.js +8 -7
- package/dist/Popover/index.js +2 -2
- package/dist/PricingCard/index.js +3 -3
- package/dist/{PricingCard-JFI7RYXP.css → PricingCard-7EFXRSD2.css} +4 -5
- package/dist/SearchTrigger/SearchTrigger.d.ts +23 -4
- package/dist/SearchTrigger/index.d.ts +1 -1
- package/dist/SearchTrigger/index.js +1 -1
- package/dist/SearchTrigger-Z5D4AAY7.css +112 -0
- package/dist/SegmentedControl/index.js +2 -2
- package/dist/SegmentedMeter/SegmentedMeter.d.ts +107 -0
- package/dist/SegmentedMeter/index.d.ts +3 -0
- package/dist/SegmentedMeter/index.js +2 -0
- package/dist/SegmentedMeter-KQNML2TW.css +109 -0
- package/dist/Select/index.js +3 -3
- package/dist/Shortcut/index.js +2 -2
- package/dist/SidebarNav/SidebarNav.d.ts +85 -25
- package/dist/SidebarNav/index.d.ts +1 -1
- package/dist/SidebarNav/index.js +1 -1
- package/dist/SidebarNav-X5NLZNWA.css +424 -0
- package/dist/StatCard/StatCard.d.ts +59 -12
- package/dist/StatCard/index.d.ts +1 -1
- package/dist/StatCard/index.js +1 -1
- package/dist/StatCard-KPAFD4E2.css +204 -0
- package/dist/StatGroup/index.js +1 -1
- package/dist/{StatGroup-TGB6AEKM.css → StatGroup-HVG6O62W.css} +8 -9
- package/dist/StatusDot/StatusDot.d.ts +24 -6
- package/dist/StatusDot/index.js +1 -1
- package/dist/StatusDot-7OMCQCZF.css +186 -0
- package/dist/Stepper/Stepper.d.ts +78 -0
- package/dist/Stepper/index.d.ts +3 -0
- package/dist/Stepper/index.js +4 -0
- package/dist/Stepper-HW4JM3YH.css +176 -0
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-MJ2E3VPK.css → Tabs-XCNPHA7B.css} +46 -26
- package/dist/Tag/Tag.d.ts +29 -22
- package/dist/Tag/index.js +2 -2
- package/dist/{Tag-VNZEYLB6.css → Tag-GBE7LQJP.css} +82 -83
- package/dist/TagsInput/index.js +7 -7
- package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +53 -21
- package/dist/ThemeSwitcher/index.d.ts +3 -3
- package/dist/ThemeSwitcher/index.js +4 -3
- package/dist/ThemeSwitcher/preferences.d.ts +19 -5
- package/dist/ThemeToggle/ThemeToggle.d.ts +40 -0
- package/dist/ThemeToggle/index.d.ts +2 -0
- package/dist/ThemeToggle/index.js +5 -0
- package/dist/TimeWindowPicker/index.js +8 -8
- package/dist/Toaster/index.js +2 -2
- package/dist/Toolbar/index.js +2 -2
- package/dist/{Toolbar-IP6LXN45.css → Toolbar-HUOSMNTH.css} +3 -1
- package/dist/Tooltip/index.js +2 -2
- package/dist/Tree/index.d.ts +2 -2
- package/dist/Tree/index.js +1 -1
- package/dist/Tree/layout.d.ts +103 -28
- package/dist/TreeCanvas/TreeCanvas.d.ts +60 -14
- package/dist/TreeCanvas/index.d.ts +1 -1
- package/dist/TreeCanvas/index.js +6 -6
- package/dist/TreeCanvas/motion.d.ts +3 -2
- package/dist/{TreeCanvas-WBNQPHC7.css → TreeCanvas-HVOV4SQN.css} +154 -30
- package/dist/TreeGrid/index.js +4 -4
- package/dist/{chunk-F6OE5FH3.js → chunk-2FPENTCF.js} +1 -1
- package/dist/chunk-4AK52VHB.js +88 -0
- package/dist/{chunk-7EM5T4ME.js → chunk-4IQD3HUQ.js} +2 -2
- package/dist/{chunk-YODNNSZL.js → chunk-4PZ6FJKW.js} +43 -13
- package/dist/{chunk-F27EPQ7D.js → chunk-4UQ7SMPK.js} +1 -1
- package/dist/chunk-5QWIJSQM.js +73 -0
- package/dist/{chunk-KIC7BZYJ.js → chunk-6MU7HNB4.js} +6 -5
- package/dist/{chunk-S2XHHEW4.js → chunk-74KMX7YH.js} +4 -4
- package/dist/{chunk-WNI2WSJF.js → chunk-7KBNFFM3.js} +1 -1
- package/dist/{chunk-EFSG7HNU.js → chunk-AUS5FNQE.js} +1 -1
- package/dist/{chunk-CMEE37QJ.js → chunk-BMYPGGPV.js} +4 -4
- package/dist/{chunk-H4FBTAYS.js → chunk-BNCCEER3.js} +8 -8
- package/dist/chunk-C5WJUZVR.js +56 -0
- package/dist/{chunk-5WS6L6FA.js → chunk-CAIHUYXV.js} +9 -9
- package/dist/{chunk-5KSRXHOW.js → chunk-CQY5NTRS.js} +1 -1
- package/dist/{chunk-MW356IVK.js → chunk-D6EVJUGU.js} +2 -2
- package/dist/{chunk-7PEFUMQJ.js → chunk-DHPUMOTX.js} +2 -2
- package/dist/{chunk-HZ5XZNPS.js → chunk-DS2C73RJ.js} +3 -3
- package/dist/{chunk-GKHAKGOF.js → chunk-DSUY5F4E.js} +3 -3
- package/dist/{chunk-Q4ZPPART.js → chunk-EFYPAJT3.js} +3 -3
- package/dist/{chunk-PATXSJGR.js → chunk-ERVO6OUF.js} +17 -17
- package/dist/{chunk-BZYDZBAN.js → chunk-ETYEBKR4.js} +3 -3
- package/dist/{chunk-CC67MUUO.js → chunk-FD5UEN6X.js} +30 -30
- package/dist/{chunk-5SDBMKUO.js → chunk-FIFNP6PL.js} +3 -3
- package/dist/{chunk-7HPRF5XN.js → chunk-FUF52K7E.js} +98 -16
- package/dist/{chunk-5KPQ6D7N.js → chunk-FZVJDJFN.js} +2 -2
- package/dist/chunk-IA232OTU.js +156 -0
- package/dist/{chunk-2EOKFKHX.js → chunk-IG27QX7Q.js} +7 -7
- package/dist/chunk-IKB6HFGK.js +55 -0
- package/dist/{chunk-T43A26SD.js → chunk-IPVQKAHO.js} +6 -6
- package/dist/{chunk-3EYF6HKB.js → chunk-IVFJD7WY.js} +28 -9
- package/dist/{chunk-XJWXPRSK.js → chunk-JGRNTBF2.js} +11 -11
- package/dist/chunk-K3OWD7BJ.js +121 -0
- package/dist/{chunk-6KCO2D5C.js → chunk-KD4H66L6.js} +7 -20
- package/dist/{chunk-SFZOKW2G.js → chunk-KJ34ZBBI.js} +8 -3
- package/dist/{chunk-AQTBF4EB.js → chunk-LFHCXZO5.js} +5 -5
- package/dist/{chunk-LWKJQTOM.js → chunk-MICH6QSJ.js} +1 -1
- package/dist/chunk-N3DPO6HG.js +226 -0
- package/dist/{chunk-S4GZWSKR.js → chunk-OM5E3TTK.js} +1 -1
- package/dist/{chunk-3QRYCPXQ.js → chunk-OPKIKM35.js} +6 -6
- package/dist/{chunk-5EKIWVOR.js → chunk-PGRPNDWM.js} +2 -2
- package/dist/{chunk-FSOW3ARP.js → chunk-PQNILU27.js} +9 -9
- package/dist/{chunk-QNCVHRZL.js → chunk-QVAFL2LE.js} +1 -1
- package/dist/{chunk-Q3B66TJM.js → chunk-QY7UU5ZB.js} +1 -1
- package/dist/{chunk-ITHXJHBB.js → chunk-R25RGPUB.js} +1 -0
- package/dist/{chunk-KLJCCMF3.js → chunk-R6735B37.js} +2 -2
- package/dist/{chunk-3ZP55QZE.js → chunk-R6FBDTP3.js} +4 -4
- package/dist/{chunk-7FZ53WDJ.js → chunk-RIAZM6L3.js} +1 -1
- package/dist/chunk-RJM4QCGG.js +550 -0
- package/dist/{chunk-NTRZGNEX.js → chunk-S3BCVWTU.js} +215 -46
- package/dist/chunk-S7KW47IQ.js +121 -0
- package/dist/{chunk-KNYYCWMK.js → chunk-SJQ546ID.js} +4 -4
- package/dist/{chunk-D35VTV2Z.js → chunk-SV7QAONL.js} +1 -1
- package/dist/{chunk-IAJLHVUA.js → chunk-TIWAHZZ6.js} +1 -1
- package/dist/{chunk-2PRH365R.js → chunk-UA7O3KKJ.js} +1 -1
- package/dist/{chunk-NPZY6YYL.js → chunk-UG5ZMAXW.js} +6 -6
- package/dist/{chunk-NDCATSW7.js → chunk-V34H2YCY.js} +1 -1
- package/dist/chunk-WIATRXEJ.js +22 -0
- package/dist/{chunk-5C5YMZQU.js → chunk-WOFOMTGB.js} +16 -10
- package/dist/{chunk-QYOFACSP.js → chunk-WSOFKOLP.js} +3 -3
- package/dist/{chunk-MNAXYY3R.js → chunk-WUVZDFHS.js} +31 -11
- package/dist/{chunk-DB2VDLVR.js → chunk-YIMOT5OO.js} +10 -10
- package/dist/{chunk-2ZQMA2WB.js → chunk-ZPSOF6VL.js} +2 -2
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.js +70 -66
- package/dist/index.js +70 -66
- package/dist/styles.css +2538 -741
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/tone.d.ts +7 -12
- package/package.json +4 -4
- package/scripts/check-css-literals.mjs +159 -23
- package/scripts/check-css-variables.mjs +5 -3
- package/scripts/css-source.mjs +97 -5
- package/dist/Avatar-P2KRQM2B.css +0 -156
- package/dist/Charts-D7G2BSXH.css +0 -277
- package/dist/CommandPalette-CSJDUCQA.css +0 -115
- package/dist/Kbd-W66MXQI5.css +0 -61
- package/dist/SearchTrigger-QXOYAUUY.css +0 -79
- package/dist/SidebarNav-QGSFKZYA.css +0 -319
- package/dist/StatCard-KYPKZUWX.css +0 -111
- package/dist/StatusDot-HA2L2FSX.css +0 -84
- package/dist/chunk-22O7LAW2.js +0 -41
- package/dist/chunk-AJNCATWZ.js +0 -144
- package/dist/chunk-F4PJZ4ED.js +0 -245
- package/dist/chunk-PNFASD6F.js +0 -98
- package/dist/chunk-PZSWF74H.js +0 -15
- package/dist/chunk-R66KLW7S.js +0 -143
- /package/dist/{chunk-ZCR6YGQ4.js → chunk-PKIN4IMB.js} +0 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The stepper: where a sequence has got to (Stepper.tsx).
|
|
3
|
+
*
|
|
4
|
+
* THE APPROVED DESIGN'S STEP ROW. Each step is a 20px pill inside the default
|
|
5
|
+
* hairline, the 11px step at the medium weight, 8px inside each end and 5px
|
|
6
|
+
* between a mark and the word; two pills are joined by a 10px rule in the
|
|
7
|
+
* strong hairline's colour with 6px either side of it. A finished step is the
|
|
8
|
+
* secondary ink behind a check, the current step its tone's soft tint under
|
|
9
|
+
* its ink behind its dot, and a step still to come the tertiary ink.
|
|
10
|
+
*
|
|
11
|
+
* EVERY INK IS A MEASURED PAIR. The secondary and tertiary steps are held to
|
|
12
|
+
* 4.5:1 on every opaque rung, and each tone's ink to 4.5:1 on its own soft
|
|
13
|
+
* tint over every rung, by the palette suite in @crewlethq/tokens; the pill
|
|
14
|
+
* draws nothing else. The current pill is the design's `work-soft` under
|
|
15
|
+
* `work-ink` in the default tone, and a Tag's colours in every tone, which is
|
|
16
|
+
* what a chip naming a state is in this kit.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
.crewlet-stepper {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
align-items: center;
|
|
23
|
+
/* The design's 6px between a pill and the rule beside it: a step and a half. */
|
|
24
|
+
gap: calc(var(--spacing-1) * 1.5);
|
|
25
|
+
min-width: 0;
|
|
26
|
+
margin: 0;
|
|
27
|
+
padding: 0;
|
|
28
|
+
list-style: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.crewlet-stepper__step {
|
|
32
|
+
display: inline-flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: calc(var(--spacing-1) * 1.5);
|
|
35
|
+
min-width: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
* THE RULE BETWEEN TWO STEPS is drawn by the second of them, so a sequence of
|
|
40
|
+
* one draws none and nothing trails the last. A pseudo-element, because it is
|
|
41
|
+
* furniture: it carries nothing a reader has to be told, and the list already
|
|
42
|
+
* says the steps are in order. 10px by a hairline, the measure of this one
|
|
43
|
+
* mark, and fixed at every density as a hairline is.
|
|
44
|
+
*/
|
|
45
|
+
.crewlet-stepper__step + .crewlet-stepper__step::before {
|
|
46
|
+
content: '';
|
|
47
|
+
flex: none;
|
|
48
|
+
width: 10px;
|
|
49
|
+
height: 1px;
|
|
50
|
+
background: var(--color-border-strong);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.crewlet-stepper__chip {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
/* The design's 5px between the check or the dot and the word. */
|
|
57
|
+
gap: calc(var(--spacing-1) * 1.25);
|
|
58
|
+
box-sizing: border-box;
|
|
59
|
+
/* The design's 20px pill, which follows the density with every other step
|
|
60
|
+
height in the kit. It labels and takes no press, so the 24px target floor
|
|
61
|
+
is not its to clear. */
|
|
62
|
+
height: calc(20px * var(--density, 1));
|
|
63
|
+
max-width: 100%;
|
|
64
|
+
padding: 0 var(--spacing-2);
|
|
65
|
+
border: 1px solid var(--color-border-default);
|
|
66
|
+
border-radius: var(--radius-pill);
|
|
67
|
+
color: var(--color-text-tertiary);
|
|
68
|
+
font-family: var(--font-family-sans);
|
|
69
|
+
font-size: var(--font-size-2xs);
|
|
70
|
+
font-weight: var(--font-weight-medium);
|
|
71
|
+
line-height: 1;
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.crewlet-stepper__label {
|
|
76
|
+
min-width: 0;
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
text-overflow: ellipsis;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.crewlet-stepper__check {
|
|
82
|
+
flex: none;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.crewlet-stepper__step--done > .crewlet-stepper__chip {
|
|
86
|
+
color: var(--color-text-secondary);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* THE CURRENT STEP, in its tone. The hairline goes transparent rather than
|
|
91
|
+
* away, so the pill keeps its box and the row does not move by a pixel as the
|
|
92
|
+
* current step advances along it, and so forced-colors mode, which draws a
|
|
93
|
+
* transparent border in the system's own colour, still outlines it.
|
|
94
|
+
*/
|
|
95
|
+
.crewlet-stepper--info .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
96
|
+
border-color: transparent;
|
|
97
|
+
background: var(--color-feedback-info-soft);
|
|
98
|
+
color: var(--color-feedback-info-ink);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.crewlet-stepper--success .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
102
|
+
border-color: transparent;
|
|
103
|
+
background: var(--color-feedback-success-soft);
|
|
104
|
+
color: var(--color-feedback-success-ink);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.crewlet-stepper--warning .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
108
|
+
border-color: transparent;
|
|
109
|
+
background: var(--color-feedback-warning-soft);
|
|
110
|
+
color: var(--color-feedback-warning-ink);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.crewlet-stepper--danger .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
114
|
+
border-color: transparent;
|
|
115
|
+
background: var(--color-feedback-danger-soft);
|
|
116
|
+
color: var(--color-feedback-danger-ink);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.crewlet-stepper--brand .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
120
|
+
border-color: transparent;
|
|
121
|
+
background: var(--color-brand-accent-soft);
|
|
122
|
+
color: var(--color-brand-accent-ink);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/*
|
|
126
|
+
* INSIDE THE PILL THE DOT IS THE PILL'S OWN INK, as a Tag's is, and for the
|
|
127
|
+
* Tag's reason: StatusDot paints the fill step, measured as a mark on the
|
|
128
|
+
* opaque rungs, and here it stands on the tone's soft tint instead, where
|
|
129
|
+
* nothing measures it. The ink is the step that IS measured on that tint, at
|
|
130
|
+
* 4.5:1, and the colour of the word beside it. A pulsing dot keeps
|
|
131
|
+
* StatusDot's halo, the same soft step drawn once more over the pill, which
|
|
132
|
+
* stands dE 3.92 off it at the least (the light warning pill on the frame).
|
|
133
|
+
*
|
|
134
|
+
* Two classes deep, so it beats StatusDot's own tone rule whichever order the
|
|
135
|
+
* bundle writes the two files in.
|
|
136
|
+
*/
|
|
137
|
+
.crewlet-stepper .crewlet-stepper__dot {
|
|
138
|
+
background: currentColor;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/*
|
|
142
|
+
* FORCED COLORS repaints every background to Canvas, which takes the current
|
|
143
|
+
* step's tint and its dot, so the one step the row is about would read like
|
|
144
|
+
* any other. The current pill is drawn as the system draws a selection,
|
|
145
|
+
* HighlightText on Highlight, with its dot in the same ink, and the rule
|
|
146
|
+
* between two steps in GrayText; the chips' hairlines are borders, which the
|
|
147
|
+
* mode keeps in its own colour.
|
|
148
|
+
*
|
|
149
|
+
* THE CURRENT PILL OPTS OUT OF THE ADJUSTMENT, which is safe only because
|
|
150
|
+
* every colour it draws in that mode is a system colour. Left to it, Chromium
|
|
151
|
+
* paints a Canvas backplate behind every run of text, and HighlightText is
|
|
152
|
+
* written for Highlight, not for Canvas: in a dark high-contrast theme the
|
|
153
|
+
* step's words drew black on black (measured in Chromium 153 with the mode
|
|
154
|
+
* emulated). Opting out also keeps shadows, so the pulsing dot's halo, which
|
|
155
|
+
* is the tone's soft tint and no system colour, is held still inside it.
|
|
156
|
+
*/
|
|
157
|
+
@media (forced-colors: active) {
|
|
158
|
+
.crewlet-stepper .crewlet-stepper__step--current > .crewlet-stepper__chip {
|
|
159
|
+
forced-color-adjust: none;
|
|
160
|
+
border-color: Highlight;
|
|
161
|
+
background: Highlight;
|
|
162
|
+
color: HighlightText;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.crewlet-stepper .crewlet-stepper__dot {
|
|
166
|
+
background: HighlightText;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.crewlet-stepper .crewlet-stepper__dot.is-pulsing::after {
|
|
170
|
+
animation: none;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.crewlet-stepper__step + .crewlet-stepper__step::before {
|
|
174
|
+
background: GrayText;
|
|
175
|
+
}
|
|
176
|
+
}
|
package/dist/Tabs/index.js
CHANGED
|
@@ -84,21 +84,29 @@
|
|
|
84
84
|
|
|
85
85
|
/* ─── Pill (segmented control) ────────────────────────────────── */
|
|
86
86
|
/*
|
|
87
|
-
* A WELL WITH CHIPS IN IT, not a panel with buttons in it
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
87
|
+
* A WELL WITH CHIPS IN IT, not a panel with buttons in it: the approved
|
|
88
|
+
* design's segmented control. The well is the RAISED rung inside the default
|
|
89
|
+
* hairline, and the chip that is on is the CARD's own ground, lifted by a
|
|
90
|
+
* hairline and a small shadow, so it is found by being the one thing that
|
|
91
|
+
* matches the panel the row sits on.
|
|
92
|
+
*
|
|
93
|
+
* A RUNG AND A HAIRLINE, NOT A TRANSLUCENT WELL. The inset overlay it used to
|
|
94
|
+
* be stands almost nowhere off a card, so the well had no extent and the
|
|
95
|
+
* chips floated; the raised rung is held a visible step above the card by the
|
|
96
|
+
* palette suite, and the hairline finds it on any other ground.
|
|
91
97
|
*
|
|
92
98
|
* The inset is 2px, which is smaller than the scale's first step on purpose:
|
|
93
|
-
* it is the gap a chip needs to read as sitting IN the well
|
|
94
|
-
*
|
|
99
|
+
* it is the gap a chip needs to read as sitting IN the well. With the 1px
|
|
100
|
+
* boundary it is three pixels a side, and a 24px chip makes a 30px row: the
|
|
101
|
+
* medium control step, the height of the button beside it.
|
|
95
102
|
*/
|
|
96
103
|
.crewlet-tabs--pill {
|
|
97
104
|
--crewlet-tabs-pill-inset: 2px;
|
|
98
105
|
|
|
99
106
|
gap: var(--crewlet-tabs-pill-inset);
|
|
100
107
|
padding: var(--crewlet-tabs-pill-inset);
|
|
101
|
-
background: var(--color-surface-
|
|
108
|
+
background: var(--color-surface-elevated);
|
|
109
|
+
border: 1px solid var(--color-border-default);
|
|
102
110
|
border-radius: var(--radius-md);
|
|
103
111
|
width: fit-content;
|
|
104
112
|
}
|
|
@@ -186,19 +194,22 @@
|
|
|
186
194
|
|
|
187
195
|
/*
|
|
188
196
|
* A CHIP STANDS SHORTER THAN THE CONTROL IT SITS BESIDE, and it is the row
|
|
189
|
-
* that has to match: the well adds its inset above and below
|
|
190
|
-
* chip at a full control step makes the whole segmented row
|
|
191
|
-
* button next to it. Six pixels off the md step
|
|
192
|
-
*
|
|
197
|
+
* that has to match: the well adds its boundary and its inset above and below
|
|
198
|
+
* every chip, so a chip at a full control step makes the whole segmented row
|
|
199
|
+
* taller than the button next to it. Six pixels off the md step is exactly
|
|
200
|
+
* that boundary and inset, and it leaves the design's 24px chip in a 30px row.
|
|
193
201
|
*
|
|
194
|
-
* AND THE FLOOR IS TAKEN AGAIN AFTER THE SUBTRACTION.
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
202
|
+
* AND THE FLOOR IS TAKEN AGAIN AFTER THE SUBTRACTION. Subtracting from a step
|
|
203
|
+
* subtracts from its floor too: at compact density
|
|
204
|
+
* `calc(var(--size-control-md) - 6px)` is 18.6px, under the target a finger
|
|
205
|
+
* can hit. max() against --size-target-min holds every density at 24px or
|
|
206
|
+
* more, and at density 1 the two agree.
|
|
199
207
|
*
|
|
200
|
-
* The corner is
|
|
201
|
-
*
|
|
208
|
+
* The corner is the small radius, the design's: the well's 8px less its 1px
|
|
209
|
+
* boundary and 2px inset is 5px, and a chip a pixel rounder than that
|
|
210
|
+
* concentric curve is what reads as a chip sitting IN the well rather than a
|
|
211
|
+
* second well inside it. The side pad is the design's 10px, two steps and a
|
|
212
|
+
* half.
|
|
202
213
|
*
|
|
203
214
|
* AND THE CONTENT IS CENTRED IN THE CHIP. It was aligned to the start, for a
|
|
204
215
|
* chip stretched on a grid track, which is a case the pill chrome's own
|
|
@@ -212,8 +223,9 @@
|
|
|
212
223
|
*/
|
|
213
224
|
.crewlet-tabs--pill .crewlet-tabs__tab {
|
|
214
225
|
min-height: max(var(--size-target-min), calc(var(--size-control-md) - 6px));
|
|
215
|
-
padding: 0 var(--spacing-
|
|
216
|
-
border-radius: var(--radius-
|
|
226
|
+
padding: 0 calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
227
|
+
border-radius: var(--radius-sm);
|
|
228
|
+
color: var(--color-text-secondary);
|
|
217
229
|
font-size: var(--font-size-xs);
|
|
218
230
|
}
|
|
219
231
|
|
|
@@ -221,12 +233,12 @@
|
|
|
221
233
|
* THE SMALL CHIP IS THE QUIET ONE. It is the register the rail's foot wears,
|
|
222
234
|
* where a theme row and a density row sit beside a status pill and are read
|
|
223
235
|
* past rather than read, so its side pad is the scale's first step rather
|
|
224
|
-
* than
|
|
236
|
+
* than two and a half and its glyph is the step under the label register's.
|
|
225
237
|
*
|
|
226
|
-
* The height does not follow:
|
|
227
|
-
*
|
|
228
|
-
* finger misses. The whole reduction comes out of the width, where
|
|
229
|
-
* spent, and the floor
|
|
238
|
+
* The height does not follow: the medium chip is already exactly
|
|
239
|
+
* --size-target-min at the reader's default density, so a shorter one would be
|
|
240
|
+
* a target a finger misses. The whole reduction comes out of the width, where
|
|
241
|
+
* the pad is spent, and the floor catches what the subtraction leaves.
|
|
230
242
|
*/
|
|
231
243
|
.crewlet-tabs--pill.crewlet-tabs--sm .crewlet-tabs__tab {
|
|
232
244
|
min-height: max(var(--size-target-min), calc(var(--size-control-sm) - 4px));
|
|
@@ -253,9 +265,17 @@
|
|
|
253
265
|
color: var(--color-text-primary);
|
|
254
266
|
}
|
|
255
267
|
|
|
268
|
+
/*
|
|
269
|
+
* The chip that is on: the CARD's ground and the primary ink, lifted by the
|
|
270
|
+
* default hairline drawn round it and the smallest shadow under it, the
|
|
271
|
+
* design's chip. The hairline is the half that finds it: on a dark palette a
|
|
272
|
+
* shadow over a dark well is nearly invisible. Both are one shadow list, and
|
|
273
|
+
* neither token in it is ever `none`, which would drop the whole list.
|
|
274
|
+
*/
|
|
256
275
|
.crewlet-tabs--pill .crewlet-tabs__tab.is-active {
|
|
257
276
|
background: var(--color-surface-subtle);
|
|
258
|
-
|
|
277
|
+
color: var(--color-text-primary);
|
|
278
|
+
box-shadow: var(--shadow-xs), 0 0 0 1px var(--color-border-default);
|
|
259
279
|
}
|
|
260
280
|
|
|
261
281
|
/*
|
package/dist/Tag/Tag.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import type { HTMLAttributes, MouseEvent, ReactNode } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Tone } from '../utils/tone.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* What a tag's colour says: a state, the accent, or nothing at all.
|
|
5
|
+
*
|
|
6
|
+
* The same pill draws "failed" on the Model screen and "execute" on the turn
|
|
7
|
+
* beside it, and only the first is a state. The second is a CATEGORY, a phase,
|
|
8
|
+
* and a category is the neutral tag with its word: a hue per phase was a second
|
|
9
|
+
* colour vocabulary that said nothing the word did not, spent from the hues the
|
|
10
|
+
* states are held apart in.
|
|
8
11
|
*/
|
|
9
|
-
export type TagVariant = Tone
|
|
12
|
+
export type TagVariant = Tone;
|
|
10
13
|
/**
|
|
11
|
-
* How much room the pill takes. The
|
|
12
|
-
* variation on tone, so these are three heights of that
|
|
13
|
-
* three different marks: `sm` is the
|
|
14
|
-
*
|
|
14
|
+
* How much room the pill takes. The design draws ONE pill and spends its
|
|
15
|
+
* variation on tone, so these are three heights of that pill rather than
|
|
16
|
+
* three different marks: `sm` is the design's 22px pill and the default, `xs`
|
|
17
|
+
* the 18px count pill for a packed row, `md` a small control's height for a
|
|
15
18
|
* toolbar.
|
|
16
19
|
*/
|
|
17
20
|
export type TagSize = 'xs' | 'sm' | 'md';
|
|
@@ -26,7 +29,7 @@ export type TagSize = 'xs' | 'sm' | 'md';
|
|
|
26
29
|
export type InteractiveTagSize = Exclude<TagSize, 'xs'>;
|
|
27
30
|
export type TagAppearance = 'soft' | 'outline';
|
|
28
31
|
interface TagLook {
|
|
29
|
-
/** The state
|
|
32
|
+
/** The state this tag names. Neutral by default, which is what a category such as a phase takes. */
|
|
30
33
|
variant?: TagVariant | undefined;
|
|
31
34
|
/** A tinted fill, or a boundary over the surface beneath. */
|
|
32
35
|
appearance?: TagAppearance | undefined;
|
|
@@ -79,7 +82,7 @@ export interface InteractiveTagProps extends TagLook, Omit<HTMLAttributes<HTMLEl
|
|
|
79
82
|
}
|
|
80
83
|
export type TagProps = StaticTagProps | InteractiveTagProps;
|
|
81
84
|
/**
|
|
82
|
-
* A small pill that names a state, a
|
|
85
|
+
* A small pill that names a state, a category or a value.
|
|
83
86
|
*
|
|
84
87
|
* COLOUR IS NEVER THE ONLY CARRIER. Every tag renders its label, in every
|
|
85
88
|
* variant, so a reader who cannot separate the warning hue from the danger one
|
|
@@ -90,18 +93,22 @@ export type TagProps = StaticTagProps | InteractiveTagProps;
|
|
|
90
93
|
* under the tone's `ink`, never the solid fill with a label on it: the fill
|
|
91
94
|
* step is measured as a MARK, at 3:1, and putting text on it would put that
|
|
92
95
|
* text under the 4.5:1 it has to clear. 0.2.0 spelled five dark-theme literals
|
|
93
|
-
* here instead, which measured between 1.14:1 and 1.58:1 on a light page.
|
|
96
|
+
* here instead, which measured between 1.14:1 and 1.58:1 on a light page. The
|
|
97
|
+
* neutral tag, which names no state, is the raised rung under the secondary
|
|
98
|
+
* ink, inside the strong hairline: its fill is a surface, and on a raised
|
|
99
|
+
* ground a borderless one would draw nothing.
|
|
94
100
|
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
101
|
+
* IT IS A PILL, the approved design's: 22px with round ends at the caption
|
|
102
|
+
* step. Its line box is fixed. The height comes from the size step rather
|
|
103
|
+
* than from the content, so a cell that holds a tag on one row and nothing on
|
|
104
|
+
* the next is the same height on both and a table does not ripple as states
|
|
105
|
+
* arrive.
|
|
98
106
|
*
|
|
99
|
-
* A TAG THAT ACTS IS
|
|
100
|
-
* one place this pill departs from the
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* one set.
|
|
107
|
+
* A TAG THAT ACTS IS TWO PIXELS TALLER THAN ONE THAT LABELS, and that is the
|
|
108
|
+
* one place this pill departs from the design. The design draws its pill at
|
|
109
|
+
* 22px whatever it does, which is a pointer target under the 24px WCAG 2.2
|
|
110
|
+
* accepts; everything else about the two, the tint, the ink, the radius, the
|
|
111
|
+
* type and the padding, is identical, so a row still reads as one set.
|
|
105
112
|
*/
|
|
106
113
|
export declare function Tag(props: TagProps): import("react").JSX.Element;
|
|
107
114
|
export {};
|
package/dist/Tag/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Tag } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { Tag } from '../chunk-74KMX7YH.js';
|
|
2
|
+
import '../chunk-WIATRXEJ.js';
|
|
3
3
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* The tag: a small pill naming a state, a
|
|
2
|
+
* The tag: a small pill naming a state, a category or a value.
|
|
3
3
|
*
|
|
4
4
|
* THREE VARIABLES CARRY EVERY VARIANT. A tag is its tone's `soft` tint under
|
|
5
5
|
* its tone's `ink`, with the `line` step as the boundary it grows when it can
|
|
@@ -19,39 +19,49 @@
|
|
|
19
19
|
|
|
20
20
|
.crewlet-tag {
|
|
21
21
|
/*
|
|
22
|
-
* THE
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* density the way every size token does.
|
|
22
|
+
* THE APPROVED DESIGN'S PILL: 22px tall with fully round ends, the caption
|
|
23
|
+
* step at the medium weight, and 9px of room inside each end, which is the
|
|
24
|
+
* step a rounded end eats before the first letter clears it.
|
|
26
25
|
*
|
|
27
26
|
* The height is a STEP and the floor is separate, because the two answer
|
|
28
|
-
* different questions. A tag that only labels takes the
|
|
29
|
-
* exactly. A tag that ACTS is a pointer target, and
|
|
30
|
-
* it takes the 24px floor as well
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
27
|
+
* different questions. A tag that only labels takes the design's geometry
|
|
28
|
+
* exactly. A tag that ACTS is a pointer target, and 22px fails WCAG 2.2, so
|
|
29
|
+
* it takes the 24px floor as well. Nothing else about the pill changes, so a
|
|
30
|
+
* row of tags still reads as one set.
|
|
31
|
+
*
|
|
32
|
+
* THE NEUTRAL PILL IS THE RAISED RUNG under the secondary ink, the design's
|
|
33
|
+
* quiet pill: a category, a count, a word that is not a state. Every other
|
|
34
|
+
* variant below is its tone's soft tint under its ink.
|
|
35
|
+
*
|
|
36
|
+
* The boundary at rest is `--crewlet-tag-edge`: transparent for a tinted
|
|
37
|
+
* pill, whose hue already separates it from any neutral ground, and the
|
|
38
|
+
* strong border step for the neutral one (see its rule below).
|
|
34
39
|
*/
|
|
35
|
-
--crewlet-tag-height: calc(
|
|
40
|
+
--crewlet-tag-height: calc(22px * var(--density, 1));
|
|
36
41
|
--crewlet-tag-floor: 0px;
|
|
37
|
-
|
|
42
|
+
/* The design's 9px inside each round end: two steps and a quarter, so it
|
|
43
|
+
follows the density with every other gap. The remove control and the
|
|
44
|
+
press half of a split pill read it too, to reach the pill's own ends. */
|
|
45
|
+
--crewlet-tag-pad: calc(var(--spacing-2) + var(--spacing-1) / 4);
|
|
46
|
+
--crewlet-tag-fill: var(--color-surface-elevated);
|
|
38
47
|
--crewlet-tag-ink: var(--color-text-secondary);
|
|
39
48
|
--crewlet-tag-line: var(--color-border-hover);
|
|
49
|
+
--crewlet-tag-edge: transparent;
|
|
40
50
|
|
|
41
51
|
display: inline-flex;
|
|
42
52
|
align-items: center;
|
|
43
|
-
|
|
53
|
+
/* The design's 6px between a dot or a glyph and the word: a step and a
|
|
54
|
+
half. */
|
|
55
|
+
gap: calc(var(--spacing-1) * 1.5);
|
|
44
56
|
height: max(var(--crewlet-tag-height), var(--crewlet-tag-floor));
|
|
45
|
-
padding: 0 var(--
|
|
46
|
-
border: 1px solid
|
|
47
|
-
border-radius: var(--radius-
|
|
57
|
+
padding: 0 var(--crewlet-tag-pad);
|
|
58
|
+
border: 1px solid var(--crewlet-tag-edge);
|
|
59
|
+
border-radius: var(--radius-pill);
|
|
48
60
|
background: var(--crewlet-tag-fill);
|
|
49
61
|
color: var(--crewlet-tag-ink);
|
|
50
62
|
font-family: var(--font-family-sans);
|
|
51
|
-
font-size: var(--font-size-
|
|
63
|
+
font-size: var(--font-size-xs);
|
|
52
64
|
font-weight: var(--font-weight-medium);
|
|
53
|
-
/* The engine tracks the badge a hundredth of an em open, which is the
|
|
54
|
-
normal step at this size: a hundredth of 11px is a tenth of a pixel. */
|
|
55
65
|
letter-spacing: var(--font-letter-spacing-normal);
|
|
56
66
|
line-height: 1;
|
|
57
67
|
/* A tag is an atomic token: its label never breaks across lines inside the
|
|
@@ -104,53 +114,54 @@
|
|
|
104
114
|
/* ── sizes ─────────────────────────────────────────────────────────────── */
|
|
105
115
|
|
|
106
116
|
/*
|
|
107
|
-
* THREE HEIGHTS OF ONE
|
|
117
|
+
* THREE HEIGHTS OF ONE PILL. The design draws a single pill and spends its
|
|
108
118
|
* variation on tone rather than on size, so the steps here differ by how much
|
|
109
|
-
* room the pill takes and not by what it is: the
|
|
110
|
-
*
|
|
119
|
+
* room the pill takes and not by what it is: the radius, the weight and the
|
|
120
|
+
* tracking are the design's at every one of them.
|
|
111
121
|
*
|
|
112
|
-
* xs is
|
|
113
|
-
*
|
|
114
|
-
*
|
|
122
|
+
* xs is the design's 18px count pill, the one a rail row carries, and is
|
|
123
|
+
* NON-INTERACTIVE for that reason: it is under the 24px target floor, and the
|
|
124
|
+
* component refuses a press at this step. It is for a mark inside a dense
|
|
125
|
+
* row, where the label is still the carrier, and it takes the micro step, the
|
|
126
|
+
* design's 10.5px at the scale's floor.
|
|
115
127
|
*
|
|
116
128
|
* EVERY STEP SCALES WITH DENSITY, which is not decoration: written as a flat
|
|
117
|
-
* 18px, this one stayed put while the
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
129
|
+
* 18px, this one stayed put while the pill above it came down with the
|
|
130
|
+
* density, so the dense mark rendered TALLER than the pill it is meant to sit
|
|
131
|
+
* inside a row of. A step that does not move with the rest of the scale is a
|
|
132
|
+
* step that overtakes one of its neighbours at some density.
|
|
121
133
|
*/
|
|
122
134
|
.crewlet-tag--xs {
|
|
123
135
|
--crewlet-tag-height: calc(18px * var(--density, 1));
|
|
124
|
-
|
|
125
|
-
gap:
|
|
136
|
+
--crewlet-tag-pad: calc(var(--spacing-1) * 1.5);
|
|
137
|
+
gap: var(--spacing-1);
|
|
138
|
+
font-size: var(--font-size-2xs);
|
|
126
139
|
}
|
|
127
140
|
|
|
128
|
-
/* The
|
|
141
|
+
/* The design's pill, and the default. */
|
|
129
142
|
.crewlet-tag--sm {
|
|
130
|
-
--crewlet-tag-height: calc(
|
|
143
|
+
--crewlet-tag-height: calc(22px * var(--density, 1));
|
|
131
144
|
}
|
|
132
145
|
|
|
133
146
|
/* The md step is a small control's own height, so a tag and a small button in
|
|
134
|
-
one toolbar sit on the same
|
|
135
|
-
a 28px pill reads as a label that lost its box. */
|
|
147
|
+
one toolbar sit on the same line. */
|
|
136
148
|
.crewlet-tag--md {
|
|
137
149
|
--crewlet-tag-height: var(--size-control-sm);
|
|
138
|
-
font-size: var(--font-size-xs);
|
|
139
150
|
}
|
|
140
151
|
|
|
141
152
|
/*
|
|
142
153
|
* A TAG THAT ACTS CLEARS 24px, at every density and every step. Last among the
|
|
143
154
|
* steps so it is the floor whichever one is drawn, and a floor rather than a
|
|
144
|
-
* height so the md step keeps its
|
|
155
|
+
* height so the md step keeps its 26px.
|
|
145
156
|
*/
|
|
146
157
|
.crewlet-tag--acts {
|
|
147
158
|
--crewlet-tag-floor: max(24px, calc(24px * var(--density, 1)));
|
|
148
159
|
}
|
|
149
160
|
|
|
150
|
-
/* One step down from the sans
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
161
|
+
/* One step down from the sans: a mono face draws larger than the sans at the
|
|
162
|
+
same size, and a machine value beside a word has to read as the same line.
|
|
163
|
+
At xs the sans is already at the bottom of the scale and the mono stays
|
|
164
|
+
beside it. */
|
|
154
165
|
.crewlet-tag--monospace .crewlet-tag__label {
|
|
155
166
|
font-family: var(--font-family-mono);
|
|
156
167
|
font-size: var(--font-size-2xs);
|
|
@@ -188,43 +199,6 @@
|
|
|
188
199
|
--crewlet-tag-line: var(--color-brand-accent-soft-strong);
|
|
189
200
|
}
|
|
190
201
|
|
|
191
|
-
/*
|
|
192
|
-
* The phase family has a soft step and no line step, because nothing else in
|
|
193
|
-
* the system needed a phase boundary. The ink is the boundary here: it is the
|
|
194
|
-
* same hue at a strength a 1px rule can be seen at, and a border is not text,
|
|
195
|
-
* so the rule that an ink step is never a BACKGROUND is untouched.
|
|
196
|
-
*
|
|
197
|
-
* A PHASE IS SET IN THE MICRO-LABEL REGISTER, uppercase and tracked open,
|
|
198
|
-
* where a state is set in the badge's own. Phase is the one categorical
|
|
199
|
-
* identity the product spends colour on outside a chart, and it is what a
|
|
200
|
-
* reader follows across four screens; the second register is what separates it
|
|
201
|
-
* at a glance from the state badge sitting beside it on the same row.
|
|
202
|
-
*/
|
|
203
|
-
.crewlet-tag--phase-onboarding,
|
|
204
|
-
.crewlet-tag--phase-execute,
|
|
205
|
-
.crewlet-tag--phase-review {
|
|
206
|
-
letter-spacing: var(--font-letter-spacing-wide);
|
|
207
|
-
text-transform: uppercase;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.crewlet-tag--phase-onboarding {
|
|
211
|
-
--crewlet-tag-fill: var(--color-phase-onboarding-soft);
|
|
212
|
-
--crewlet-tag-ink: var(--color-phase-onboarding-ink);
|
|
213
|
-
--crewlet-tag-line: var(--color-phase-onboarding-ink);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.crewlet-tag--phase-execute {
|
|
217
|
-
--crewlet-tag-fill: var(--color-phase-execute-soft);
|
|
218
|
-
--crewlet-tag-ink: var(--color-phase-execute-ink);
|
|
219
|
-
--crewlet-tag-line: var(--color-phase-execute-ink);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.crewlet-tag--phase-review {
|
|
223
|
-
--crewlet-tag-fill: var(--color-phase-review-soft);
|
|
224
|
-
--crewlet-tag-ink: var(--color-phase-review-ink);
|
|
225
|
-
--crewlet-tag-line: var(--color-phase-review-ink);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
202
|
/* ── appearance ────────────────────────────────────────────────────────── */
|
|
229
203
|
|
|
230
204
|
/*
|
|
@@ -237,6 +211,31 @@
|
|
|
237
211
|
border-color: var(--crewlet-tag-line);
|
|
238
212
|
}
|
|
239
213
|
|
|
214
|
+
/*
|
|
215
|
+
* THE NEUTRAL PILL CARRIES A BOUNDARY, because its fill IS a surface. The
|
|
216
|
+
* raised rung is also the ground of a palette's lead block, a raised card and
|
|
217
|
+
* the rail's current row, and on any of them a raised pill with a transparent
|
|
218
|
+
* boundary was the colour of what it stood on: the pill vanished and its words
|
|
219
|
+
* read as loose text with odd gaps between them.
|
|
220
|
+
*
|
|
221
|
+
* THE STRONG STEP, NOT THE DEFAULT ONE. The design's own chip is found by 1px
|
|
222
|
+
* of its line step (`.chip`), which is the default border here, and that
|
|
223
|
+
* measured under the hairline dE of 3 on five grounds a pill lands on: 2.76 on
|
|
224
|
+
* the light frame, 2.86 on a pressed row over a light card, 2.77 and 2.71 on an
|
|
225
|
+
* inset well inside a raised surface, and 2.08 on a hovered row over the dark
|
|
226
|
+
* sheet. The strong step is the design's line-2, the boundary it draws round a
|
|
227
|
+
* key cap (`.kbd`), and it clears 3 on every rung and every overlay in both
|
|
228
|
+
* themes. The suite measures all of them.
|
|
229
|
+
*
|
|
230
|
+
* The hover takes the strong step once more, because the press line a tinted
|
|
231
|
+
* pill moves to on hover IS the strong step in both themes, and a hover that
|
|
232
|
+
* lands on the resting boundary draws no hover at all.
|
|
233
|
+
*/
|
|
234
|
+
.crewlet-tag--neutral.crewlet-tag--soft {
|
|
235
|
+
--crewlet-tag-edge: var(--color-border-strong);
|
|
236
|
+
--crewlet-tag-line: var(--color-border-strong-hover);
|
|
237
|
+
}
|
|
238
|
+
|
|
240
239
|
/* The neutral outline is the engine's `.badge.outline`: the hairline step as
|
|
241
240
|
the boundary, and the tertiary ink, which is a quieter register than the
|
|
242
241
|
tinted outlines keep. It is the appearance for a value that is not a state
|
|
@@ -295,9 +294,9 @@
|
|
|
295
294
|
align-self: stretch;
|
|
296
295
|
gap: inherit;
|
|
297
296
|
min-width: 0;
|
|
298
|
-
padding: 0 var(--
|
|
297
|
+
padding: 0 var(--crewlet-tag-pad);
|
|
299
298
|
border: 0;
|
|
300
|
-
border-radius: var(--radius-
|
|
299
|
+
border-radius: var(--radius-pill) 0 0 var(--radius-pill);
|
|
301
300
|
background: transparent;
|
|
302
301
|
/* A button inherits none of these. */
|
|
303
302
|
color: inherit;
|
|
@@ -354,10 +353,10 @@
|
|
|
354
353
|
min-width: 24px;
|
|
355
354
|
margin-block-start: -1px;
|
|
356
355
|
margin-block-end: -1px;
|
|
357
|
-
margin-right: calc(var(--
|
|
356
|
+
margin-right: calc(var(--crewlet-tag-pad) * -1);
|
|
358
357
|
padding: 0 var(--spacing-1);
|
|
359
358
|
border: 0;
|
|
360
|
-
border-radius: 0 var(--radius-
|
|
359
|
+
border-radius: 0 var(--radius-pill) var(--radius-pill) 0;
|
|
361
360
|
background: transparent;
|
|
362
361
|
color: inherit;
|
|
363
362
|
cursor: pointer;
|