@crewlethq/ui 0.4.3 → 0.5.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 +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-ITNACQ2X.css → DataTable-OLHPF7D4.css} +44 -43
- package/dist/DataView/index.js +14 -14
- 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 +5 -5
- package/dist/Listbox/index.js +2 -2
- package/dist/Listbox/useListbox.d.ts +16 -0
- package/dist/Listbox/useOptionKeys.d.ts +12 -1
- package/dist/{Listbox-X2DOTSQA.css → Listbox-6WJNJQVQ.css} +60 -7
- package/dist/Menu/index.js +4 -4
- package/dist/{Menu-6DE7I66I.css → Menu-BT5PMFJI.css} +15 -0
- 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/{Select-2X77FSWR.css → Select-E24U5LBC.css} +34 -0
- 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/Table/index.js +1 -1
- package/dist/{Table-MDOLVUAW.css → Table-TGCS4C3F.css} +14 -4
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-VLICJFVB.css → Tabs-XCNPHA7B.css} +79 -27
- 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 +6 -6
- 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-GTOUGQQK.js → chunk-6MU7HNB4.js} +13 -10
- package/dist/{chunk-S2XHHEW4.js → chunk-74KMX7YH.js} +4 -4
- package/dist/{chunk-WNI2WSJF.js → chunk-7KBNFFM3.js} +1 -1
- package/dist/{chunk-DD5BBGBE.js → chunk-AUS5FNQE.js} +9 -5
- 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-XV6WRMBC.js → chunk-CQY5NTRS.js} +4 -1
- package/dist/{chunk-UOGSZKLT.js → chunk-D6EVJUGU.js} +2 -2
- package/dist/{chunk-6ZFVFA56.js → chunk-DHPUMOTX.js} +2 -2
- package/dist/{chunk-HZ5XZNPS.js → chunk-DS2C73RJ.js} +3 -3
- package/dist/{chunk-O6232G37.js → chunk-DSUY5F4E.js} +17 -5
- package/dist/{chunk-Q4ZPPART.js → chunk-EFYPAJT3.js} +3 -3
- package/dist/{chunk-WQX73TWF.js → chunk-ERVO6OUF.js} +18 -17
- package/dist/{chunk-BZYDZBAN.js → chunk-ETYEBKR4.js} +3 -3
- package/dist/{chunk-34VGEDVV.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-FBZAKNSX.js → chunk-IPVQKAHO.js} +10 -7
- package/dist/{chunk-3EYF6HKB.js → chunk-IVFJD7WY.js} +28 -9
- package/dist/{chunk-WOYYD2YR.js → chunk-JGRNTBF2.js} +11 -11
- package/dist/chunk-K3OWD7BJ.js +121 -0
- package/dist/{chunk-BJSKPEZI.js → chunk-KD4H66L6.js} +7 -20
- package/dist/{chunk-SFZOKW2G.js → chunk-KJ34ZBBI.js} +8 -3
- package/dist/{chunk-HQNHV7D6.js → chunk-LFHCXZO5.js} +6 -6
- 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-LFJ6UJTI.js → chunk-PQNILU27.js} +9 -9
- package/dist/{chunk-QNCVHRZL.js → chunk-QVAFL2LE.js} +1 -1
- package/dist/{chunk-QEUY3A5P.js → chunk-QY7UU5ZB.js} +3 -2
- 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-OFHBK7RI.js → chunk-SJQ546ID.js} +34 -14
- 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-FEFTGVMF.js → chunk-V2N3BMOT.js} +7 -2
- 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-UG46QBLT.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 +66 -62
- package/dist/index.js +66 -62
- package/dist/styles.css +2719 -799
- 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-2HQR4U4D.js +0 -143
- package/dist/chunk-ESCO4XYW.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-ZCR6YGQ4.js → chunk-PKIN4IMB.js} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import type { Tone } from '../utils/tone.js';
|
|
3
|
+
/**
|
|
4
|
+
* The state the CURRENT step is in, drawn as its chip's soft tint under its
|
|
5
|
+
* ink. `info` is the default: work under way, the design's working step. A
|
|
6
|
+
* run parked on a question is `warning`, one that stopped at this step is
|
|
7
|
+
* `danger`, and `brand` is where the reader is, for a sequence the reader is
|
|
8
|
+
* walking themselves.
|
|
9
|
+
*
|
|
10
|
+
* NOT `neutral`. The quiet chip is what every step that is not current already
|
|
11
|
+
* is, so a neutral current step would be told from its neighbours by nothing
|
|
12
|
+
* but `aria-current`, which nobody sees.
|
|
13
|
+
*/
|
|
14
|
+
export type StepperTone = Exclude<Tone, 'neutral'>;
|
|
15
|
+
/** One step of the sequence. */
|
|
16
|
+
export interface StepperStep {
|
|
17
|
+
/** What tells two steps apart, unique within the stepper: `execute`, `review`. */
|
|
18
|
+
id: string;
|
|
19
|
+
/**
|
|
20
|
+
* The step's words, and anything the step carries beside them: "Execute ·
|
|
21
|
+
* round 7 of 25", "Context 0.8s".
|
|
22
|
+
*/
|
|
23
|
+
label: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export interface StepperProps extends Omit<HTMLAttributes<HTMLOListElement>, 'children'> {
|
|
26
|
+
/** Every step, in order. */
|
|
27
|
+
steps: readonly StepperStep[];
|
|
28
|
+
/**
|
|
29
|
+
* The step under way, by its id. Every step before it is done and every
|
|
30
|
+
* step after it is still to come. `null` once EVERY step is done, which is
|
|
31
|
+
* how a finished run is drawn: a turn's history in a task's timeline reads
|
|
32
|
+
* "Execute ✓ — Review ✓" with nothing current.
|
|
33
|
+
*/
|
|
34
|
+
current: string | null;
|
|
35
|
+
/**
|
|
36
|
+
* What the sequence is, for a screen reader: "Turn progress". REQUIRED,
|
|
37
|
+
* because a list of four short words with nothing to say what they are the
|
|
38
|
+
* steps OF is a riddle to somebody who cannot see the row it stands in.
|
|
39
|
+
*/
|
|
40
|
+
label: string;
|
|
41
|
+
/** The current step's state. `info` by default. */
|
|
42
|
+
tone?: StepperTone | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* The current step's dot breathes, for a step still under way: the approved
|
|
45
|
+
* design pulses a working turn's. It is `StatusDot`'s own pulse, so it
|
|
46
|
+
* never fades the dot, never touches it, and is held still under a reduced
|
|
47
|
+
* motion preference.
|
|
48
|
+
*/
|
|
49
|
+
pulse?: boolean | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Said before a finished step's words, where the check glyph stands for a
|
|
52
|
+
* reader who sees it: "Done Context".
|
|
53
|
+
*/
|
|
54
|
+
doneLabel?: string | undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Where a sequence has got to: the phases of a turn, the stages of a run.
|
|
58
|
+
*
|
|
59
|
+
* AN ORDERED LIST, because the order IS the information: a step's position
|
|
60
|
+
* says whether it is behind the current one or ahead of it, and a list says
|
|
61
|
+
* how many there are before a reader has heard any of them. The step under
|
|
62
|
+
* way carries `aria-current="step"`, the one value ARIA gives this exact
|
|
63
|
+
* meaning, and it is on exactly one step while the sequence is running and on
|
|
64
|
+
* none once it has finished.
|
|
65
|
+
*
|
|
66
|
+
* THREE STATES, EACH DRAWN TWO WAYS, so colour is never the only carrier. A
|
|
67
|
+
* finished step is the secondary ink with a check, and says "Done" before its
|
|
68
|
+
* words to a screen reader, where the check stands for a reader who sees it.
|
|
69
|
+
* The current step is its tone's soft tint under the tone's ink with the
|
|
70
|
+
* tone's dot, and is `aria-current`. A step still to come is the tertiary ink
|
|
71
|
+
* and nothing else. The hairline round the chips, and the short rule between
|
|
72
|
+
* two of them, are the design's quiet furniture.
|
|
73
|
+
*
|
|
74
|
+
* THE TONE IS DRAWN, NEVER SPOKEN: a reader hears which step is current, not
|
|
75
|
+
* that it is in the warning hue. A current step whose state is anything but
|
|
76
|
+
* ordinary work says so in its own words ("Review · sent back").
|
|
77
|
+
*/
|
|
78
|
+
export declare function Stepper({ steps, current, label, tone, pulse, doneLabel, className, ...rest }: StepperProps): import("react").JSX.Element | null;
|
|
@@ -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/Table/index.js
CHANGED
|
@@ -29,10 +29,20 @@
|
|
|
29
29
|
.crewlet-table__container {
|
|
30
30
|
/* The overflow is a safety net for a cell that cannot wrap (a long token, a
|
|
31
31
|
hash); the fixed layout below is what keeps a table inside the width it is
|
|
32
|
-
given. A `maxHeight`
|
|
33
|
-
header needs
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
given. A `maxHeight` gives it something to scroll vertically, which is
|
|
33
|
+
what the sticky header needs and the only way a long table keeps its
|
|
34
|
+
column names.
|
|
35
|
+
|
|
36
|
+
BOTH AXES, STATED. This was `overflow-y: var(--crewlet-table-overflow-y,
|
|
37
|
+
visible)`, and the fallback was unreachable: per CSS Overflow, when one
|
|
38
|
+
axis is not `visible` the other computes to `auto`, so the unconditional
|
|
39
|
+
`overflow-x: auto` beside it made this box a scrollport in both
|
|
40
|
+
directions in every state. The variable had exactly one reachable value —
|
|
41
|
+
the `auto` Table.tsx wrote beside the max-height — so it read as a knob
|
|
42
|
+
with a default nothing could ever select. Without a max-height there is
|
|
43
|
+
simply nothing to scroll to, which is what made the difference invisible
|
|
44
|
+
rather than what made it absent. */
|
|
45
|
+
overflow: auto;
|
|
36
46
|
max-height: var(--crewlet-table-max-height, none);
|
|
37
47
|
overscroll-behavior-x: contain;
|
|
38
48
|
flex: 1;
|
package/dist/Tabs/index.js
CHANGED
|
@@ -50,7 +50,21 @@
|
|
|
50
50
|
*/
|
|
51
51
|
content: '';
|
|
52
52
|
position: absolute;
|
|
53
|
-
|
|
53
|
+
/*
|
|
54
|
+
* ON THE PADDING EDGE, NOT BELOW IT. This is an absolutely positioned child
|
|
55
|
+
* of the row, and the row is a scroll container: `overflow-x: auto` makes
|
|
56
|
+
* `overflow-y` compute to `auto` as well, so there is no axis on which it
|
|
57
|
+
* does not clip. Clipping is to the PADDING edge and the row's own 1px
|
|
58
|
+
* `border-bottom` lies outside it, so at `bottom: -1px` a 2px bar was cut in
|
|
59
|
+
* half — and the half removed was the lower one, the half meant to sit on
|
|
60
|
+
* the baseline rule and replace it. `scrollbar-width: none` above then hid
|
|
61
|
+
* the 1px vertical scrollbar that would have given the game away.
|
|
62
|
+
*
|
|
63
|
+
* `overflow: visible` is not the way out: the horizontal scrolling is the
|
|
64
|
+
* row's whole contract. The bar sits at 0 instead and paints over the row's
|
|
65
|
+
* last two pixels, which is where a reader sees it anyway.
|
|
66
|
+
*/
|
|
67
|
+
bottom: 0;
|
|
54
68
|
/*
|
|
55
69
|
* Under the LABEL, not under the tab's box: the measurement is the button,
|
|
56
70
|
* which carries the small side pad an inset focus ring needs, and a bar
|
|
@@ -70,21 +84,29 @@
|
|
|
70
84
|
|
|
71
85
|
/* ─── Pill (segmented control) ────────────────────────────────── */
|
|
72
86
|
/*
|
|
73
|
-
* A WELL WITH CHIPS IN IT, not a panel with buttons in it
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
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.
|
|
77
97
|
*
|
|
78
98
|
* The inset is 2px, which is smaller than the scale's first step on purpose:
|
|
79
|
-
* it is the gap a chip needs to read as sitting IN the well
|
|
80
|
-
*
|
|
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.
|
|
81
102
|
*/
|
|
82
103
|
.crewlet-tabs--pill {
|
|
83
104
|
--crewlet-tabs-pill-inset: 2px;
|
|
84
105
|
|
|
85
106
|
gap: var(--crewlet-tabs-pill-inset);
|
|
86
107
|
padding: var(--crewlet-tabs-pill-inset);
|
|
87
|
-
background: var(--color-surface-
|
|
108
|
+
background: var(--color-surface-elevated);
|
|
109
|
+
border: 1px solid var(--color-border-default);
|
|
88
110
|
border-radius: var(--radius-md);
|
|
89
111
|
width: fit-content;
|
|
90
112
|
}
|
|
@@ -108,6 +130,24 @@
|
|
|
108
130
|
align-items: center;
|
|
109
131
|
justify-content: center;
|
|
110
132
|
gap: var(--spacing-1);
|
|
133
|
+
/*
|
|
134
|
+
* A TAB IS NEVER SQUEEZED, which is what makes the row above it SCROLL.
|
|
135
|
+
*
|
|
136
|
+
* `.crewlet-tabs--underline` is a `width: 100%` flex row with
|
|
137
|
+
* `overflow-x: auto`, and its own comment states the contract: the row
|
|
138
|
+
* scrolls rather than overflowing the page. That behaviour came entirely
|
|
139
|
+
* from each tab's automatic minimum resolving to its `nowrap` label, which
|
|
140
|
+
* is what makes the line unable to fit — and the explicit `min-width` below
|
|
141
|
+
* REPLACES that automatic minimum with a flat 24px for every item, not just
|
|
142
|
+
* the narrow ones the floor is for. With the default `flex-shrink: 1` the
|
|
143
|
+
* tabs were squeezed toward 24px until the line fitted, the strip stopped
|
|
144
|
+
* scrolling, and the labels — `nowrap`, with `min-width: 0` and no clip —
|
|
145
|
+
* spilled out of their buttons over their neighbours.
|
|
146
|
+
*
|
|
147
|
+
* `flex: none` is what the comment above already claims: "a tab whose label
|
|
148
|
+
* is wider than the floor is untouched".
|
|
149
|
+
*/
|
|
150
|
+
flex: none;
|
|
111
151
|
/* Never under the 24px target floor, at any density. */
|
|
112
152
|
min-height: var(--size-control-sm);
|
|
113
153
|
min-width: var(--size-target-min);
|
|
@@ -154,19 +194,22 @@
|
|
|
154
194
|
|
|
155
195
|
/*
|
|
156
196
|
* A CHIP STANDS SHORTER THAN THE CONTROL IT SITS BESIDE, and it is the row
|
|
157
|
-
* that has to match: the well adds its inset above and below
|
|
158
|
-
* chip at a full control step makes the whole segmented row
|
|
159
|
-
* button next to it. Six pixels off the md step
|
|
160
|
-
*
|
|
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.
|
|
161
201
|
*
|
|
162
|
-
* AND THE FLOOR IS TAKEN AGAIN AFTER THE SUBTRACTION.
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
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.
|
|
167
207
|
*
|
|
168
|
-
* The corner is
|
|
169
|
-
*
|
|
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.
|
|
170
213
|
*
|
|
171
214
|
* AND THE CONTENT IS CENTRED IN THE CHIP. It was aligned to the start, for a
|
|
172
215
|
* chip stretched on a grid track, which is a case the pill chrome's own
|
|
@@ -180,8 +223,9 @@
|
|
|
180
223
|
*/
|
|
181
224
|
.crewlet-tabs--pill .crewlet-tabs__tab {
|
|
182
225
|
min-height: max(var(--size-target-min), calc(var(--size-control-md) - 6px));
|
|
183
|
-
padding: 0 var(--spacing-
|
|
184
|
-
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);
|
|
185
229
|
font-size: var(--font-size-xs);
|
|
186
230
|
}
|
|
187
231
|
|
|
@@ -189,12 +233,12 @@
|
|
|
189
233
|
* THE SMALL CHIP IS THE QUIET ONE. It is the register the rail's foot wears,
|
|
190
234
|
* where a theme row and a density row sit beside a status pill and are read
|
|
191
235
|
* past rather than read, so its side pad is the scale's first step rather
|
|
192
|
-
* than
|
|
236
|
+
* than two and a half and its glyph is the step under the label register's.
|
|
193
237
|
*
|
|
194
|
-
* The height does not follow:
|
|
195
|
-
*
|
|
196
|
-
* finger misses. The whole reduction comes out of the width, where
|
|
197
|
-
* 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.
|
|
198
242
|
*/
|
|
199
243
|
.crewlet-tabs--pill.crewlet-tabs--sm .crewlet-tabs__tab {
|
|
200
244
|
min-height: max(var(--size-target-min), calc(var(--size-control-sm) - 4px));
|
|
@@ -221,9 +265,17 @@
|
|
|
221
265
|
color: var(--color-text-primary);
|
|
222
266
|
}
|
|
223
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
|
+
*/
|
|
224
275
|
.crewlet-tabs--pill .crewlet-tabs__tab.is-active {
|
|
225
276
|
background: var(--color-surface-subtle);
|
|
226
|
-
|
|
277
|
+
color: var(--color-text-primary);
|
|
278
|
+
box-shadow: var(--shadow-xs), 0 0 0 1px var(--color-border-default);
|
|
227
279
|
}
|
|
228
280
|
|
|
229
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';
|